Carrot404/siyuan-skill

SiYuan Note CLI(siyuan)を操作してワークスペース、ノートブック、ドキュメント、ブロック、SQLクエリ、検索、エクスポート/インポート、アセット、属性、ブックマーク、タグ、履歴、参照、リポジトリスナップショット、同期、サーブ、データベース属性ビュー、テンプレート、アウトライン、システム情報を管理します。ユーザーがSiYuan、思源笔记に言及した場合、またはCLI経由でデータを照会・操作するよう求めた場合にこのスキルを使用します。

siyuan-skill とは?

このスキルは、SiYuan Note(思源笔记)のCLIツール「siyuan」を操作するためのエージェントスキルです。ワークスペース、ノートブック、ドキュメント、ブロックなどの基本的な操作に加え、SQLクエリによるデータ検索、エクスポート/インポート、アセット管理、属性設定、ブックマーク・タグ管理、履歴・リポジトリ操作、同期、サーブ、データベース属性ビュー、テンプレート、アウトライン取得、システム情報表示など、SiYuanのほぼすべての機能をCLI経由で実行できます。 特に重要なのは、破壊的操作に対する安全なワークフローです。削除や上書き、ロールバックなどの操作を行う前に、読み取り専用コマンドで影響範囲を確認し、--dry-runを実行し、ユーザーの明示的な承認を得た上で事前のリカバリスナップショットを作成し、その後で初めて実際の操作を実行します。これにより、データ損失のリスクを最小限に抑えられます。 また、ブロックツリーの概念(コンテナブロックとリーフブロックの区別)、見出し階層における--previousの正しい使い方、ネストされたリストの正しい操作方法、hPath(タイトルベースのパス)と内部パスの違い、Daily Noteの特別な扱いなど、SiYuan特有のドメイン知識を考慮したコマンド構築が求められます。 このスキルは、Claude Code、Codex、CursorなどのAIエージェントで使用することを想定しており、ユーザーの自然言語による指示をSiYuan CLIコマンドに変換して実行することで、ノート管理を自動化します。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Carrot404/skills/tree/HEAD/skills/siyuan-skill

Installed? Explore more 生産性&コラボレーション skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

SiYuan Note CLI スキル

概要

SiYuan Note は、ワークスペース、ノートブック、ドキュメント、ブロックなどを管理する CLI(siyuan)を提供します。 バイナリは PATH 上に存在する必要があります(siyuan --version で確認)。

CLI バージョン: v3.8.9。以下に示すコマンドはこのバージョンを反映しています。

注: PATH 上に siyuan が見つからない場合は、代替コマンド名として SiYuan-Kernel を試してください。

ワークフロー

すべてのユーザーリクエストに対して以下の順序に従います。

1. 利用可能なワークスペースを確認する

siyuan workspace list(-w フラグは不要)を実行し、登録済みワークスペースの一覧を取得します。 ユーザーがワークスペースを指定していない場合は、一覧を提示して選択を求めます。

siyuan workspace list
siyuan workspace info          # 現在のデフォルトワークスペースを表示

2. ワークスペースパスを確定する

ユーザーがワークスペースを選択(またはパスを直接指定)したら、ワークスペースパスを変数に保存し、以降のすべてのコマンド(workspace サブコマンドを除く)で -w 引数として使用します。

3. 要求されたコマンドを実行する

ターゲットとなるコマンドを構築し、末尾に -w <ワークスペースパス> を追加して実行します(workspace サブコマンドは除く)。 結果をパースする場合は、プログラム的な出力のために -f json を使用します。

コマンドが失敗した場合は、以下を確認します。(1)ワークスペースパスが有効か、(2)--id などの必須フラグが指定されているか、(3)インストールされている CLI バージョンにサブコマンドが存在するか。

共通パターン

ブロック/ドキュメント ID の取得

多くのコマンドでブロックまたはドキュメント ID(--id)が必要です。ID は以下の方法で取得します。

  • siyuan sql "SELECT id, content FROM blocks WHERE type='d'" -w <パス> -f json — ドキュメント ID 一覧を取得
  • siyuan document list --notebook <id> -w <パス> -f json — ノートブック内のドキュメント一覧を取得
  • siyuan search <キーワード> -w <パス> -f json — 検索して結果から ID を取得

破壊的操作 — 確認、プレビュー、承認

削除/クリーンアップ(remove, delete, clean, clear, purge)、ロールバック(history rollback, repo checkout, repo file rollback)、および置き換え/上書き操作(例:import data、既存ファイルの上書きを伴う file write、--overwrite を使用するテンプレートコマンド)は、破壊的操作として扱います。

  1. 読み取り専用コマンドを使用して、ワークスペース、対象の ID/パス、および影響範囲を確認します。子ドキュメント、関連データ、または既存のコンテンツも影響を受けるかどうかを確認し、コマンド名だけで影響範囲を推測してはいけません。
  2. 意図したコマンドをまず --dry-run で実行し、その出力を確認します。
    siyuan notebook remove --id <id> --dry-run -w <パス>
    
    ドライランが成功しても、それは影響を受ける全データがリストアップされたというユーザーの承認や証明にはなりません。ドライランが単に引数を検証したり、汎用的なプレビューを表示するだけの場合は、読み取り専用の調査によって影響範囲を確定します。ドライランが失敗した場合、または影響が確定できない場合は、処理を停止して制限事項を説明します。--dry-run を外して再実行してはいけません。
  3. ユーザーの許可や影響範囲が不明瞭な場合、またはプレビューによってリクエストを超える影響が明らかになった場合は、ワークスペース、対象、および結果を要約し、実行前に明示的な確認を求めます。ターゲットを推測したり、黙って範囲を拡大してはいけません。
  4. 影響範囲が確認され許可されたら、破壊的操作を実行する前に、対象ワークスペースに復元用スナップショットを作成します。
    siyuan repo create --memo "<破壊的操作の簡潔な説明>の前" -w <パス>
    
    スナップショットの作成が成功したことを確認します。失敗した場合は停止してエラーを報告し、破壊的操作を続行してはいけません。セッション終了時に変更後の状態のスナップショットを作成しても、この操作前の復元ポイントの代わりにはなりません。
  5. 確認された影響がユーザーのリクエストまたは明示的な確認と一致している場合にのみ、--dry-run を外して実行します。その際、ワークスペース、ターゲット、オプションは同じものを使用します。これらが変更された場合は、確認、プレビュー、および操作前のスナップショット作成を繰り返します。

JSON 出力のパース

プログラムによるパースには -f json を使用します。JSON 構造はサブコマンドによって異なります。workspace list は配列を返しますが、workspace info はオブジェクトを返します。jq などでフィルタリングする前に、まずコマンドの出力構造を確認してください。すべての結果が配列であると想定してはいけません。

ワークスペースロックエラー

コマンドが終了コード 24 で lock workspace [...] failed と報告した場合、そのワークスペースは別の SiYuan プロセス(例:デスクトップアプリ)によって既に使用されています。他のプロセスを閉じるか、別のワークスペースを対象にします。

書き込み操作後のスナップショット

会話中に、ワークスペースごとに実際のデータ変更を個別に追跡します。失敗したコマンドによって残された部分的な変更も含みます。スナップショットの作成自体は、新たなスナップショットを必要とするデータ変更とはみなしません。

タスクを終了する前、またはセッションを終了する前に、変更内容を要約し、変更があった各ワークスペースに対して、そのワークスペースのパスと独自の変更概要を使用してデータスナップショットを作成します。

siyuan repo create --memo "<このワークスペースの変更の簡潔な要約>" -w <変更があったワークスペースパス>

--memo は、作成/変更/削除された内容を簡潔に説明する必要があります(例:/Projects に 3 つのドキュメントを作成、README を更新、廃止されたノートを削除)。各ワークスペースについて成功を確認します。スナップショットが失敗した場合は、影響を受けたワークスペースとエラーを報告し、保存されたと主張してはいけません。データ変更のないワークスペースではスナップショットを作成しません。読み取り専用のセッションではスナップショットは不要です。

これらのスナップショットは変更後の状態を保持します。破壊的操作に必要な操作前の復元スナップショットの代わりにはなりません。

ドメイン概念

これらの SiYuan 固有の概念を理解することは、正しい CLI の使用に不可欠です。

ブロック — 基本単位

すべては一意の ID を持つブロックです。ドキュメントはルートとなるドキュメントブロック(タイプ d、すなわち NodeDocument)であり、その下に見出し、段落、リスト、コード、テーブルなどのコンテンツブロックがツリーを形成します。

コンテナブロック(子ブロックを保持でき、--parent として有効):ドキュメント、引用、リスト、リスト項目、スーパーブロック、コールアウト、タブ、タブ項目。 リーフブロック(子を保持できず、--parent として無効):見出し、段落、コードブロック、数式ブロック、テーブル、HTML ブロック、水平線、動画、音声、ウィジェット、iframe、属性ビュー、ブロッククエリ埋め込み。

tabs/tab-item はタブコンテナ用に導入されたブロックタイプです。search -t のタイプフィルターリストでは tabs と tabItem として表示されます。

見出し階層 — --previous を使用し、--parent は使用しない

見出し(h1~h6)はリーフブロックです。UI 上で見出しの「下」にあるように見えるブロックは、AST 上では見出しの次の兄弟であり、子ではありません。見出しの下にブロックを挿入するには、見出しの ID(または現在その下にある最後のブロックの ID)を --parent ではなく --previous に指定します。

siyuan block insert --parent <docID> --previous <headingID> --data "テキスト" -w <パス>

ネストされたリスト — list-item は直接 list-item を保持できない

リスト項目は直接別のリスト項目を含むことはできません。ネストするには、外側のリスト項目の子としてリスト(NodeList)を作成し、その内側のリストにリスト項目を追加します。リスト項目の親は常にリストでなければなりません。

hPath — 人間可読なパス

hPath は、ドキュメントツリーに表示されるタイトルベースのパスです(例:/Diary/2024/June)。ドキュメントの名前を変更すると hPath は変わりますが、ID は変わりません。

  • document list および document move:--hpath はタイトルベースのパスを受け入れます。--path は内部 ID ベースのパスを受け入れます(デフォルト:/)。これらのフラグは互換性がありません。
  • document create:--path は親ドキュメントのパスを指定します(デフォルト:/)。このコマンドには --hpath はありません。インストールされているバージョンの siyuan document create --help を確認し、list/move と同じパスフラグを共有していると想定しないでください。

block update — 置換、追加ではない

block update は1つのブロックの全内容を新しい Markdown で置き換えます。新しいブロックは作成も追加もしません。既存の内容を変更し、かつ新しい内容も追加するには、最初に block update を呼び出し、その後 block append/prepend/insert を別々に呼び出します。新しい内容のパースされたブロックタイプが既存のブロックのタイプと異なる場合に更新を拒否するには、--lock-type を指定します。

document move と block move の違い

document move は、ドキュメント全体(およびそのすべての子)をターゲットのノートブックと親パスに移動します。タイトルベースのパスには --hpath、内部パスには --path を使用します。block move は、単一のコンテンツブロックを新しい親ブロックの下に再配置します。

Daily Note — dailynote と document の使い分け

Daily Note は、ノートブックの日次ノート保存パスにある特別なドキュメントです。日記/ジャーナル/日次ノートのリクエストには、document create ではなく dailynote create を使用して今日のノートを開き、次に dailynote append/prepend で内容を追加します。

ノートブックアイコンとドキュメントアイコンの違い

attr set はドキュメントブロックのアイコンを変更します。ノートブックのアイコンは設定できません。ノートブックには notebook set-icon(特定の絵文字)または notebook random-icon(ランダムな絵文字)を使用します。

グローバルフラグ

これらのフラグはすべてのサブコマンドで使用できます。

フラグ説明
-w, --workspace <パス>ワークスペースパス(workspace を除くすべてのコマンドで必須。serve ではオプションで、デフォルトワークスペースが使用されます。)
-f, --format <table|json>出力形式(デフォルト:table)
-v, --log-level <文字列>ログレベル:off, trace, debug, info, warn, error, fatal(デフォルトは conf.json の system.logLevel)
--dry-run変更を行わずに、何が起こるかを検証して表示
--home-dir <パス>ユーザー設定のベースディレクトリ(デフォルトはシステムのユーザーホーム)

注: -w(または --workspace)を除くすべてのフラグはオプションです。オプションフラグが指定されていない場合、CLI はデフォルト値を使用します。

サブコマンドリファレンス

各コマンドの詳細なフラグと例については、references/commands.md を読み込んでください。

コマンドサブコマンド
siyuan workspacelist, info
siyuan notebooklist, create, open, close, rename, remove, set-icon, random-icon
siyuan documentlist, get/info, create, rename, move, duplicate, remove, search
siyuan blockget, children, insert, append, prepend, update, delete, move, stat, dom, kramdown, breadcrumb, batch-get, batch-kramdown
siyuan sql "<ステートメント>"(直接)
siyuan search <クエリ>(直接、フラグ付き)
siyuan exportmd, html, docx, sy, md-zip, preview, data
siyuan importmd, sy, data
siyuan dailynotecreate, append, prepend
siyuan assetunused, clean, stat, upload
siyuan attrget, set, batch-get
siyuan bookmarklist, labels, rename, remove
siyuan taglist, rename, remove
siyuan historylist, get, search, rollback, clear
siyuan refbacklinks, mentions, refresh
siyuan repolist, create, diff, checkout, tag, untag, purge, search, file
siyuan syncpull, push, status
siyuan databasesearch, get, keys, render, unused, clean, key, item
siyuan filelist, read, write, copy, rename, delete, find, grep, stat
siyuan inboxlist, get, convert
siyuan outlineget
siyuan templatesearch, get, create, save-as, render, remove
siyuan systemcurrent-time
siyuan serve(直接、フラグ付き)
siyuan completionbash, fish, powershell, zsh

注: serve はすべてのグローバルフラグに加えて、独自のフラグ(--accessAuthCode, --attach-ui, --enable-pprof, --lang, --mode, --port, --readonly, --ssl, --safe-mode, --wd)を受け入れます。-w は必須ではありません。完全なフラグ一覧については references/commands.md を参照してください。

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

関連スキル