Skip to content
cccskills
Official · ObsidianFreePublished on GitHub

knap

Turn JSON or CSV data into Markdown notes using Knap templates. Apply formatting rules and conditional sections, generate files in batches, or shape web content extracted by Defuddle into a consistent note format.

OriginalShow the original description

Render Markdown from templates and structured data using Knap CLI. Use when the user asks to apply a Knap template, turn JSON or CSV data into notes, batch-generate Markdown files, or format Defuddle output into a note.

See how to install

Good for

  • Generate Markdown notes from JSON or CSV data
  • Create multiple notes with a shared template
  • Format Defuddle output into a note
  • Validate templates and preview batch output paths

Files included (1)

  • SKILL.md3.8 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

Knap

Use Knap CLI to render Markdown templates with variables, filters, and logic.

If not installed: npm install -g knap (requires Node.js 20 or later). Alternatively, use npx knap.

Run knap --help for available commands and options. Discover the language through the CLI's offline reference:

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

Use the lists to find names, then request individual help for syntax, parameters, and examples with expected output.

Usage

Render a template with JSON variables:

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

Supply a template and data inline:

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

Override a variable or pipe JSON data:

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

Data must be a JSON object; its properties become template variables. --set overrides literal top-level keys with strings. Use JSON for nested objects, arrays, numbers, and booleans.

Choose one template source (file, -t, or stdin) and one data source (--data or --data-json). Only one input can read stdin. Without a template file or -t, Knap reads the template from stdin.

Output defaults to stdout. -o creates parent directories and overwrites the destination after rendering succeeds. Errors exit with status 1; diagnostics go to stderr. Warnings can accompany successful output.

Templates

Use {{ variable }} for values, | for filters, and {% ... %} for logic. For example, save this as template.md:

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

{{ content }}

Use yaml_property for complete frontmatter properties so values are quoted and indented correctly. The CLI includes standard filters, but does not supply Web Clipper browser variables, selectors, prompts, or DOM-dependent HTML filters. Supply variables through JSON.

Check a template before rendering:

knap validate template.md

Validation checks syntax, filter names, and static filter arguments without data or file output. It does not check variable existence, runtime values, or dynamic arguments; render with real data to check runtime behavior. Diagnostics go to stderr and include relevant help commands.

Defuddle pipeline

Extract a web page as JSON with Markdown content, then render it into a note:

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

Defuddle's JSON properties, such as title and content, become template variables directly.

Batch rendering

Create one file per CSV row, JSON array object, or JSON file in a folder:

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

Use --data articles.json for an array or --data ./articles for a folder of JSON objects. CSV headers become variable names and values remain strings. Piped data defaults to JSON; add --format csv for piped CSV.

Use --dry-run to validate and list output paths without writing files. Existing files require --overwrite, including during a dry run. Duplicate output names within a batch are errors even with --overwrite.

Filename templates must produce a single filename with its extension, without directories. Use safe_name for data-derived names. Without --filename, Knap preserves source JSON basenames or numbers CSV rows and array items as 1.md, 2.md, and so on.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

defuddle

Official · ObsidianFreeSummary

Extract readable content from web pages with Defuddle CLI, removing navigation, ads, and other clutter. Save the result as Markdown, or retrieve individual details such as the page title, description, and domain.

  • Extracting article text without ads or navigation
  • Saving web content as Markdown
  • Retrieving a page title, description, or domain
kepano/obsidian-skills49.9KUpdated Sep 15, 2026

json-canvas

Official · ObsidianFreeSummary

Create and edit .canvas files for visual planning in tools such as Obsidian. Arrange text, files, and links into mind maps or flowcharts, connect related items, and check that the file structure remains valid.

  • Organizing ideas into a mind map
  • Mapping a workflow as a flowchart
  • Grouping research notes and links
kepano/obsidian-skills49.9KUpdated Sep 15, 2026

obsidian-bases

Official · ObsidianFreeSummary

Create and edit Obsidian Bases files to organize notes into tables, cards, and lists. Filter notes by tags or properties, calculate values such as days until a deadline, and configure grouping and summaries.

  • Build a task table with deadlines and status
  • Organize books and articles into reading cards
  • Create an index of daily notes
kepano/obsidian-skills49.9KUpdated Sep 15, 2026

obsidian-cli

Official · ObsidianFreeSummary

Manage Obsidian notes from the command line: read, create, search, update properties, and review tasks. Also supports plugin and theme development through reload commands, error checks, screenshots, and inspection of page elements.

  • Search and update notes in an Obsidian vault
  • Add tasks to daily notes
  • Review tags, properties, and backlinks
kepano/obsidian-skills49.9KUpdated Sep 15, 2026

obsidian-markdown

Official · ObsidianFreeSummary

Create and edit Obsidian Markdown notes with links between notes, embedded images and PDFs, highlighted callout boxes, tags, and properties. Use Obsidian-specific formatting to connect related material and organize information within notes.

  • Connect related notes and specific sections with internal links
  • Embed notes, images, and PDF pages
  • Highlight warnings and key points with callout boxes
kepano/obsidian-skills49.9KUpdated Sep 15, 2026

See all skills by kepano

Report a problem with this skill