用途:Knap CLI 用于把 Markdown 模板与结构化数据(JSON、CSV)结合,渲染出 Markdown 文件,适合把数据批量转成笔记。
安装与帮助:未安装时执行 npm install -g knap(需 Node.js 20 或更高版本),也可用 npx knap。运行 knap --help 查看命令与选项;离线参考可用 knap help syntax、knap help filters、knap help filter date、knap help tags、knap help tag for 等,先查列表再查单项帮助。
主要能力:模板用 {{ variable }} 取值、| 接过滤器、{% ... %} 写逻辑;yaml_property 可生成完整 frontmatter 属性并正确加引号缩进。数据必须是 JSON 对象,其属性成为模板变量;--set 可用字符串覆盖顶层字面量键,嵌套对象、数组、数字、布尔值需用 JSON。
使用方式:渲染示例为 knap render template.md --data article.json -o note.md;也可内联模板与数据:knap render -t '# {{ title | trim }}' --data-json '{"title":"Hello"}';覆盖变量:knap render template.md --data article.json --set 'title=Custom title';管道输入:cat article.json | knap render template.md --data -。模板来源(文件、-t 或 stdin)与数据来源(--data 或 --data-json)各选一个,且只能有一个输入读 stdin;无模板文件或 -t 时从 stdin 读模板。输出默认到 stdout,-o 会在渲染成功后创建父目录并覆盖目标;出错退出码为 1,诊断信息到 stderr,成功时也可能带警告。
校验与批量:knap validate template.md 检查语法、过滤器名和静态过滤器参数,不检查变量是否存在、运行时值或动态参数,需用真实数据渲染验证运行时行为。批量渲染:knap batch template.md --data articles.csv --output-dir notes --filename '{{ title | safe_name }}.md';--data 可接 JSON 数组或 JSON 文件目录,CSV 表头成为变量名且值保持字符串,管道数据默认按 JSON 解析,管道 CSV 需加 --format csv。--dry-run 只校验并列出输出路径不写文件;已存在文件需 --overwrite(dry run 时也需);批内重名输出即使加 --overwrite 也是错误。文件名模板必须生成单个带扩展名的文件名、不含目录,数据派生名用 safe_name;未指定 --filename 时保留源 JSON 基名,CSV 行与数组项按 1.md、2.md 编号。
限制:CLI 提供标准过滤器,但不提供 Web Clipper 浏览器变量、选择器、提示词或依赖 DOM 的 HTML 过滤器,变量需通过 JSON 提供。Defuddle 管线示例:defuddle parse https://example.com/article --md --json | knap render template.md --data - -o note.md,其 JSON 属性如 title、content 直接成为模板变量。其他未在资料中说明的功能、收费与平台信息暂未提供。