kepano/knap

Knap CLI を使ってテンプレートと構造化データから Markdown をレンダリングします。ユーザーが Knap テンプレートの適用、JSON や CSV データのノート化、Markdown ファイルの一括生成、Defuddle 出力の整形を依頼したときに使用します。

knap とは?

Knap は、変数、フィルタ、制御ロジックを備えた Markdown テンプレートエンジンです。Node.js 20 以降が必要で、`npm install -g knap` または `npx knap` でインストールできます。JSON や CSV のデータをテンプレートに流し込んで Markdown ファイルを生成でき、`knap render` コマンドで単一ファイルのレンダリング、`knap batch` で複数ファイルの一括生成が可能です。Defuddle と組み合わせて Web ページを Markdown ノートに変換するパイプラインも簡単に構築できます。テンプレート内では `{{ variable }}` で値の埋め込み、`|` でフィルタ適用、`{% ... %}` で条件分岐やループなどの制御を行います。CLI のオフラインリファレンス (`knap help syntax` など) も充実しており、学習しやすい設計です。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/kepano/obsidian-skills/tree/main/skills/knap

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

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

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

ドキュメント

knap は何をしますか?

Knap CLI を使用して、変数、フィルタ、ロジックを備えた Markdown テンプレートをレンダリングします。

インストールされていない場合: npm install -g knap(Node.js 20 以降が必要)。または npx knap を使用します。

利用可能なコマンドとオプションは knap --help を実行してください。CLI のオフラインリファレンスを通じて言語を学べます:

knap help syntax
knap help filters
knap help filter date
knap help tags
knap help tag for

一覧から名前を見つけ、個別のヘルプで構文、パラメータ、期待される出力例を確認してください。

使用方法

JSON 変数でテンプレートをレンダリング:

knap render template.md --data article.json -o note.md

テンプレートとデータをインラインで指定:

knap render -t '# {{ title | trim }}' --data-json '{"title":"Hello"}'

変数を上書きするか、JSON データをパイプ:

knap render template.md --data article.json --set 'title=Custom title'
cat article.json | knap render template.md --data -

データは JSON オブジェクトである必要があります。そのプロパティがテンプレート変数になります。--set はリテラルなトップレベルのキーを文字列で上書きします。ネストされたオブジェクト、配列、数値、真偽値には JSON を使用してください。

テンプレートソース(ファイル、-t、または標準入力)とデータソース(--data または --data-json)はそれぞれ 1 つだけ選択してください。標準入力を読み取れる入力は 1 つだけです。テンプレートファイルまたは -t が指定されていない場合、Knap は標準入力からテンプレートを読み取ります。

出力はデフォルトで標準出力です。-o は親ディレクトリを作成し、レンダリングが成功した後に出力先を上書きします。エラーはステータス 1 で終了し、診断情報は標準エラー出力に出力されます。成功した出力に警告が伴う場合もあります。

テンプレート

値には {{ variable }}、フィルタには |、ロジックには {% ... %} を使用します。たとえば、これを template.md として保存します:

---
{{ title | yaml_property:"title" }}
{{ tags | yaml_property:"tags" }}
---
# {{ title | trim }}
{% if author %}
By {{ author }}
{% endif %}

{{ content }}

yaml_property を使用すると、frontmatter プロパティが正しく引用符とインデントで出力されます。CLI には標準フィルタが含まれていますが、Web Clipper のブラウザ変数、セレクタ、プロンプト、DOM 依存の HTML フィルタは提供されません。JSON を通じて変数を提供してください。

レンダリング前にテンプレートをチェック:

knap validate template.md

バリデーションは、構文、フィルタ名、静的なフィルタ引数をチェックしますが、データやファイル出力は行いません。変数の存在、実行時の値、動的な引数はチェックしません。実行時の動作を確認するには実際のデータでレンダリングしてください。診断情報は標準エラー出力に出力され、関連するヘルプコマンドも含まれます。

Defuddle パイプライン

Web ページを Markdown コンテンツ付きの JSON として抽出し、ノートにレンダリング:

defuddle parse https://example.com/article --md --json \
  | knap render template.md --data - -o note.md

Defuddle の JSON プロパティ(title、content など)はそのままテンプレート変数になります。

一括レンダリング

CSV の各行、JSON 配列の各オブジェクト、またはフォルダ内の各 JSON ファイルごとに 1 つのファイルを作成:

knap batch template.md --data articles.csv --output-dir notes \
  --filename '{{ title | safe_name }}.md'

配列の場合は --data articles.json、JSON オブジェクトのフォルダの場合は --data ./articles を使用します。CSV のヘッダーが変数名になり、値は文字列のまま保持されます。パイプで渡されたデータはデフォルトで JSON として扱われます。パイプで CSV を渡す場合は --format csv を追加してください。

--dry-run を使用すると、ファイルを書き込まずにバリデーションと出力パスの一覧表示を行えます。既存のファイルがある場合は --overwrite が必要です(ドライラン中も同様です)。バッチ内で重複する出力名は、--overwrite が指定されていてもエラーになります。

ファイル名テンプレートは、ディレクトリなしの単一のファイル名と拡張子を生成する必要があります。データ由来の名前には safe_name を使用してください。--filename が指定されていない場合、Knap は JSON のベース名を保持するか、CSV の行や配列の項目を 1.md、2.md のように番号付けします。

Individual skills in this repo

This repo contains 5 individual skills — each has its own dedicated page.

kepano/defuddle

Extract clean markdown content from web pages using Defuddle CLI, removing clutter and navigation to save tokens. Use instead of WebFetch when the user provides a URL to read or analyze, for online documentation, articles, blog posts, or any standard web page. Do NOT use for URLs ending in .md — those are already markdown, use WebFetch directly.

kepano/json-canvas

Create and edit JSON Canvas files (.canvas) with nodes, edges, groups, and connections. Use when working with .canvas files, creating visual canvases, mind maps, flowcharts, or when the user mentions Canvas files in Obsidian.

kepano/obsidian-bases

Create and edit Obsidian Bases (.base files) with views, filters, formulas, and summaries. Use when working with .base files, creating database-like views of notes, or when the user mentions Bases, table views, card views, filters, or formulas in Obsidian.

kepano/obsidian-cli

Interact with Obsidian vaults using the Obsidian CLI to read, create, search, and manage notes, tasks, properties, and more. Also supports plugin and theme development with commands to reload plugins, run JavaScript, capture errors, take screenshots, and inspect the DOM. Use when the user asks to interact with their Obsidian vault, manage notes, search vault content, perform vault operations from the command line, or develop and debug Obsidian plugins and themes.

kepano/obsidian-markdown

Create and edit Obsidian Flavored Markdown with wikilinks, embeds, callouts, properties, and other Obsidian-specific syntax. Use when working with .md files in Obsidian, or when the user mentions wikilinks, callouts, frontmatter, tags, embeds, or Obsidian notes.

関連スキル