skill
web-clip
把网页(微信公众号/飞书/知乎/小红书/博客)抓成 Markdown + 本地图片的 agent skill,零 LLM token
Set up
Skills are installed by placing their folder where your agent loads skills.
The download comes from github.com/1145434396-boop/web-clip itself, not from our server, so what you get is exactly what its author published.
Install instructions come from the README
README
synced Oct 22, 2026web-clip
把网页(微信公众号 / 飞书 Wiki·文档 / 知乎 / 小红书 / 普通博客)一键抓成 Markdown 原文 + 本地图片,落到你指定的目录。专为 AI agent skill 设计,图文位置精确还原。
甩一个或多个链接进来 → 干净的 .md + 下载好的图片,直接进你的知识库 / 笔记库。
特性
- 多平台:按域名自动路由,每个平台用最省的抓取方式
- 本地提取:HTML→Markdown、图片下载都在本地 Python 完成
- 精确图文位置:图片插回正文原位,不是统一堆在文末
- 自检指标:每次输出一行 JSON(字数 / 图片数 / 警告 / 正文预览),agent 看 JSON 即可判断质量,无需回读正文
- 路径记忆:首次指定输出目录后记住,之后省略
- 失败兜底:抓不到也写一条 stub,保住链接不丢
支持的来源
| 来源 | 抓取的内容 | 说明 |
|---|---|---|
微信公众号 mp.weixin.qq.com | 标题、正文、图片 | 图文按原位置精确还原 |
飞书 Wiki / 文档 *.feishu.cn | 标题、正文、表格、图片 | 结构完整,图文同步 |
知乎专栏 zhihu.com | 标题、正文、图片 | 需登录才能看的文章也能抓 |
小红书 xiaohongshu.com | 笔记文案 + 配图 | 免登录;配图以图库形式附在文末 |
| 普通博客 / 新闻 / 其它网页 | 标题、正文、图片 | 静态与动态渲染站点都自动适配 |
| 抓取失败时 | 保留链接占位 | 内容不丢,标记为待重试 |
和 Chrome 插件版的区别:什么时候用哪个
web-clip 有两种形态,能力互补:
- 用本仓库(CLI skill):让 Claude / agent 自动、批量剪藏,落到任意指定目录,或要抓飞书文档内嵌的电子表格 / 多维表格数据(可带登录态拉真实数据)。需本地有 Python + Playwright 环境。
- 用 Chrome 插件:你正在浏览器里看到一篇想随手存、尤其是需要登录才能看的页面(知乎 / 飞书 / 内网)——它直接用你当前浏览器的登录会话,零环境依赖。
经验:剪藏只是第一步。如果落到本地后还要接与 AI 协作的后续流程(整理、分析、归档入库、二次生成等),建议直接用 skill——它和 Claude / agent 在同一上下文里,剪藏完能无缝衔接后续处理,不必在浏览器和工具之间来回倒腾。
安装
pip install -r requirements.txt
python -m playwright install chromium
依赖:lxml(微信解析)、trafilatura(通用提取)、playwright + chromium(飞书/知乎渲染)。
用法
# 首次:指定输出目录(自动记住)
python scripts/clip.py "<URL>" --out "/path/to/notes"
# 之后:省略 --out,用记住的目录
python scripts/clip.py "<URL>"
# 查看 / 设置默认目录
python scripts/clip.py --show-config
python scripts/clip.py --set-out "/path/to/notes"
输出目录解析优先级:--out > 环境变量 CLIP_OUT > 配置文件 ~/.web-clip.json。
落地结构
<DEST_ROOT>/
├── articles/
│ └── <标题>.md
└── assets/
└── <标题>-00.png, <标题>-01.jpg, ...
存进 Obsidian/BOMI 这类知识库时,把 --out 指到对应目录即可,例如 --out "D:/BOMI/raw"。
输出 JSON(自检指标)
{"ok": true, "title": "...", "source": "微信公众号",
"article": ".../articles/标题.md", "slug": "...",
"chars": 1497, "images": 2, "img_refs": 2, "headings": 9,
"warnings": [], "preview": "正文开头……"}
images == img_refs且warnings: []→ 抓取干净warnings可能含empty_title/body_too_short/ui_noise:复制/img_missing:N- 失败时
ok: false,并在stub字段给出占位文件路径
环境变量
| 变量 | 作用 |
|---|---|
CLIP_OUT | 默认输出根目录(--out 优先) |
CLIP_HEADLESS=1 | 渲染分支改用 headless(无显示器服务器配合 xvfb-run) |
已知限制
- 小红书视频笔记只拿文案,封面/视频未处理。
- 小红书图片是图库形式附在正文末尾(XHS 笔记本身无图文交错结构)。
- 知乎渲染分支默认非 headless,无显示器的服务器需用
xvfb-run包裹,或设CLIP_HEADLESS=1(headless 可能重新被风控拦)。 - 脚本不做正文语义改写;如需更干净排版,再让 LLM 过一遍。
作为 Claude Code / agent skill 使用
仓库本身就是一个 skill:SKILL.md 描述触发条件与执行流程,scripts/clip.py 是实现。
npx skills add github:1145434396-boop/web-clip -g
安装后在 Claude Code 中直接对话即可,例如:
- “帮我把这篇文章存下来:https://…”
- “剪藏这几个链接到我的知识库”
License
MIT