← 文章 / AI技术
杰森的效率工坊 2小时前 · 2026-09-13 08:58:01 · 3 阅读

Obsidian +AIAgent又一个关键工具:Knap

激进拥抱智能体,CEO 发布新工具:Knap

今天 Obsidian CEO Kepano 开源了一个新项目:Knap.
一个专门把JSON/CSV/应用提供的结构化数据,按照模板转换成Markdown的领域专用模板语言(DSL)和模板引擎。

GitHub: obsidianmd/knap,Website:https://knap.md/
(Kepano的推特也有正式推文,我就不截图了。)
这是一套很小的模板语法。它最早就是 Obsidian Web Clipper 内部使用的模板系统,后来又被 Obsidian Importer 使用。现在Steph把这套能力单独抽出来,做成了一个公开、开源的独立工具。更好的被智能体/命令行使用。


Knap 到底是什么?

假设现在有这样一份数据,和一份markdown模版

{
  "title": "我的文章",
  "author": "Jason",
  "tags": ["AI", "Obsidian"]
}
# {{ title }}
作者:{{ author }}
标签:{{ tags | join:", " }}

Knap 会自动把数据填进模板,最后生成:

# 我的文章
作者:Jason
标签:AI, Obsidian

为什么特别适合 Obsidian?

所以 Knap 最核心的工作其实非常简单:数据 + 模板 → Markdown 文件。它负责把原本杂乱的数据,按照我们提前规定好的格式,稳定地生成 Markdown。

如果只是简单地把文字塞进模板,其实很多工具都能做到。Knap 比较特别的地方,是它本身就是围绕 Markdown 和 Obsidian 使用场景设计的。
例如它可以直接处理:YAML 属性、Obsidian 双链、Markdown 链接、列表、表格、Callout、文件名等。

例如把一个名字处理成双链:{{ person | wikilink }}
又比如自动生成适合 Obsidian 属性系统使用的 YAML:{{ tags | yaml_property:"tags" }}

所以它特别适合一个场景:

把外部数据批量整理成格式统一的 Obsidian 笔记。

Knap 最实用的几个使用场景

  • • 网页收藏:网页 → 提取内容 → Knap → 标准 Obsidian 笔记
  • • 批量导入资料:Knap 可以读取 JSON、CSV 等结构化数据,然后批量生成 Markdown。
  • • 自动整理研究资料:把资料整理成结构化信息,再交给 Knap 生成最终笔记。
  • • 建立统一的知识库格式:资料可能来自网页、RSS、API、数据库、AI Agent,最终都可以先转换成结构化数据,再交给 Knap。

它和 Jinja / Liquid 到底有多像?

非常像,而且是故意的。 你如果用过 Jinja、Liquid、Twig,这套语法几乎不用学习。
Steph 明确表示,Knap 的语法刻意设计得让 Twig、Liquid、Jinja、Tera 用户感到熟悉。

如何安装和使用?

Knap 是一个 Node.js 工具,要求 Node.js 20+ 版本。安装:

npm install -g knap

最基础的使用方法

准备两个文件。一个数据文件,例如保存为article.json

{
  "title": "Knap",
  "author": "Steph Ango"
}

再准备一个模板,保存为template.md

# {{ title }}

作者:{{ author }}

然后运行:

knap render template.md \
  --data article.json \
  --output note.md

最后就会生成:note.md。整个过程不需要数据库,也不需要启动什么服务器。


如何和 Obsidian 配合?

Knap 不是一个 Obsidian 插件。它的工作非常单纯:负责生成 Markdown 文件。 而 Obsidian 本身就是读取 Markdown 文件的。所以两者天然可以配合。
最简单的方式,直接让 Knap 把生成文件保存到 Obsidian库:数据 → Knap → .md 文件 → Obsidian Vault

比如提前规定:

---
title: {{ title }}
source: {{ url }}
---

# {{ title }}
{{ summary }}

以后所有资料都通过这个模板生成。这样整个 Vault 中:标题格式一致、属性字段一致、正文结构一致。

Knap + AI Agent 才是更重要的

Knap 现已进入CEO大人自己维护的kepano/obsidian-skills


可以配合:Codex、Claude Code、OpenCode 等 AI Agent。 这就出现了一个非常实用的分工方式:AI Agent 负责理解内容,Knap 负责最终格式。

比如我们让 Codex 阅读一篇文章。以前可能直接告诉它:

阅读这篇文章,按照我的 Obsidian 模板生成 Markdown

问题是,大模型生成内容本身具有一定随机性。使用 Knap 后,可以变成:文章 → AI 阅读和整理 → 结构化数据 → Knap → Markdown。AI只需要返回JSON数据,至于最后 Markdown 怎么写,由 Knap 的固定模板决定。

Knap 的技术原理

它的语法其实并不复杂。比如条件判断:

{% if author %}
作者:{{ author }}
{% endif %}

循环:

{% for tag in tags %}
- {{ tag }}
{% endfor %}

这些语法和很多成熟的模板工具非常相似。简单理解就是:模板 → Knap 理解规则 → 填入数据 → 输出 Markdown

另外一个比较重要的设计是:Knap 不会直接执行任意 JavaScript 代码。它只能执行自己规定好的模板语法和功能。这样更容易控制安全风险。


原始来源: 杰森的效率工坊

评论 (0)