MCPInstall

wewrite-wechat-ai-publishing

Full-pipeline AI skill for WeChat Official Account articles — hotspot fetching, topic selection, writing, SEO, image generation, formatting, and draft box publishing.

Installs
883
Last 24h
—
Trending rank
—
Security
Not audited

Install

Works with every agent the skills CLI supports.

npx skills add https://github.com/reason-machines/trending-skills --skill wewrite-wechat-ai-publishing
  1. 01

    Install

    Run the command in your project. The CLI asks which agents to install for.

  2. 02

    Describe the task

    Ask your agent for something this skill covers. It loads wewrite-wechat-ai-publishing automatically when relevant.

  3. 03

    Review the result

    The agent follows the SKILL.md steps, scripts and references bundled with the skill.

SKILL.md

The instructions your agent reads when the skill is triggered.

WeWrite — WeChat AI Publishing Skill

Skill by ara.so — Daily 2026 Skills collection.

WeWrite is a full-pipeline AI skill for producing WeChat Official Account (公众号) articles end-to-end: hotspot fetching → topic selection → writing → SEO → AI image generation → formatting → draft box publishing. It runs as a Claude Code skill (via SKILL.md) but every component also works standalone.


Installation

As a Claude Code Skill

# Clone the repo
git clone https://github.com/oaker-io/wewrite.git ~/.claude/skills/wewrite

# Or copy into an existing project
cp -r wewrite ~/.claude/skills/wewrite

Python Dependencies

cd wewrite
pip install -r requirements.txt

Configuration

cp config.example.yaml config.yaml

Edit config.yaml:

wechat:
  appid: "${WECHAT_APPID}"         # WeChat Official Account App ID
  secret: "${WECHAT_SECRET}"       # WeChat Official Account Secret

image_gen:
  provider: "doubao"               # "doubao" or "openai"
  doubao_api_key: "${DOUBAO_API_KEY}"
  openai_api_key: "${OPENAI_API_KEY}"

output_dir: "./output"

Set environment variables instead of hardcoding secrets:

export WECHAT_APPID="wx1234567890abcdef"
export WECHAT_SECRET="your_secret_here"
export DOUBAO_API_KEY="your_doubao_key"
export OPENAI_API_KEY="sk-..."

Triggering the Full Pipeline

Once installed as a Claude Code skill, simply say:

用 demo 的配置写一篇公众号文章

Claude will execute all steps automatically using clients/demo/style.yaml as the client profile.

You can also specify a client:

用 clients/tech-blog 的风格,围绕今日热点写一篇公众号文章,发布到草稿箱

Pipeline Steps & Scripts

1. Fetch Hotspots

Scrapes real-time trending topics from Weibo, Toutiao, and Baidu.

python3 scripts/fetch_hotspots.py --limit 20
python3 scripts/fetch_hotspots.py --limit 10 --json   # JSON output

Output example:

[
  {"rank": 1, "title": "DeepSeek R2 发布", "source": "weibo", "heat": 98200},
  {"rank": 2, "title": "A股科技板块大涨", "source": "baidu", "heat": 75300}
]

2. SEO Keyword Analysis

Queries Baidu and 360 search suggestions to score keywords.

python3 scripts/seo_keywords.py "AI大模型" "科技股"
python3 scripts/seo_keywords.py --json "ChatGPT" "人工智能"

Python usage:

from scripts.seo_keywords import analyze_keywords

results = analyze_keywords(["AI大模型", "大语言模型", "GPT-5"])
for kw in results:
    print(f"{kw['keyword']}: score={kw['score']}, volume={kw['estimated_volume']}")

3. Topic Selection

Claude reads references/topic-selection.md and generates 10 candidate topics scored on:

  • 热度 (trending heat)
  • 契合度 (client fit)
  • 差异化 (differentiation)

4. Framework & Writing

Claude reads references/frameworks.md (5 frameworks) and references/writing-guide.md (de-AI style rules), then writes the article adapted to the client's tone.

5. AI Image Generation

# Cover image (recommended 900×383)
python3 toolkit/image_gen.py \
  --prompt "科技感封面,蓝色光线,未来感" \
  --output output/cover.png \
  --size cover

# Inline content image
python3 toolkit/image_gen.py \
  --prompt "程序员在办公室工作,现代风格插画" \
  --output output/img1.png \
  --provider openai

Python usage:

from toolkit.image_gen import generate_image

path = generate_image(
    prompt="AI机器人与人类握手,科技感插画",
    output_path="output/cover.png",
    size="cover",          # "cover" (900x383) or "content" (800x600)
    provider="doubao"      # "doubao" or "openai"
)
print(f"Generated: {path}")

6. Formatting — Markdown → WeChat HTML

WeChat requires inline styles. The converter handles this automatically.

# Preview in browser
python3 toolkit/cli.py preview article.md --theme professional-clean

# Available themes
python3 toolkit/cli.py themes

Python usage:

from toolkit.converter import MarkdownConverter
from toolkit.theme import load_theme

theme = load_theme("tech-modern")
converter = MarkdownConverter(theme=theme)

with open("article.md") as f:
    markdown_content = f.read()

html = converter.convert(markdown_content)
# html is WeChat-ready with all inline styles

7. Publish to WeChat Draft Box

python3 toolkit/cli.py publish article.md \
  --cover output/cover.png \
  --title "2026年AI大模型最新进展" \
  --author "科技观察"

Python usage:

from toolkit.publisher import WeChatPublisher
from toolkit.wechat_api import WeChatAPI

api = WeChatAPI(appid=os.environ["WECHAT_APPID"], secret=os.environ["WECHAT_SECRET"])
publisher = WeChatPublisher(api=api)

# Upload cover image first
media_id = api.upload_image("output/cover.png")

# Push to draft box
draft_id = publisher.create_draft(
    title="2026年AI大模型最新进展",
    content=html_content,          # inline-styled HTML from converter
    cover_media_id=media_id,
    author="科技观察",
    digest="本文盘点2026年大模型最新进展..."   # summary/excerpt
)
print(f"Draft created: {draft_id}")

8. Fetch Article Stats (回填数据)

python3 scripts/fetch_stats.py --article-id "your_article_id"

9. Learn from Manual Edits

python3 scripts/learn_edits.py \
  --original output/draft.md \
  --edited output/final.md \
  --client demo

Extracts style rules from diffs and appends them to the client's playbook.


Client Configuration

Each client lives in clients/{name}/style.yaml:

# clients/my-tech-blog/style.yaml
name: "我的科技博客"
industry: "科技/AI"
topics:
  - "人工智能"
  - "大模型应用"
  - "编程技术"
tone: "专业严谨,偶尔幽默,面向中级开发者"
theme: "tech-modern"
avoid:
  - "过度营销语言"
  - "绝对化表述"
wechat:
  appid: "${WECHAT_APPID}"
  secret: "${WECHAT_SECRET}"

Create a new client:

mkdir clients/my-client
cp clients/demo/style.yaml clients/my-client/style.yaml
# Edit style.yaml for your client

Themes

ThemeStyle
professional-cleanClean professional (default)
tech-modernTech-forward blue/purple gradient
warm-editorialWarm editorial tones
minimalMinimal black/white
python3 toolkit/cli.py themes          # list all themes with previews
python3 toolkit/cli.py preview article.md --theme warm-editorial

Custom theme (YAML):

# toolkit/themes/my-theme.yaml
name: my-theme
body:
  font-family: "'PingFang SC', sans-serif"
  font-size: "16px"
  color: "#333"
  line-height: "1.8"
h2:
  color: "#1a73e8"
  font-weight: "bold"
  border-left: "4px solid #1a73e8"
  padding-left: "10px"
blockquote:
  background: "#f0f4ff"
  border-left: "3px solid #4285f4"
  padding: "12px 16px"
  color: "#555"

Full Pipeline — Python Orchestration

import subprocess
import json
import os
from toolkit.converter import MarkdownConverter
from toolkit.theme import load_theme
from toolkit.publisher import WeChatPublisher
from toolkit.wechat_api import WeChatAPI
from toolkit.image_gen import generate_image

# 1. Fetch hotspots
result = subprocess.run(
    ["python3", "scripts/fetch_hotspots.py", "--limit", "20", "--json"],
    capture_output=True, text=True
)
hotspots = json.loads(result.stdout)

# 2. SEO analysis on top topics
from scripts.seo_keywords import analyze_keywords
top_titles = [h["title"] for h in hotspots[:5]]
seo_scores = analyze_keywords(top_titles)

# 3. (Claude selects topic, writes article — handled by SKILL.md)
# After Claude produces article.md:

# 4. Generate cover
cover_path = generate_image(
    prompt="科技感封面图,蓝色渐变,数字化未来",
    output_path="output/cover.png",
    size="cover",
    provider=os.environ.get("IMAGE_PROVIDER", "doubao")
)

# 5. Convert Markdown → WeChat HTML
theme = load_theme("tech-modern")
converter = MarkdownConverter(theme=theme)
with open("output/article.md") as f:
    html = converter.convert(f.read())

# 6. Publish to draft box
api = WeChatAPI(
    appid=os.environ["WECHAT_APPID"],
    secret=os.environ["WECHAT_SECRET"]
)
publisher = WeChatPublisher(api=api)
media_id = api.upload_image(cover_path)
draft_id = publisher.create_draft(
    title="选定标题",
    content=html,
    cover_media_id=media_id,
    author="作者名"
)
print(f"✅ Published draft: {draft_id}")

References Claude Uses During Pipeline

These files are read automatically by Claude when executing the skill:

FilePurpose
references/topic-selection.md10-topic scoring rules (heat × fit × differentiation)
references/frameworks.md5 article structure templates
references/writing-guide.mdStyle rules, de-AI-ification techniques
references/seo-rules.mdWeChat SEO: title length, keyword density, tags
references/visual-prompts.mdImage generation prompt templates
references/wechat-constraints.mdWeChat HTML/CSS technical limits
references/style-template.mdClient style.yaml schema documentation

Troubleshooting

WeChat API 40001 / invalid credential

# Access token expires every 2 hours — the API wrapper auto-refreshes,
# but verify your appid/secret are correct:
python3 -c "
from toolkit.wechat_api import WeChatAPI
import os
api = WeChatAPI(os.environ['WECHAT_APPID'], os.environ['WECHAT_SECRET'])
print(api.get_access_token())
"

Image generation fails

# Test provider connectivity
python3 toolkit/image_gen.py \
  --prompt "测试图片" \
  --output /tmp/test.png \
  --provider doubao
# If doubao fails, switch to openai in config.yaml

Markdown conversion missing styles

# Verify theme loads correctly
python3 -c "from toolkit.theme import load_theme; print(load_theme('tech-modern'))"

# Preview output before publishing
python3 toolkit/cli.py preview article.md --theme tech-modern
# Opens browser with rendered HTML

Hotspot fetch returns empty

# Platforms occasionally change their APIs — run with verbose:
python3 scripts/fetch_hotspots.py --limit 5 --verbose
# Check which sources are failing; the script supports weibo/baidu/toutiao independently

Article not appearing in draft box

  • Ensure the WeChat account has 服务号 or 订阅号 API access enabled
  • Check that your IP is whitelisted in the WeChat MP platform settings
  • Draft box (草稿箱) requires draft.add API permission

Quick Reference

# Full standalone workflow
python3 scripts/fetch_hotspots.py --limit 20 --json > hotspots.json
python3 scripts/seo_keywords.py --json "关键词1" "关键词2"
python3 toolkit/image_gen.py --prompt "封面描述" --output cover.png --size cover
python3 toolkit/cli.py preview article.md --theme tech-modern
python3 toolkit/cli.py publish article.md --cover cover.png --title "标题"

# Build playbook from historical articles
python3 scripts/build_playbook.py --client demo

# Learn from edits
python3 scripts/learn_edits.py --original draft.md --edited final.md --client demo

# Fetch article performance data
python3 scripts/fetch_stats.py --article-id "msgid_here"

FAQ

What does the wewrite-wechat-ai-publishing skill do?

Full-pipeline AI skill for WeChat Official Account articles — hotspot fetching, topic selection, writing, SEO, image generation, formatting, and draft box publishing.

How do I install wewrite-wechat-ai-publishing?

Run npx skills add https://github.com/reason-machines/trending-skills --skill wewrite-wechat-ai-publishing in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/wewrite-wechat-ai-publishing/ (personal) or .claude/skills/wewrite-wechat-ai-publishing/ (project).

Which AI agents can use wewrite-wechat-ai-publishing?

Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.

Is wewrite-wechat-ai-publishing safe to install?

No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.

Who maintains wewrite-wechat-ai-publishing?

It is published by reason-machines in reason-machines/trending-skills. It has 883 recorded installs.

More from reason-machines/trending-skills

View all →

openclaw-control-center

reason-machines/trending-skills

Local-first, security-first control center for OpenClaw agents — visibility dashboard with readonly defaults, token attribution, collaboration tracing, and safe write operations.

Data & Databases4.4K installs

inkos-multi-agent-novel-writing

reason-machines/trending-skills

Multi-agent CLI system for autonomous novel writing, auditing, and revision with human review gates

Docs & Writing2.8K installs

claude-hud-statusline

reason-machines/trending-skills

A Claude Code plugin that displays a real-time HUD showing context usage, active tools, running agents, and todo progress in your terminal statusline.

understand-anything-knowledge-graph

reason-machines/trending-skills

Turn any codebase into an interactive knowledge graph using Claude Code skills — explore, search, and ask questions about any project visually.

agency-agents-ai-specialists

reason-machines/trending-skills

A collection of specialized AI agent personalities for Claude Code, Cursor, Aider, Windsurf, and other AI coding tools — covering engineering, design, marketing, sales, and more.

AI & Agents2.1K installs

agent-browser-automation

reason-machines/trending-skills

Headless browser automation CLI for AI agents using native Rust binary with Chrome DevTools Protocol

Popular docs & writing skills

View category →

grill-with-docs

mattpocock/skills

A relentless interview to sharpen a plan or design, which also creates docs (ADR's and glossary) as we go.

Docs & Writing1.2M installs

lark-markdown

open.feishu.cn

飞书 Markdown:查看、创建、上传、编辑和比较飞书中的原生 Markdown 文件。当用户要操作飞书 Markdown 文件,或比较其远端版本及本地草稿时使用。纯本地 Markdown 文件操作不触发本 skill。不负责将 Markdown 导入为飞书在线文档,也不负责文件搜索、权限、评论、移动、删除等云空间管理操作。

Docs & Writing778.7K installs

writing-beats

mattpocock/skills

Writing, exploit; assemble raw material into a journey of beats, grounding each term before a beat leans on it.

Docs & Writing490.7K installs

writing-shape

mattpocock/skills

Writing, exploit: shape raw material into an article, paragraph by paragraph.

Docs & Writing490.2K installs

writing-fragments

mattpocock/skills

Writing, explore: mine raw fragments, no structure yet.

Docs & Writing489.6K installs

writing-for-agents

mattpocock/skills

Writing documents for agents. Use when creating or editing skills, or modifying AGENTS.md or CLAUDE.md.

Docs & Writing479.3K installs