0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

📝 CLIでZettelkastenを管理する「Zettelkasten-cli」をGoで作ってみた🚀

Posted at

こんにちは、最近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

$GOBINPATH に追加するのを忘れずに。

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 を試してみてください! 📝🔥

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?