微信转存
wechat-article-to-obsidian
by amortalsodyssey
Save WeChat public account articles (微信公众号文章) as clean Markdown notes in Obsidian. Use this skill whenever the user shares a mp.weixin.qq.com link and wants to save it to Obsidian, or mentions '微信文章', '公众号文章', '保存微信', '导入微信文章到Obsidian', 'save wechat article', 'clip wechat'. Also triggers when the user wants to batch-save multiple WeChat article URLs to their Obsidian vault. Zero external dependencies — just curl and Node.js.
安装
claude skill add --url https://github.com/openclaw/skills文档
WeChat Article → Obsidian
Save WeChat MP articles (微信公众号) as clean Markdown notes in Obsidian. No browser, no CDP, no plugins needed.
How it works
WeChat articles are server-side rendered — the full content is in the HTML, just CSS-hidden. A curl with browser UA fetches it, a Node.js script converts it to clean Markdown (with images, merged section headings, promotional tails stripped), and the result goes into the user's Obsidian vault via the obsidian CLI.
Dependencies
- curl (pre-installed on macOS/Linux)
- Node.js >= 18
- obsidian CLI (for writing to vault — if not available, fall back to direct file write)
First-time setup
On first use, check <skill-path>/config.json. If obsidian_vault or default_path is empty, ask the user:
- "What is your Obsidian vault name?" — this is the vault name used with
obsidianCLI (e.g.,vault=MyVault) - "Where should I save WeChat articles by default?" — a path inside the vault (e.g.,
notes/wechat,articles/wechat)
Then write the answers to <skill-path>/config.json:
{
"obsidian_vault": "MyVault",
"default_path": "notes/wechat"
}
This only needs to happen once. After that, the skill uses the saved config automatically.
Configuration
Natural language override (per-request)
The user can override the default path anytime:
- "把这篇文章存到 reading/tech 目录"
- "save this under articles/ai/"
- "导入到 Obsidian 的 inbox 文件夹"
Parse the target path from the user's message and use it instead of default_path.
Config file (persistent default)
<skill-path>/config.json:
obsidian_vault: the vault name forobsidianCLIdefault_path: where to save articles when the user doesn't specify a path
Workflow
Single article
SKILL_PATH="<skill-path>"
# Step 1: Fetch HTML
bash "$SKILL_PATH/scripts/fetch.sh" "URL" /tmp/wx_article.html
# Step 2: Get metadata (to determine filename)
node "$SKILL_PATH/scripts/parse.mjs" /tmp/wx_article.html --json
# Step 3: Parse to Markdown
node "$SKILL_PATH/scripts/parse.mjs" /tmp/wx_article.html > /tmp/wx_article.md
# Step 4: Read the parsed output, then save to Obsidian
obsidian create path="<target_path>/<filename>.md" content="<markdown_content>" vault=<vault_name>
The filename should be derived from the article title, keeping it readable: strip special characters, keep Chinese characters. Example: 从Claude Code源码看AI Agent工程架构.md
Batch save (multiple URLs)
For 2+ URLs, process them sequentially. For 4+ URLs, consider using subagents in parallel (each with its own temp file).
# Per URL:
bash "$SKILL_PATH/scripts/fetch.sh" "$url" "/tmp/wx_${i}.html"
node "$SKILL_PATH/scripts/parse.mjs" "/tmp/wx_${i}.html" > "/tmp/wx_${i}.md"
# Then save each to Obsidian
Output format
The parser produces clean Markdown with YAML frontmatter:
---
title: "Article Title"
author: "公众号名称"
publish_date: "2026-03-31 19:45:08"
saved_date: "2026-03-31"
source: "wechat"
url: "https://mp.weixin.qq.com/s/..."
---
The parser automatically:
- Preserves all article images (WeChat CDN URLs)
- Removes WeChat decoration text (THUMB, STOPPING)
- Merges "PART.XX" + title into proper
## PART.XX Titleheadings - Strips promotional tails (关注/点赞/在看, author bios, QR codes)
- Preserves bold, italic, code blocks, blockquotes, lists, links
Post-processing by Claude
After the parser runs, review the output and apply any remaining cleanup:
- If the user specified tags, add them to the frontmatter
- Verify the filename is clean and descriptive
- Confirm save location with the user if ambiguous
Troubleshooting
curl returns empty or verification page
WeChat may rate-limit. Wait 30 seconds and retry. If persistent, the article may require login — inform the user.
Empty content / no #js_content
Some special article types (mini-programs, video-only) aren't supported. Inform the user.
obsidian CLI not available
Fall back to direct file write using the Write tool to the vault's disk path.
相关 Skills
技能工坊
by anthropics
覆盖 Skill 从创建到迭代优化全流程:起草能力、补测试提示、跑评测与基准方差分析,并持续改写内容和描述,提升效果与触发准确率。
✎ 技能工坊把技能从创建、迭代到评测串成闭环,方差分析加描述优化,特别适合把触发准确率打磨得更稳。
PPT处理
by anthropics
处理 .pptx 全流程:创建演示文稿、提取和解析幻灯片内容、批量修改现有文件,支持模板套用、合并拆分、备注评论与版式调整。
✎ 涉及PPTX的创建、解析、修改到合并拆分都能一站搞定,连备注、模板和评论也能处理,做演示文稿特别省心。
PDF处理
by anthropics
遇到 PDF 读写、文本表格提取、合并拆分、旋转加水印、表单填写或加解密时直接用它,也能提取图片、生成新 PDF,并把扫描件通过 OCR 变成可搜索文档。
✎ PDF杂活别再来回切工具了,文本表格提取、合并拆分到OCR识别一次搞定,连扫描件也能变可搜索。
相关 MCP 服务
文件系统
编辑精选by Anthropic
Filesystem 是 MCP 官方参考服务器,让 LLM 安全读写本地文件系统。
✎ 这个服务器解决了让 Claude 直接操作本地文件的痛点,比如自动整理文档或生成代码文件。适合需要自动化文件处理的开发者,但注意它只是参考实现,生产环境需自行加固安全。
by wonderwhy-er
Desktop Commander 是让 AI 直接执行终端命令、管理文件和进程的 MCP 服务器。
✎ 这工具解决了 AI 无法直接操作本地环境的痛点,适合需要自动化脚本调试或文件批量处理的开发者。它能让你用自然语言指挥终端,但权限控制需谨慎,毕竟让 AI 执行 rm -rf 可不是闹着玩的。
by stickerdaniel
LinkedIn Profile and Job Scraper 是让 Claude 直接抓取 LinkedIn 个人资料、公司信息和职位详情的工具。
✎ 这个服务器解决了招聘和商业调研中手动复制粘贴 LinkedIn 数据的痛点,适合猎头或市场分析师快速获取候选人背景和公司动态。不过,LinkedIn 反爬机制频繁更新,数据稳定性需要持续维护,使用时建议搭配人工验证。