






















我给 Obsidian Web Clipper 做了一套中文平台模板,覆盖微信/知乎/小红书/B站等 7 个场景
Obsidian 官方出了 Web Clipper 浏览器扩展之后,剪藏网页终于不用再折腾第三方工具了。但打开模板社区一看——Reddit、GitHub、Medium、YouTube……全是英文平台。
微信公众号?知乎?小红书?B站?一个都没有。
用默认模板剪藏中文网站,结果通常是这样的:
于是我花了点时间,针对每个平台的页面结构,写了一套精准提取的模板。现在已经提交到 Obsidian 官方社区模板库,是这个仓库里的第一批中文平台模板。
| 模板 | 触发平台 | 存储位置 | 核心能力 |
|---|---|---|---|
| 微信公众号 | mp.weixin.qq.com | Clippings | #js_content 精准抓取正文 |
| 知乎 | zhihu.com 问答 + 专栏 | Clippings | .RichText 过滤评论推荐 |
| 小红书 | xiaohongshu.com | Clippings | 轮播图去重 + 图片嵌入 |
| YouTube | youtube.com/watch | Videos | Schema.org 结构化数据提取 |
| 视频笔记 | B站 / 抖音 / 优酷 / 西瓜 | Videos | BV 号自动提取 + iframe 嵌入 |
| 文章收藏 | 财新 / 少数派 / 36Kr / 虎嗅 / V2EX / 即刻 等 | Clippings | 多站通用兜底模板 |
| 快速收藏 | 手动选择,不自动触发 | Inbox | 只存标题 + 链接,最轻量 |
每个模板都设置了 triggers(触发器),打开对应网站时 Web Clipper 会自动匹配,不需要手动选模板。
#js_content 是关键微信公众号的页面结构相对规范。文章正文被包在 #js_content 这个容器里,用 selectorHtml 抓取后转 Markdown 就很干净:
{{selectorHtml:#js_content|markdown}}作者名通过 OpenGraph 元数据提取:
{{meta:property:og:article:author}}这样剪藏出来的笔记只有正文,不会混入底部推荐、公众号名片之类的东西。
.RichText 过滤一切噪音知乎的页面噪音很多——点赞数、评论区、「相关推荐」、侧边栏广告。核心正文在 .RichText 这个 class 里:
{{selectorHtml:.RichText|markdown}}模板同时配了两个 trigger,覆盖知乎问答页和专栏文章:
"triggers": ["www.zhihu.com/question", "zhuanlan.zhihu.com"]小红书是这套模板里最难搞的平台。主要有两个问题:
问题 1:内容抓不到
小红书的笔记是在搜索页上以弹窗形式展示的,{{content}} 抓到的全是背后搜索页的内容——搜索框、筛选器、其他笔记缩略图。解决方案是用 CSS 选择器精准定位笔记正文容器:
{{selectorHtml:#detail-desc|markdown}}问题 2:图片重复 3 倍
小红书使用 Swiper.js 做图片轮播。为了实现「无缝循环」效果,Swiper 会在真实 slide 前后各复制一份,加上 swiper-slide-duplicate 这个 class。一张图实际在 DOM 里出现了 3 次。
如果直接用 {{selectorHtml:.swiper-wrapper|markdown}},剪藏出来每张图都会重复 3 遍。
解决方案分三步:
:not(.swiper-slide-duplicate) 只选中真实 slide|unique 过滤器确保 URL 级别无重复join 技巧把 URL 数组拼成  格式最终的选择器:
 img?src|unique|join:\")\n\n这行代码做了一件很巧妙的事:join 的分隔符是 )\n\n 的头尾,完成拼接。
B站视频页面的 URL 格式是这样的:
https://www.bilibili.com/video/BV1QTX2BUEBh/?spm_id_from=...&t=6.30256&bvid=...要生成 iframe 播放器,需要提取出 BV1QTX2BUEBh 这个 BV 号。用了一条链式过滤器:
{{url|replace:"https://www.bilibili.com/video/":""|split:"/"|first|split:"?"|first}}步骤拆解:
replace 去掉域名前缀 → BV1QTX2BUEBh/?spm_id_from=...split:"/" 按斜杠分割 → ["BV1QTX2BUEBh", "?spm_id_from=..."]first 取第一个 → BV1QTX2BUEBh(可能还带 ? 参数)split:"?" + first 去掉参数 → BV1QTX2BUEBh然后拼成 iframe:
<iframe src="https://player.bilibili.com/player.html?bvid=BV1QTX2BUEBh&high_quality=1&quality=80&autoplay=0"
width="100%" height="500" frameborder="0" allowfullscreen></iframe>标题也做了自动清理,去掉 B站默认追加的 _哔哩哔哩_bilibili 后缀:
{{title|replace:"_哔哩哔哩_bilibili":""}}注意:B站 iframe 在 Obsidian 中可能无法加载(B站服务器拒绝来自
app://origin 的请求),但模板同时保留了原视频链接,点击可跳转浏览器全画质观看。
对于财新、少数派、36Kr、虎嗅、V2EX、即刻等网站,页面结构差异较大,没法为每个站写专用选择器。用 {{content}} 做通用提取,配合 {{author}}、{{published}} 等标准元数据变量,效果已经不错:
"triggers": ["*.wsj.com", "cn.wsj.com", "caixin.com", "*.sspai.com",
"36kr.com", "huxiu.com", "ifanr.com", "*.lifeweek.com.cn",
"*.v2ex.com", "okjike.com", "*.jike.com"]财新、WSJ 中文版等付费墙网站,需要在浏览器中登录后才能抓到完整正文。
模板 JSON 文件可以从 GitHub PR 下载,或者自己按文末的 JSON 源码创建。
Web Clipper 按模板列表顺序匹配,第一个命中的 trigger 生效。建议排列顺序(在 Web Clipper 设置里拖拽调整):
app:// origin 被 B站拒绝,但原视频链接始终可用这套模板已提交至 Obsidian 官方社区模板库,是仓库里第一批中文平台模板:
GitHub: obsidian-community/web-clipper-templates #26
如果对你有帮助,欢迎去 GitHub 给个 Star ⭐
本文中的模板在 Obsidian Web Clipper 最新版本上测试通过(2026 年 4 月)。如果某个平台更新了页面结构导致模板失效,欢迎在 GitHub 上提 Issue。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。