ObsidianのCEOを務めるSteph Ango氏
This is Knap. It's a new language I created that turns data into Markdown. The syntax should feel familiar and comes with wonderfully pleasant features to modify and format plain text.
— kepano (@kepano) September 10, 2026
Knap is open source. Over a million people already use Knap directly or indirectly because it… pic.twitter. com/ 7GYTeGEkyk
Webページの内容をObsidianへ保存するWeb Clipperでは、テンプレートで保存する内容や形式を指定できる。Ango氏によると、Knapはこの用途から生まれており、直接・
データとテンプレートを組み合わせてMarkdownを生成
Knapには、元になるデータと、出力形式を記述したテンプレートを渡す。テンプレート内の変数へデータを埋め込み、フィルターで文字列や日付などを整形するほか、条件分岐や繰り返しで出力内容を制御する。
たとえば、タイトルを表すJSONデータとして{"title": "Knap"}を用意する。このデータとテンプレートをKnapに渡すと、Markdownの見出し# Knapが出力される。ここでは、変数titleの値を、フィルターh1で見出しに整形している。フィルターは|で連結でき、空白の除去、大文字への変換、Markdownの書式付けといった処理を順に適用できる。
Ango氏は、Twig、Liquid、Jinja、Teraなどのテンプレート言語の利用経験がある人になじみやすい構文にしたと説明している。これらの言語との違いとして、フロントマター付きのMarkdown生成に向けた豊富な組み込みフィルターと、空白の扱いに関する既定値を挙げている。
文書の先頭に日付やタグなどのメタデータを記述するフロントマターを生成する際には、値をYAML形式に整えるyamlフィルターを使える。たとえば、日付とタグをmetadataにまとめたJSONデータ{"metadata": {"date": "2026-09-10", "tags": ["news", "tools"]}}を用意する。
テンプレートでは、metadataにyamlフィルターを適用し、その前後にフロントマターの区切りを表す---を記述する。
---
{{ metadata | yaml }}
---
日付とタグがYAML形式に整形され、次のフロントマターが出力される。
---
date: "2026-09-10"
tags:
- "news"
- "tools"
---
このほか、見出しやリンク、リスト、表などを作るフィルターも備える。
JSON/CSVからの一括作成やWebページの取り込みに利用
CLIの利用にはNode.
npx knap render template.md --data article.json --output note.md
この例では、template.に記述したテンプレートへarticle.のデータを渡し、生成結果をnote.に書き出す。複数の文書を作る場合はbatchコマンドを使い、CSVの各行やJSON配列の各オブジェクトから、それぞれファイルを作成できる。
Webページからの取り込みには、HTMLから本文やメタデータを抽出するDefuddleと組み合わせる方法もある。Defuddleの抽出結果をJSONとしてパイプでKnapへ渡すと、タイトルや本文などをテンプレートに沿ってMarkdownへ整形できる。
KnapはMITライセンスのオープンソースとして公開されている。構文や出力を試すためのPlaygroundも用意され、データ、テンプレート、出力を見比べられる。