コンテンツ制作 · kepano/obsidian-skills

obsidian-skills

Obsidian Flavored Markdown を作成・編集します。wikilink、埋め込み、callout、プロパティ、その他の Obsidian 固有の構文に対応します。Obsidian 内で .md ファイルを操作する場合や、ユーザーが wikilink、callout、フロントマター、タグ、埋め込み、Obsidian ノートに言及した際に使用します。

L4 高権限 · 段階的認可と監査V1 コミット固定コマンド実行ネットワーク通信ファイル書き込みDual-pass Audit
Author kepanoGitHub kepano/obsidian-skills ↗Stars 48365License MIT(仓库根 LICENSE;GitHub API spdx_id=MIT;.claude-plugin/plugin.json 内 "license": "MIT")Commit 8ccef29ae8
管理レベルは Skill の能力と推奨統制措置を示すものであり、品質や安全性の認証、利用可否の判定ではありません。使用の可否はユーザーおよび管理者が決定します。Agent 環境によって制約が異なるため、自動保護を仮定しないでください。第三者製 Skill の著作権は原著作者に帰属し、利用リスクは利用者が負います。

1仕組みと動作原理

単一の SKILL.md ではなく、Obsidian の媒体タイプごとに役割分担された 6 つの並行 skill のコレクションです。3 つのオープン形式(Markdown、Bases、Canvas)に各 1 つ、vault 操作、ウェブ抽出、テンプレートレンダリングに各 1 つが割り当てられています。

.claude-plugin/plugin.json
"description": "Create and edit Obsidian vault files including Markdown, Bases, and Canvas. Use when working with .md, .base, or .canvas files in an Obsidian vault."
リポジトリにはバージョン管理されたファイルが 13 個しかなく、全 skill を合わせても約 1.2k 行の Markdown です。スクリプトやバイナリ、references 以外のアセットは一切ありません。

実装方式として Obsidian のフォーマット仕様を SKILL.md 内にインライン展開しています。モデルが「自由な発想」でノートを書くのではなく、skill 内に示されたスキーマ、演算子表、ピットフォール説明に従って妥当なファイルを生成します。

skills/obsidian-bases/SKILL.md
Base files use the `.base` extension and contain valid YAML.
同様の手法は json-canvas(JSON Canvas Spec 1.0 のノード/エッジフィールド表をインライン化)や obsidian-markdown(wikilink/埋め込み/callout 構文をインライン化)でも見られます。

各フォーマット系 skill はワークフローの末尾に「検証」を組み込んでおり、生成して完了とするのではなく、構造や参照の整合性をモデル自身にセルフチェックさせます。

skills/json-canvas/SKILL.md
**Validate**: Confirm all IDs are unique and all edge references resolve to existing nodes
obsidian-bases の Step 5 でも同様に YAML のクォートや計算式参照をセルフチェックし、最終的に Obsidian で開いてレンダリングを確認することを求めています。

vault 操作はファイルシステムを直接変更するのではなく、公式の Obsidian CLI を介して行われます。そのため、起動中の Obsidian インスタンスに対して作用します。

skills/obsidian-cli/SKILL.md
Use the `obsidian` CLI to interact with a running Obsidian instance. Requires Obsidian to be open.
デフォルトでは「直近でフォーカスされた vault」を操作し、vault=<name> で切り替え可能です。ファイル指定は wikilink 形式の file= および正確な path= をサポートします。

CLI の引数・フラグ構文が明示的に規定されており(値の取得は k=v、裸のフラグは真偽値、複数行は \n と \t)、モデルの適当な引数組み立てによる誤操作を抑制しています。

skills/obsidian-cli/SKILL.md
**Parameters** take a value with `=`. Quote values with spaces:
同セクションでは、出力をクリップボードにコピーする `--copy`、ファイルが開かれるのを防ぐ `silent`、リスト件数を取得する `total` も規定されています。

2 つの外部単一目的 CLI をワークフローに組み込んでいます。defuddle はウェブページをクリーンな Markdown に抽出し、knap はテンプレートを使って JSON/CSV をノートに一括レンダリングし、両者をパイプラインで連携できます。

skills/knap/SKILL.md
defuddle parse https://example.com/article --md --json \ | knap render template.md --data - -o note.md
knap の発見可能性設計は特筆に値します。構文のすべてをプロンプトに詰め込むのではなく、エージェントが `knap help syntax` や `knap help filters` などのオフラインヘルプを使ってオンデマンドで取得できるようにしています。

書き込み系操作には明示的な「上書きには承認が必要」という規約があり、既存ノートのサイレントな破損を防ぎます。

skills/knap/SKILL.md
Existing files require `--overwrite`, including during a dry run.
同セクションには、ファイル書き込みを行わず出力パスのみを一覧表示する `--dry-run` や、一括処理時の重複ファイル名をエラーとする扱い(--overwrite が指定されていても適用)も含まれます。

配布形態はクロスホスト対応のプラグイン/スキルパッケージです。README では Claude Code(/plugin marketplace)、npx skills、Codex(~/.codex/skills)、OpenCode(~/.opencode/skills)の 4 つの配置パスを案内し、skills/ のみではなくリポジトリ全体のクローンを推奨しています。

README.md
Do not copy only the inner `skills/` folder — clone the full repo so the directory structure is `~/.opencode/skills/obsidian-skills/skills/<skill-name>/SKILL.md`.
Claude Code 環境での推奨手法は、本リポジトリの内容を vault ルートディレクトリの /.claude に配置し、ノート保管庫内で skill をその場ですぐ利用できるようにすることです。

2コア機能

01Obsidian Flavored Markdown の執筆:wikilink、埋め込み、callout、プロパティ/フロントマター、ブロック ID
02Bases(.base)ファイル:グローバル/ビューレベルの filters(and/or/not 再帰オブジェクト)、formulas、summaries、table/cards/list/map ビュー、および order/groupBy/limit
03JSON Canvas(.canvas)ファイル:ノード(text/file/link/group)、エッジ(fromNode/toNode/fromSide/label)、ID の一意性および z-index セマンティクス
04Vault の日常操作:読み取り/新規作成/追記/検索/デイリーノート/プロパティ/タスク/タグ/バックリンク、かつファイルを開かずに書き込み可能(silent)
05プラグインおよびテーマ開発ループ:reload → エラー確認 → スクリーンショット/DOM 検査 → コンソール検査
06ウェブ本文のクリーンな Markdown 抽出(ナビゲーション/広告を排除してトークンを節約)、プロパティによる title/description/domain の個別取得に対応
07テンプレートレンダリングと一括生成:JSON/CSV/フォルダ → 1 ファイル 1 ノート、ファイル名テンプレート + パス問題を防止する safe_name
08フォーマットのピットフォール警告:YAML クォート、JSON 文字列の改行(\n vs \\n)、ID の競合、エッジの未解決参照

3外部依存関係

KindDependency / Endpoint
cliobsidian(官方 Obsidian CLI,需本机 Obsidian 处于运行状态)
clidefuddle(npm 全局 CLI,网页正文抽取)
cliknap(npm 全局 CLI,要求 Node.js 20+,模板渲染/批量生成)
network任意用户给定 URL(defuddle parse 会实际抓取该网页)
networkObsidian 官方文档站(SKILL.md 中作为『最新命令清单』的指针,非运行时抓取)
networkJSON Canvas 规范与仓库(文档引用)

4推奨統制措置と判定根拠

安全運用のための推奨統制措置
Agent 向け
段階的・都度認可、サンドボックス推奨
管理者向け
承認フロー、ロールバック可能、全履歴監査
判定根拠(ファイルパスと抜粋)
  • scripts/: ローカルスクリプトまたはコマンドの実行: リポジトリ内に実行可能アセットはありません(管理下の 13 ファイルに .sh/.py/.js/.mjs は含まれません)。実行時に呼び出されるのは外部 CLI です: obsidian / defuddle
  • 网络端点: 外部ネットワークアクセスの宣言: defuddle parse <url>: ユーザーが指定した任意のウェブページを取得して本文を抽出します(本 skill 本来の用途であり、送信先=ユーザーが提供した URL)。
  • 本地工作目录: ファイルの読み書きと成果物の出力: obsidian create / append / property:set / daily:append により対象 vault のノートを直接書き換えます(silent 実行に対応)。
監査ノート: 判定基準:① コレクション内にスクリプトは一切なく、認証情報の読み取りもありません(env/token/keychain へのアクセスはリポジトリ全体でゼロ);② ただし、現実的かつ必要な外部ネットワーク通信が存在します。defuddle はユーザー指定の任意のウェブページを取得し(送信先は予測可能=ユーザー提供 URL)、必要に応じて npm 経由で defuddle/knap をインストールします;③ 書き込み対象はユーザー自身の vault ですが(create/append/property:set/batch -o)、タスク本来の目的であり、--dry-run や --overwrite といった明示的なガードが設けられています;④ 最も権限の高い obsidian eval / dev:* は公式 CLI でドキュメント化されている開発用コマンドであり、ユーザー起点の操作であって本 skill による不正なバイパスではありません。留意点:defuddle で取得したウェブページ本文は信頼できない入力となるため、直接レンダリングしたり保管庫へ反映する前に目視で確認することを推奨します。また、obsidian CLI はローカルで実行中の vault のみに対して作用するため、使用前に対象の vault が正しく選択されているか確認してください。

5二重目の独立検証

  • [ok] skill.path 定位(任务表标『待定位』);合集条目指向哪个具体 skill — 本条目展示名『Obsidian Skills』对应的是 6 个 skill 的合集,仓库根无集合级 SKILL.md。skill.path 现指向其中的代表 skill:skills/obsidian-markdown —— 它是 README 技能表首项、覆盖面最广(Obsidian Flavored Markdown,含 wikilinks/embeds/callouts/properties),也是『Claude Skills for Obsidian 笔记与知识管理』这一展示描述的最直接载体。其余 5 个并列 skill 为:skills/obsidian-bases(.base)、skills/json-canvas(.canvas)、skills/obsidian-cli(官方 CLI)、skills/defuddle(网页正文抽取)、skills/knap(模板渲染/批量生成);本 JSON 的 capabilities 与 internal_assets 覆盖的是全部 6 个(逐条 evidence 均指向对应子目录),analysis 亦按合集口径书写。
  • [discrepancy] 官方 description 取哪一份(集合无单一 frontmatter description) — 本条目代表的是一个 6-skill 集合,仓库内不存在『集合级 frontmatter description』。meta.official_desc 因此采用 .claude-plugin/plugin.json 的 description 原文(对集合范围的官方表述),并在字段内注明口径来源与『子 skill description 见别处』。6 个子 skill 的 frontmatter description 各自原文已逐条取证(例如 knap: 'Render Markdown templates from structured data using Knap CLI...'、defuddle: 'Extract clean markdown content from web pages using Defuddle CLI...'),未被改写或合并。
  • [discrepancy] official_desc 取哪一份(合集无集合级 frontmatter description) — 合集在仓库根没有集合级 SKILL.md/frontmatter description(6 个 skill 各有自己的 description)。本条目 official_desc 采用代表 skill skills/obsidian-markdown 的 frontmatter description 逐字原文(与 skill.path 指向的具体 skill 一致,满足『official_desc = SKILL.md frontmatter 原文』的取证规则);集合级口径(.claude-plugin/plugin.json 的 'Create and edit Obsidian vault files including Markdown, Bases, and Canvas. Use when working with .md, .base, or .canvas files in an Obsidian vault.')已逐字记入 internal_assets 的 plugin.json 条目说明,不丢失信息。
  • [ok] 『零脚本』结论的反例搜索 — 13 个受控文件的后缀全为 .md/.json;无 .sh/.py/.js/.mjs/.ts;仓库无 .github(无 CI 引入的第三方 action)。所有可执行动作均来自外部 CLI(obsidian/defuddle/knap),它们的代码不在本仓,本仓无法审。
  • [ok] 『无凭证读取』是否漏网 — 对 api_key/API_KEY/token/secret/.env/os.environ/process.env/keychain 全仓扫描零命中。obsidian CLI 依赖的是本机 Obsidian 登录/本地会话,SKILL.md 未要求读取任何 key 或 cookie。
  • [ok] 网络外发清单是否有遗漏 — 出现的 http(s) 串共 3 类:① help.obsidian.md(文档指针,SKILL.md 里作为『命令清单永远最新』的说明而非抓取指令);② jsoncanvas.org / github.com/obsidianmd/jsoncanvas(规范出处);③ defuddle 示例中的 https://example.com/article 与 knap 示例(示例数据 URL)。真正的运行时抓取只有 defuddle parse <用户 URL> 一条。
  • [ok] obsidian eval 的定级是否过轻 — 重新核对:`obsidian eval code="app.vault.getFiles().length"` 确为 SKILL.md 中的示例,属官方 CLI 文档化子命令;本集合既不自行注入代码也不隐藏该能力,且其作用域是本机运行中的 Obsidian(用户自己的应用)。按六档范式,red 针对『安全降级/反反爬/任意代码执行面』的自造绕过;此处是官方 CLI 功能的常规使用,故维持 yellow 并在 scripts_executed 中显式点名,让读者知情。
  • [ok] 写入门禁(--dry-run / --overwrite)是真实契约还是文档口号 — knap SKILL.md 原文明确 'Use `--dry-run` to validate and list output paths without writing files. Existing files require `--overwrite`, including during a dry run.' 与 'Duplicate output names within a batch are errors even with `--overwrite`.';`-o` 的行为也写明 '`-o` creates parent directories and overwrites the destination after rendering succeeds'。均为外部 CLI 的行为描述,本仓无代码可验,属『依赖第三方 CLI 实现』。

6結論

  • 公式の原作者によるメンテナンスであり、フォーマットや CLI 規約との同期精度が極めて高い
  • オープン形式の仕様をインライン化しているため、「Obsidian っぽい」ファイルではなく仕様に準拠した正当なファイルを生成
  • フォーマットのピットフォールを明示的に記載(改行エスケープ、YAML クォート、ID 競合、エッジの未解決、計算式参照)
  • 書き込み時の安全制御とプレビュー:dry-run、明示的な --overwrite、一括処理時の重複ファイル名エラー
  • ツールの境界が明確で外部送信が予測可能:ユーザーが指定した URL のみを取得し、.md リンクは明示的に除外
  • 最適な用途: 推奨対象:Obsidian をメインのノートシステムとして利用しているユーザー(ローカルに vault があり、保管庫内に直接 skill を配置するのが最もスムーズ)、ウェブページや JSON/CSV を構造化ノートへ一括変換する知識管理ワークフロー、およびリロード・エラー確認・スクショ撮影の検証ループを必要とする Obsidian プラグイン/テーマ開発者。「オープン形式の仕様をいかに skill へ落とし込むか」のリファレンスとしても適しています。
    不向きな用途: 非推奨対象:① 起動中の Obsidian インスタンスが存在しない環境(obsidian-cli および Bases/Canvas の検証が失敗します);② Obsidian を介さず、ファイルシステム上の Markdown をスクリプトで一括変更したいだけのワークフロー(一般的なファイル操作ツールの方が軽量です);③ 実行チェーン全体の厳密な監査が求められるセキュリティ要件の高い環境(主要 CLI がリポジトリ外の依存関係となります);④ グローバルな npm CLI のインストールを避けたいユーザー(defuddle/knap には npm install -g が必要です)。
    Install Agent-Ready
    ① Verified Mirror 2026-09-15
    Option A · Direct DownloadDownload obsidian-skills.tar.gz
    sha256: e2fbc06a174fb6bf…
    Option B · Copy Guide for Agent
    install.json
    Agent はこの JSON ガイドから自動的にダウンロードして検証します。
    ② Upstream GitHub
    GitHub Repo ↗
    Pinned to commit 8ccef29ae8.