Web Clipper

v1.0.3

Save any web page as a clean Markdown note with metadata, organized in Obsidian format, using Jina Reader API without browser extensions.

0· 124· 4 versions· 0 current· 0 all-time· Updated 1w ago· MIT-0

Web Clipper

Save any web page as a clean, readable Markdown note in your Obsidian vault. Powered by Jina Reader API for content extraction — no browser extension required. Works from inside Claude.

When to Use This Skill

  • You want to save an article for later reading in Obsidian
  • You found a useful page and want it archived as Markdown
  • You want to add tags and organize clips into subfolders
  • You need to clip technical docs, blog posts, or news articles
  • You want to avoid browser extension bloat — just tell Claude to save it

What This Skill Does

  1. Fetches the page via Jina Reader API — strips ads, nav, and noise
  2. Converts to Markdown — clean readable format with frontmatter
  3. Saves to your vault — default: ~/.openclaw/obsidian-cache/clippings/
  4. Adds metadata — title, source URL, date saved, and your tags
  5. Confirms the filename — Claude tells you exactly where it was saved

Requirements

  • Python 3.7+
  • requests library: pip install requests
  • JINA_API_KEY — optional. Works without a key (free tier). Set for higher rate limits:
echo 'JINA_API_KEY=jina_xxxxxxxxxxxx' >> ~/.openclaw/.env

Get a free key at jina.ai

Note: The script only accepts http:// and https:// URLs. Local file paths are not supported.

How to Use

Basic — Save a URL

save https://example.com/article
保存这个 https://v2ex.com/t/123456

With Tags

save https://example.com/article --tags "ai,research"

Save to a Subfolder

save https://example.com/article --folder clippings/tech

Full Options

python3 ~/.openclaw/skills/web-clipper/scripts/save_web_page.py \
  --url "https://example.com/article" \
  --folder "clippings/tech" \
  --tags "ai,tools" \
  --vault "/path/to/your/obsidian/vault"

Example

User: save https://www.v2ex.com/t/1197958

Claude executes:

python3 ~/.openclaw/skills/web-clipper/scripts/save_web_page.py --url "https://www.v2ex.com/t/1197958"

Output file (~/.openclaw/obsidian-cache/clippings/2026-01-15 V2EX Thread Title.md):

---
title: "V2EX Thread Title"
source: "https://www.v2ex.com/t/1197958"
saved: "2026-01-15 14:32"
tags: []
---

# V2EX Thread Title

> Source: https://www.v2ex.com/t/1197958
> Saved: 2026-01-15 14:32

---

[Clean article content in Markdown...]

Claude confirms: "已保存为 2026-01-15 V2EX Thread Title.md ✅"

Supported Content

Content TypeSupport
Blog posts / articles
Technical documentation
News articles
V2EX / Reddit threads
GitHub READMEs
PDF files (remote)
JS-heavy SPAs⚠️ Jina handles most; complex apps may need PinchTab
Login-required pages

File Structure

web-clipper/
├── SKILL.md                    ← This file (Claude reads this)
└── scripts/
    └── save_web_page.py        ← Main clipping script

Output Format

Saved files include YAML frontmatter for Obsidian compatibility:

---
title: "Article Title"
source: "https://original-url.com"
saved: "2026-01-15 14:32"
tags: [ai, research]
---

Notes

  • Filenames are auto-sanitized and dated: YYYY-MM-DD Title.md
  • Duplicate filenames get a counter suffix: 2026-01-15 Title (2).md
  • Default vault: ~/.openclaw/obsidian-cache/clippings/
  • The JINA_API_KEY free tier supports ~1000 requests/month

Version tags

latestvk97dxmzcw37bmxfjzf1hfppx9185bkbv