kepano/knap

Renderiza Markdown a partir de plantillas y datos estructurados usando Knap CLI. Úsalo cuando el usuario solicite aplicar una plantilla Knap, convertir datos JSON o CSV en notas, generar archivos Markdown por lotes o formatear la salida de Defuddle en una nota.

¿Qué es knap?

Knap es una herramienta CLI de código abierto para generar archivos Markdown a partir de plantillas enriquecidas con variables, filtros y lógica condicional. Es especialmente útil para desarrolladores y usuarios que trabajan con datos estructurados (JSON, CSV) y necesitan producir documentación, notas o informes de forma repetitiva y automatizada. Knap se puede integrar con herramientas como Defuddle para extraer contenido web y formatearlo directamente en notas, y también permite el renderizado por lotes para crear un archivo por cada fila de un CSV, objeto de un array JSON o archivo JSON de una carpeta. Es compatible con Node.js 20 o superior y se instala globalmente con npm o se usa a través de npx, ofreciendo una amplia gama de filtros y funciones de validación de plantillas.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/kepano/obsidian-skills/tree/main/skills/knap

Installed? Explore more Productividad y colaboración skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

¿Qué hace knap?

Usa Knap CLI para renderizar plantillas Markdown con variables, filtros y lógica.

Si no está instalado: npm install -g knap (requiere Node.js 20 o posterior). Alternativamente, usa npx knap.

Ejecuta knap --help para ver los comandos y opciones disponibles. Descubre el lenguaje a través de la referencia offline del CLI:

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

Usa las listas para encontrar nombres, luego solicita ayuda individual para sintaxis, parámetros y ejemplos con salida esperada.

Uso

Renderiza una plantilla con variables JSON:

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

Proporciona una plantilla y datos en línea:

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

Sobrescribe una variable o canaliza datos JSON:

knap render template.md --data article.json --set 'title=Título personalizado'
cat article.json | knap render template.md --data -

Los datos deben ser un objeto JSON; sus propiedades se convierten en variables de la plantilla. --set sobrescribe claves literales de nivel superior con cadenas. Usa JSON para objetos anidados, arreglos, números y booleanos.

Elige una fuente de plantilla (archivo, -t o stdin) y una fuente de datos (--data o --data-json). Solo una entrada puede leer de stdin. Sin un archivo de plantilla o -t, Knap lee la plantilla desde stdin.

La salida por defecto es stdout. -o crea directorios padres y sobrescribe el destino después de que el renderizado se complete con éxito. Los errores salen con estado 1; los diagnósticos van a stderr. Las advertencias pueden acompañar a la salida exitosa.

Plantillas

Usa {{ variable }} para valores, | para filtros y {% ... %} para lógica. Por ejemplo, guarda esto como template.md:

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

{{ content }}

Usa yaml_property para propiedades completas de frontmatter, de modo que los valores se citen y sangren correctamente. El CLI incluye filtros estándar, pero no proporciona variables de navegador de Web Clipper, selectores, indicaciones ni filtros HTML dependientes del DOM. Proporciona variables a través de JSON.

Revisa una plantilla antes de renderizar:

knap validate template.md

La validación verifica la sintaxis, los nombres de filtros y los argumentos estáticos de los filtros sin datos ni salida a archivo. No verifica la existencia de variables, valores en tiempo de ejecución ni argumentos dinámicos; renderiza con datos reales para verificar el comportamiento en tiempo de ejecución. Los diagnósticos van a stderr e incluyen comandos de ayuda relevantes.

Pipeline Defuddle

Extrae una página web como JSON con contenido Markdown, luego renderízalo en una nota:

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

Las propiedades JSON de Defuddle, como title y content, se convierten directamente en variables de la plantilla.

Renderizado por lotes

Crea un archivo por cada fila de CSV, objeto de arreglo JSON o archivo JSON en una carpeta:

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

Usa --data articles.json para un arreglo o --data ./articles para una carpeta de objetos JSON. Los encabezados CSV se convierten en nombres de variable y los valores permanecen como cadenas. Los datos canalizados por defecto son JSON; agrega --format csv para CSV canalizado.

Usa --dry-run para validar y listar las rutas de salida sin escribir archivos. Los archivos existentes requieren --overwrite, incluso durante una simulación. Los nombres de salida duplicados dentro de un lote son errores incluso con --overwrite.

Las plantillas de nombre de archivo deben producir un solo nombre de archivo con su extensión, sin directorios. Usa safe_name para nombres derivados de datos. Sin --filename, Knap conserva los nombres base JSON de origen o numera las filas de CSV y los elementos del arreglo como 1.md, 2.md, etc.

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.

Skills relacionados