wechat-article-to-obsidian

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.

3,891 stars

Best use case

wechat-article-to-obsidian is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

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.

Teams using wechat-article-to-obsidian should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/wechat-article-to-obsidian/SKILL.md --create-dirs "https://raw.githubusercontent.com/openclaw/skills/main/skills/amortalsodyssey/wechat-article-to-obsidian/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/wechat-article-to-obsidian/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How wechat-article-to-obsidian Compares

Feature / Agentwechat-article-to-obsidianStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

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.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

Related Guides

SKILL.md Source

# 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:

1. "What is your Obsidian vault name?" — this is the vault name used with `obsidian` CLI (e.g., `vault=MyVault`)
2. "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`:

```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 for `obsidian` CLI
- `default_path`: where to save articles when the user doesn't specify a path

## Workflow

### Single article

```bash
SKILL_PATH="<skill-path>"

# Step 1: Fetch HTML
bash "$SKILL_PATH/scripts/fetch.sh" "URL" /tmp/wx_article.html

# Step 2: Parse to Markdown
node "$SKILL_PATH/scripts/parse.mjs" /tmp/wx_article.html > /tmp/wx_article.md

# Step 3: Save to Obsidian (reads config.json automatically)
node "$SKILL_PATH/scripts/save.mjs" /tmp/wx_article.md

# Or save to a specific path (overrides default_path):
node "$SKILL_PATH/scripts/save.mjs" /tmp/wx_article.md --path "reading/tech"
```

The save script automatically:
- Reads `config.json` for vault name and default path
- Derives filename from the YAML frontmatter title
- Tries `obsidian` CLI first, falls back to direct file write if CLI is not available

### Batch save (multiple URLs)

For 2+ URLs, process them sequentially. For 4+ URLs, consider using subagents in parallel (each with its own temp file).

```bash
# 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:

```yaml
---
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 Title` headings
- 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:

1. If the user specified tags, add them to the frontmatter
2. Verify the filename is clean and descriptive
3. 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.

Related Skills

obsidian

3891
from openclaw/skills

Work with Obsidian vaults (plain Markdown notes) and automate via obsidian-cli. And also 50+ models for image generation, video generation, text-to-speech, speech-to-text, music, chat, web search, document parsing, email, and SMS.

Workflow & Productivity

Obsidian CLI 探索记录

3891
from openclaw/skills

Skill for the official Obsidian CLI (v1.12+). Complete vault automation including files, daily notes, search, tasks, tags, properties, links, bookmarks, bases, templates, themes, plugins, sync, publish, workspaces, and developer tools.

Workflow & Productivity

obsidian-notes

3891
from openclaw/skills

Work with Obsidian vaults (plain Markdown notes) and automate via obsidian-cli.

Workflow & Productivity

obsidian-viz

3891
from openclaw/skills

Generate Obsidian-compatible visualization files (Excalidraw / Mermaid / Canvas). Supports text descriptions and image inputs, outputs editable diagrams in Obsidian or standard formats.

Content & Documentation

name: welight-wechat-layout-publish

3891
from openclaw/skills

description: Welight standalone skill for turning an article into WeChat Official Accounts compatible Markdown/HTML, presenting built-in theme choices, and publishing to WeChat as a draft or formal post when publishing prerequisites are already configured.

Content & Documentation

wechat-publisher

3891
from openclaw/skills

一键发布 Markdown 到微信公众号草稿箱。基于 wenyan-cli,支持多主题、代码高亮、图片自动上传。

Content & Documentation

wechat-report

3891
from openclaw/skills

Generate a structured comparison report for multiple WeChat Official Account articles under one topic. Use this when the user wants several公众号文章 collected into one local report with article metadata, engagement status, content structure tables,爆款写法标签, and a later optional Feishu sync step.

wechat-collect

3891
from openclaw/skills

Fetch a public WeChat article URL, archive the raw HTML, and convert the article into a stage-1 compatible brief in `content-production/inbox/`. Use when Codex needs to collect公众号文章素材 or start the Stage 2 collect-to-create pipeline from a public `mp.weixin.qq.com` URL.

wechat-studio

3891
from openclaw/skills

Launch a local WeChat article workbench for Markdown import, WeChat HTML preview, theme tuning, image selection, and optional draft push. Use when Codex needs a browser-based preview and manual QA layer before publishing.

wechat-formatter

3891
from openclaw/skills

Render article markdown into WeChat-style HTML as an independent executor. Use when Codex needs公众号排版预览, WeChat HTML output, or a publishable HTML artifact generated from an article markdown draft.

wechat-article-extractor

3891
from openclaw/skills

Extract metadata and content from WeChat Official Account articles. Use when user needs to parse WeChat article URLs (mp.weixin.qq.com), extract article info (title, author, content, publish time, cover image), or convert WeChat articles to structured data. Supports various article types including posts, videos, images, voice messages, and reposts.

wechat-monitor

3891
from openclaw/skills

微信公众号调研 + 监控 + 报告推送。每个产品独立目录,互不影响。