Community生产力与协作github.com

kepano/knap

使用 Knap CLI 从模板和结构化数据渲染 Markdown。当用户要求应用 Knap 模板、将 JSON 或 CSV 数据转化为笔记、批量生成 Markdown 文件或格式化 Defuddle 输出为笔记时使用。

knap 是什么?

Knap 是一个强大的命令行工具,用于将结构化数据(JSON、CSV)或 Defuddle 的输出渲染为 Markdown 模板。它支持变量、过滤器和控制逻辑,使开发者和 AI 代理能够通过简单的 CLI 命令批量生成格式化的 Markdown 文件。Knap 可用于从 JSON 文件、CSV 表格或 Defuddle 解析的网页内容动态创建笔记,并且可以通过 `--data`, `--data-json`, `--set` 和管道等方式灵活提供数据。此外,Knap 支持基于 CSV 行、JSON 数组或文件夹进行批量渲染,允许用户为每个输出文件指定文件名模板。Knap 兼容 Node.js 20 及以上版本,可通过 npm 全局安装或使用 npx 运行。它非常适合希望自动化笔记生成或批量处理结构化内容的 AI 代理(如 Claude Code、Cursor、Codex),支持 CI/CD 管道和各类开发工作流。其离线文档提供了详细的语法、过滤器和标签参考,可通过 `knap help` 命令轻松访问。

兼容平台~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 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

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)。只有一个输入可以读取标准输入。如果没有模板文件或 -t,Knap 会从标准输入读取模板。

输出默认到标准输出。-o 会在渲染成功后在目标位置创建父目录并覆盖文件。错误以状态 1 退出;诊断信息输出到 stderr。警告可能伴随成功输出。

模板

使用 {{ variable }} 表示值,| 表示过滤器,{% ... %} 表示逻辑。例如,将其保存为 template.md:

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

{{ content }}

使用 yaml_property 获取完整的前言属性,以便正确引用和缩进值。CLI 包含标准过滤器,但不提供 Web Clipper 浏览器变量、选择器、提示或依赖 DOM 的 HTML 过滤器。通过 JSON 提供变量。

在渲染前检查模板:

knap validate template.md

验证检查语法、过滤器名称和静态过滤器参数,不涉及数据或文件输出。它不检查变量存在性、运行时值或动态参数;使用真实数据渲染以检查运行时行为。诊断信息输出到 stderr,并包含相关的帮助命令。

Defuddle 管道

将网页提取为包含 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 文件创建一个文件:

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

使用 --data articles.json 处理数组,或使用 --data ./articles 处理包含 JSON 对象的文件夹。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.

相关技能