From zkfy
Clip a web page into a clean Markdown file under raw/, with images downloaded locally to raw/attachments/. Self-contained — depends only on the defuddle npm package installed inside this skill folder. Use when given a URL and asked to capture it for the vault without firecrawl or API keys.
How this skill is triggered — by the user, by Claude, or both
Slash command
/zkfy:web-clipperThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Fetch a URL → `raw/<slug>.md` with all images materialized to `raw/attachments/<slug>/`.
Fetch a URL → raw/<slug>.md with all images materialized to raw/attachments/<slug>/.
$ARGUMENTS — <url> [--no-attachments] [--out <path>]
<url> (required) — the page to clip--no-attachments — skip image download; keep remote URLs as-is--out <path> — override default output path (raw/<slug>.md)cd skills/web-clipper && npm install
This installs defuddle (+ its optional deps linkedom and turndown) locally
into skills/web-clipper/node_modules/. No API key or external service required.
Runtime requirements: node, curl, jq.
Run the wrapper script from the vault root:
bash skills/web-clipper/scripts/clip.sh <url>
bash skills/web-clipper/scripts/clip.sh <url> --no-attachments
bash skills/web-clipper/scripts/clip.sh <url> --out raw/my-note.md
URL
│
▼
[1] defuddle CLI (skills/web-clipper/node_modules/.bin/defuddle)
defuddle <url> --markdown --json
→ JSON: title, author, published, domain, contentMarkdown
│
▼
[2] Compose Markdown file
• YAML frontmatter (Date, Type, Link, Categories, tags, Before, Next, …)
• # <title> heading
• contentMarkdown body
→ raw/<slug>.md
│
▼
[3] Attachment materialization (skipped with --no-attachments)
• grep remote image URLs from output
• curl → raw/attachments/<slug>/<md5>.<ext>
• rewrite Markdown links to local relative paths
---
Date: <today>
Type: literature
Link: '<url>'
Categories: []
Sub-Categories: []
Aliases: ['<page title>']
tags: []
Before: ''
Next: ''
Author: '<author>' # omitted if empty
Published: '<date>' # omitted if empty
Source: '<domain>' # omitted if empty
---
Compatible with /zk-note and /source-to-zk downstream.
raw/
<slug>.md
attachments/
<slug>/
<md5>.png
<md5>.jpg
…
/zk-note raw/<slug>.md
# or
/source-to-zk raw/<slug>.md
# Sanity: defuddle installed
skills/web-clipper/node_modules/.bin/defuddle --help
# Clip with attachments
bash skills/web-clipper/scripts/clip.sh https://react.dev/learn
# Clip without attachments
bash skills/web-clipper/scripts/clip.sh https://react.dev/learn --no-attachments
# Pipe into the ZK pipeline
/source-to-zk raw/react-dev-learn.md
Guides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.
npx claudepluginhub jasonsie/zkfy --plugin zkfy