こんにちは、最近Zettelkasten(ツェッテルカステン)を使った知識管理にハマっている @kyooooonaka です!
手書きのノートやObsidianのようなGUIツールも良いのですが、
CLIで軽量かつ柔軟に管理できるツールが欲しい! と思い、
Goで 「Zettelkasten-cli (zk
)」 を開発しました 💻✨
この記事では、Zettelkasten-cli の 特徴・機能・実装のポイント を紹介します!
📌 なぜ CLI で Zettelkasten を管理したかったのか?
🟢 軽量 & 高速 → GUI不要、ターミナルから即アクセス
🟢 カスタマイズ性 → 設定次第でどんなワークフローにも適用可能
🟢 スクリプトやGit管理と相性が良い → コマンド単位で自動化できる
🟢 ObsidianやNotionに依存しない → 独自の知識管理システムを構築できる
Zettelkasten のメモは テキストベース(Markdown) なので、CLIで操作できると最強!
「じゃあ 自作してみよう!」ということで開発を開始しました。
💡 Zettelkasten-cli (zk
) の特徴
zk
は、CLI で メモ・タスク・プロジェクトを管理 できるツールです。
「知識を整理し、リンクでつなぎ、タスクと統合する」 という Zettelkasten の原則を基に設計しました。
✅ ノートの作成・編集・検索・整理(Zettelkasten の 3種類のメモに対応)
✅ タスクの管理(メモ内にタスクを作成、進捗管理)
✅ プロジェクトとの関連付け(タスクとノートをプロジェクト単位で管理)
✅ ローカル環境でシンプルに動作(fzf
との連携で快適検索)
✅ S3連携でデバイス間同期も可能
⚙️ インストール方法
1️⃣ go install
でインストール(Go 環境がある場合)
go install github.com/nakachan-ing/Zettelkasten-cli/tree/pre-release
$GOBIN
を PATH
に追加するのを忘れずに。
2️⃣ GitHub Releases からバイナリをダウンロード
Mac/Linux
wget https://github.com/nakachan-ing/Zettelkasten-cli/releases/download/v3.0.0/zk-linux
mv zk-mac /usr/local/bin/zk
chmod +x /usr/local/bin/zk
Windows (PowerShell)
Invoke-WebRequest -Uri "https://github.com/nakachan-ing/Zettelkasten-cli/releases/download/v3.0.0/zk.exe" -OutFile "C:\Program Files\zk.exe"
🚀 zk
の使い方
📝 1. ノートの作成・管理
# 一時的なメモ(Fleeting)
zk fleeting new "GoでCLIツールを作る"
# 永続的なメモ(Permanent)
zk permanent new "CLIの設計パターン"
# 文献メモ(Literature)
zk literature new "『Clean Architecture』の要点"
# 全ての Fleeting Notes を表示
zk fleeting list
# タグを指定して検索
zk fleeting list --tag programming
# 期間を指定して表示
zk permanent list --from 2024-01-01 --to 2024-12-31
# キーワード検索
zk literature list --search "マイクロサービス"
# タグで検索
zk search --tag devops
# タイトルで検索
zk search --title "CLI"
# 文脈を含めて検索
zk search --context 5 --interactive
✅ 2. タスクの管理
# ノート内にタスクを追加
zk task add 123 "GoでZettelkastenを実装する"
# タスクの一覧を取得
zk task list
# タスクのステータスを変更
zk task status 123 Done
📂 3. プロジェクトと関連付け
# プロジェクトを作成
zk project new "Go CLI Development"
# ノートをプロジェクトに追加
zk project add 123 "Go CLI Development"
🗂 4. ノートの整理
# ノートを削除(ゴミ箱へ移動)
zk delete 123
# ノートをアーカイブ
zk archive 123
# ノートを復元
zk restore 123
🔄 5. ノートの同期
# ローカルのメモと zettel.json を同期
zk sync
⚙️ zk
の設定 (config.yaml
)
デフォルトの設定ファイルは以下に配置されます。
-
Mac/Linux:
~/.config/zettelkasten-cli/config.yaml
-
Windows:
~\APPDATA\zettelkasten-cli\config.yaml
カスタマイズ例:
note_dir: ~/Zettelkasten
editor: vim
zettel_json: ~/.config/zettelkasten-cli/zettel.json
archive_dir: ~/Zettelkasten/archive
sync:
enable: true
platform: s3
bucket: zettlr
aws_profile: default
設定ファイルを開いて編集:
zk config
🔍 実装のポイント
1️⃣ fzf
を使ったノート検索
検索時に fzf
を活用することで、インタラクティブな検索を実現。
cmd := exec.Command("fzf")
cmd.Stdin = strings.NewReader(listNotes())
cmd.Stdout = os.Stdout
cmd.Run()
2️⃣ zettel.json
を利用したメモのメタデータ管理
全ノートのメタ情報を JSON に保存し、検索を高速化。
type Zettel struct {
ID string `json:"id"`
Title string `json:"title"`
Tags []string `json:"tags"`
}
🎯 まとめ
✅ CLI で Zettelkasten を管理できる「zk」を開発!
✅ ノートの作成・検索・リンク・タスク管理がすべてCLIで完結!
✅ シンプルな設定でカスタマイズ性が高い!
✅ fzf を活用した快適なノート検索!
🚀 「GUIよりもCLI派」の人におすすめ!
「試してみたい!」と思った方は、ぜひ GitHub からダウンロードしてください! 🎉
📢 参考
「CLIで知識を整理したい!」という方、ぜひ zk
を試してみてください! 📝🔥