{
  "schemaVersion": "1.0",
  "item": {
    "slug": "wechat-article-forge",
    "name": "WeChat Article Writer",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/chunhualiao/wechat-article-forge",
    "canonicalUrl": "https://clawhub.ai/chunhualiao/wechat-article-forge",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/wechat-article-forge",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=wechat-article-forge",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "CHANGELOG.md",
      "README.md",
      "SKILL.md",
      "references/LESSONS_LEARNED.md",
      "references/agent-config.md",
      "references/browser-automation.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/wechat-article-forge"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/wechat-article-forge",
    "agentPageUrl": "https://openagent3.xyz/skills/wechat-article-forge/agent",
    "manifestUrl": "https://openagent3.xyz/skills/wechat-article-forge/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/wechat-article-forge/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "wechat-article-writer",
        "body": "从选题到发布的公众号一体化写作工作流\n\nMulti-agent pipeline: Orchestrator delegates writing and reviewing to independent subagents. The orchestrator never writes or reviews — it routes, tracks versions, and enforces quality gates."
      },
      {
        "title": "Setup",
        "body": "bash <skill-dir>/scripts/setup.sh <workspace-dir>\n\nInstalls: bun runtime, bundled baoyu renderer deps, and a persistent preview server (wechat-preview.service, port 8898, auto-restart)."
      },
      {
        "title": "Scope",
        "body": "Handles: Topic research → Chinese-first writing → quality review → scrapbook illustrations → WeChat formatting → publishing to WeChat draft box (via Official Account API or CDP browser automation).\n\nDoes NOT handle: Git/version control, non-WeChat platforms, post-publish analytics, WeChat messaging/customer service.\n\nEnds at: Article saved to WeChat draft box. User publishes manually."
      },
      {
        "title": "Commands",
        "body": "Trigger any command below, or see skill.yml for the full trigger pattern list.\n\nCommandWhat it doesforge topic XResearch trending angles, propose 3 options with hooksforge write XFull pipeline: research → publish (9 steps)forge draft XWrite + format only, stop before illustrations/publish (steps 1-7)forge publish <slug>Publish an existing draft to WeChatforge preview <slug>Render preview, run format quality checksforge voice trainAnalyze past articles to extract voice profileforge statusShow pipeline status and pending drafts\n\nIf no subject given, loads from session.json (set by forge topic). See references/data-layout.md."
      },
      {
        "title": "Pipeline (9 Steps)",
        "body": "State persists to pipeline-state.json — survives compaction. See references/pipeline-state.md.\n\n#StepWhoDetails1Research + PrepOrchestrator(a) web_search for topic angles + 5-8 sources. (b) Verify each source exists (fetch title/authors/venue). Save as sources.json. (c) Load voice profile. (d) Generate outline (6-8 sections), save outline.md.2WriteWriter subagentChinese-first draft. Writer MUST cite only from sources.json or mark [UNVERIFIED]. See references/writer-prompt.md3ReviewReviewer subagentBlind 8-dimension craft scoring. See references/reviewer-rubric.md4aRevise (auto)Writer subagentMax 2 automated cycles. Loop back to Step 3 if score < threshold.4bRevise (human)Human-in-the-loopIf still below threshold after 2 auto cycles, user provides direction. Pauses pipeline.5Fact-checkFact-Checker subagentVerify every claim via web search. Produces corrections + reference list. Max 2 fact-check cycles (corrections → re-verify). See references/fact-checker-prompt.md6FormatScriptbash scripts/format.sh <draft-dir> [draft-file] [theme] — baoyu renderer (default theme: classic WeChat style). Themes: default/grace/simple. If fact-check required >3 text changes, Orchestrator does a spot re-review (Reviewer scores only changed paragraphs, not full article).7PreviewHumanOpen http://<host>:8898/formatted.html (persistent preview server, systemd wechat-preview.service), await text approval8Illustrate + Embedarticle-illustrator + scriptGenerate scrapbook images (AFTER text approval). ~$0.06/article via Z.AI (preferred, ~$0.015/image) or ~$0.50 via OpenRouter.9PublishOrchestratorThree paths — check in order: (C) WeChat Official Account API via appid+appsecret (credentials at wechat_secrets_path in config.json) — preferred, most reliable; (A) OpenClaw browser tool with base64 chunking for macOS/Titan; or (B) direct CDP WebSocket for Linux/remote. Paths A+B use two-phase injection (text first, then images via clipboard blob paste). See references/browser-automation.md"
      },
      {
        "title": "Key Rules",
        "body": "Writer never self-reviews. Reviewer is blind — never sees outline or brief.\nIllustrations LAST. Most expensive step. Only after user approves text.\narticle-illustrator is the ONLY image method. Must follow full scrapbook pipeline: read references/scrapbook-prompt.md → generate JSON plan with 300-500 char descriptions → call generate.py. Never bare prompts. Prefer Z.AI provider ($0.015/image, 97.9% Chinese text accuracy) over OpenRouter ($0.12/image).\nTwo-phase image injection. Base64 images are stripped on save. Inject text-only HTML first, then insert each image at the correct position via clipboard blob paste (WeChat auto-uploads to CDN). Verify image count + positions after insertion.\nBrowser tool vs direct CDP. On macOS/Titan where OpenClaw manages the browser, you MUST use the browser tool (Path A). Playwright isolates page contexts — external CDP connections see zero targets. On Linux with standalone Chrome, use direct CDP (Path B). See references/browser-automation.md.\nBase64 chunking for browser tool. Raw HTML in the browser tool's fn parameter breaks due to escaping conflicts. Always base64-encode HTML, store in chunks via window._b, then atob() and inject. Track chunks_stored in pipeline state for compaction recovery.\nAlways save as draft. User publishes manually.\nCheck for WeChat API credentials first. If wechat_secrets_path credentials file (see config.json) exists, use Path C (API) — no browser required, more reliable. Fall back to Path A/B only if no credentials.\nensure_ascii=False is mandatory for WeChat API. requests(..., json=payload) escapes Chinese as \\u5199\\u4e66. Always use data=json.dumps(..., ensure_ascii=False).encode('utf-8').\nTopic fidelity: Every revision preserves the article's 初心 (purpose statement in pipeline-state.json). Drift = FAIL."
      },
      {
        "title": "Image Counts by Type",
        "body": "TypeMinMax科普35教程36观点24资讯23"
      },
      {
        "title": "Review Dimensions",
        "body": "Reviewer scores 0-10 on craft-observable dimensions (not outcome predictions):\n\nDimensionWeightInsight Density (洞察密度)20%Originality (新鲜感)15%Emotional Resonance (情感共鸣)15%Completion Power (完读力)15%Voice (语感)10%Evidence (论据)10%Content Timeliness (内容时效性)10%Title (标题)5%\n\nPass: weighted_total ≥ 9.0, no dimension below 7, Originality ≥ 8.\n\nHard blockers (instant FAIL): 教材腔, 翻译腔, 鸡汤腔, 灌水, 模板化, 标题党.\n\nFull rubric with scoring criteria: references/reviewer-rubric.md"
      },
      {
        "title": "Architecture",
        "body": "Orchestrator (Main Agent) — routes, tracks, enforces gates\n    ├── Writer Subagent — drafts + revises (Opus model)\n    ├── Reviewer Subagent — blind scoring (Sonnet model)\n    ├── Fact-Checker Subagent — verifies claims via web search (Sonnet model)\n    └── article-illustrator — scrapbook images (after text passes)"
      },
      {
        "title": "Configuration",
        "body": "Configure via ~/.wechat-article-writer/config.json (generated by scripts/setup.sh):\n\nFieldDefaultDescriptiondefault_article_type\"教程\"Default article type (科普/教程/观点/资讯)wechat_secrets_path~/.wechat-article-writer/secrets.jsonPath to WeChat API credentialschrome_debug_port18800Chrome CDP port for browser automation (Path B)wechat_author—Author name shown in WeChat draftword_count_targetsSee defaultsMin/max word counts per article type\n\nSee references/data-layout.md for full config schema."
      },
      {
        "title": "References",
        "body": "FileWhen to loadreferences/writer-prompt.mdStep 2 (writing) and Step 4 (revision)references/reviewer-rubric.mdStep 3 (review) — full 8-dimension scoring criteriareferences/fact-checker-prompt.mdStep 5 — claim extraction, verification, correction protocolreferences/viral-article-traits.mdStep 2 — Writer self-check listreferences/pipeline-state.mdOn resume or compaction — state machine schema + protocolreferences/browser-automation.mdStep 9 — Two publishing paths: Path A (OpenClaw browser tool) and Path B (direct CDP). Includes base64 chunking, image insertion, save verification.references/LESSONS_LEARNED.mdHard-won lessons from production publishing sessions (escaping, selectors, mixed content, costs)references/data-layout.mdDirectory structure, slug generation, config/session schemasreferences/agent-config.mdSetup — Gateway, AGENTS.md, environment configreferences/quality-checks.mdSteps 3, 7 — content/format quality gatesreferences/figure-generation-guide.mdStep 8 — illustration placement heuristicsreferences/wechat-html-rules.mdStep 6 — what HTML/CSS works in WeChatreferences/templates.mdStep 1 — starting templates by article typereferences/voice-profile-schema.jsonStep 1 — voice profile field definitionsreferences/default-voice-profile.jsonStep 1 — fallback voice profile"
      }
    ],
    "body": "wechat-article-writer\n\n从选题到发布的公众号一体化写作工作流\n\nMulti-agent pipeline: Orchestrator delegates writing and reviewing to independent subagents. The orchestrator never writes or reviews — it routes, tracks versions, and enforces quality gates.\n\nSetup\nbash <skill-dir>/scripts/setup.sh <workspace-dir>\n\n\nInstalls: bun runtime, bundled baoyu renderer deps, and a persistent preview server (wechat-preview.service, port 8898, auto-restart).\n\nScope\n\nHandles: Topic research → Chinese-first writing → quality review → scrapbook illustrations → WeChat formatting → publishing to WeChat draft box (via Official Account API or CDP browser automation).\n\nDoes NOT handle: Git/version control, non-WeChat platforms, post-publish analytics, WeChat messaging/customer service.\n\nEnds at: Article saved to WeChat draft box. User publishes manually.\n\nCommands\n\nTrigger any command below, or see skill.yml for the full trigger pattern list.\n\nCommand\tWhat it does\nforge topic X\tResearch trending angles, propose 3 options with hooks\nforge write X\tFull pipeline: research → publish (9 steps)\nforge draft X\tWrite + format only, stop before illustrations/publish (steps 1-7)\nforge publish <slug>\tPublish an existing draft to WeChat\nforge preview <slug>\tRender preview, run format quality checks\nforge voice train\tAnalyze past articles to extract voice profile\nforge status\tShow pipeline status and pending drafts\n\nIf no subject given, loads from session.json (set by forge topic). See references/data-layout.md.\n\nPipeline (9 Steps)\n\nState persists to pipeline-state.json — survives compaction. See references/pipeline-state.md.\n\n#\tStep\tWho\tDetails\n1\tResearch + Prep\tOrchestrator\t(a) web_search for topic angles + 5-8 sources. (b) Verify each source exists (fetch title/authors/venue). Save as sources.json. (c) Load voice profile. (d) Generate outline (6-8 sections), save outline.md.\n2\tWrite\tWriter subagent\tChinese-first draft. Writer MUST cite only from sources.json or mark [UNVERIFIED]. See references/writer-prompt.md\n3\tReview\tReviewer subagent\tBlind 8-dimension craft scoring. See references/reviewer-rubric.md\n4a\tRevise (auto)\tWriter subagent\tMax 2 automated cycles. Loop back to Step 3 if score < threshold.\n4b\tRevise (human)\tHuman-in-the-loop\tIf still below threshold after 2 auto cycles, user provides direction. Pauses pipeline.\n5\tFact-check\tFact-Checker subagent\tVerify every claim via web search. Produces corrections + reference list. Max 2 fact-check cycles (corrections → re-verify). See references/fact-checker-prompt.md\n6\tFormat\tScript\tbash scripts/format.sh <draft-dir> [draft-file] [theme] — baoyu renderer (default theme: classic WeChat style). Themes: default/grace/simple. If fact-check required >3 text changes, Orchestrator does a spot re-review (Reviewer scores only changed paragraphs, not full article).\n7\tPreview\tHuman\tOpen http://<host>:8898/formatted.html (persistent preview server, systemd wechat-preview.service), await text approval\n8\tIllustrate + Embed\tarticle-illustrator + script\tGenerate scrapbook images (AFTER text approval). ~$0.06/article via Z.AI (preferred, ~$0.015/image) or ~$0.50 via OpenRouter.\n9\tPublish\tOrchestrator\tThree paths — check in order: (C) WeChat Official Account API via appid+appsecret (credentials at wechat_secrets_path in config.json) — preferred, most reliable; (A) OpenClaw browser tool with base64 chunking for macOS/Titan; or (B) direct CDP WebSocket for Linux/remote. Paths A+B use two-phase injection (text first, then images via clipboard blob paste). See references/browser-automation.md\nKey Rules\nWriter never self-reviews. Reviewer is blind — never sees outline or brief.\nIllustrations LAST. Most expensive step. Only after user approves text.\narticle-illustrator is the ONLY image method. Must follow full scrapbook pipeline: read references/scrapbook-prompt.md → generate JSON plan with 300-500 char descriptions → call generate.py. Never bare prompts. Prefer Z.AI provider ($0.015/image, 97.9% Chinese text accuracy) over OpenRouter ($0.12/image).\nTwo-phase image injection. Base64 images are stripped on save. Inject text-only HTML first, then insert each image at the correct position via clipboard blob paste (WeChat auto-uploads to CDN). Verify image count + positions after insertion.\nBrowser tool vs direct CDP. On macOS/Titan where OpenClaw manages the browser, you MUST use the browser tool (Path A). Playwright isolates page contexts — external CDP connections see zero targets. On Linux with standalone Chrome, use direct CDP (Path B). See references/browser-automation.md.\nBase64 chunking for browser tool. Raw HTML in the browser tool's fn parameter breaks due to escaping conflicts. Always base64-encode HTML, store in chunks via window._b, then atob() and inject. Track chunks_stored in pipeline state for compaction recovery.\nAlways save as draft. User publishes manually.\nCheck for WeChat API credentials first. If wechat_secrets_path credentials file (see config.json) exists, use Path C (API) — no browser required, more reliable. Fall back to Path A/B only if no credentials.\nensure_ascii=False is mandatory for WeChat API. requests(..., json=payload) escapes Chinese as \\u5199\\u4e66. Always use data=json.dumps(..., ensure_ascii=False).encode('utf-8').\nTopic fidelity: Every revision preserves the article's 初心 (purpose statement in pipeline-state.json). Drift = FAIL.\nImage Counts by Type\nType\tMin\tMax\n科普\t3\t5\n教程\t3\t6\n观点\t2\t4\n资讯\t2\t3\nReview Dimensions\n\nReviewer scores 0-10 on craft-observable dimensions (not outcome predictions):\n\nDimension\tWeight\nInsight Density (洞察密度)\t20%\nOriginality (新鲜感)\t15%\nEmotional Resonance (情感共鸣)\t15%\nCompletion Power (完读力)\t15%\nVoice (语感)\t10%\nEvidence (论据)\t10%\nContent Timeliness (内容时效性)\t10%\nTitle (标题)\t5%\n\nPass: weighted_total ≥ 9.0, no dimension below 7, Originality ≥ 8.\n\nHard blockers (instant FAIL): 教材腔, 翻译腔, 鸡汤腔, 灌水, 模板化, 标题党.\n\nFull rubric with scoring criteria: references/reviewer-rubric.md\n\nArchitecture\nOrchestrator (Main Agent) — routes, tracks, enforces gates\n    ├── Writer Subagent — drafts + revises (Opus model)\n    ├── Reviewer Subagent — blind scoring (Sonnet model)\n    ├── Fact-Checker Subagent — verifies claims via web search (Sonnet model)\n    └── article-illustrator — scrapbook images (after text passes)\n\nConfiguration\n\nConfigure via ~/.wechat-article-writer/config.json (generated by scripts/setup.sh):\n\nField\tDefault\tDescription\ndefault_article_type\t\"教程\"\tDefault article type (科普/教程/观点/资讯)\nwechat_secrets_path\t~/.wechat-article-writer/secrets.json\tPath to WeChat API credentials\nchrome_debug_port\t18800\tChrome CDP port for browser automation (Path B)\nwechat_author\t—\tAuthor name shown in WeChat draft\nword_count_targets\tSee defaults\tMin/max word counts per article type\n\nSee references/data-layout.md for full config schema.\n\nReferences\nFile\tWhen to load\nreferences/writer-prompt.md\tStep 2 (writing) and Step 4 (revision)\nreferences/reviewer-rubric.md\tStep 3 (review) — full 8-dimension scoring criteria\nreferences/fact-checker-prompt.md\tStep 5 — claim extraction, verification, correction protocol\nreferences/viral-article-traits.md\tStep 2 — Writer self-check list\nreferences/pipeline-state.md\tOn resume or compaction — state machine schema + protocol\nreferences/browser-automation.md\tStep 9 — Two publishing paths: Path A (OpenClaw browser tool) and Path B (direct CDP). Includes base64 chunking, image insertion, save verification.\nreferences/LESSONS_LEARNED.md\tHard-won lessons from production publishing sessions (escaping, selectors, mixed content, costs)\nreferences/data-layout.md\tDirectory structure, slug generation, config/session schemas\nreferences/agent-config.md\tSetup — Gateway, AGENTS.md, environment config\nreferences/quality-checks.md\tSteps 3, 7 — content/format quality gates\nreferences/figure-generation-guide.md\tStep 8 — illustration placement heuristics\nreferences/wechat-html-rules.md\tStep 6 — what HTML/CSS works in WeChat\nreferences/templates.md\tStep 1 — starting templates by article type\nreferences/voice-profile-schema.json\tStep 1 — voice profile field definitions\nreferences/default-voice-profile.json\tStep 1 — fallback voice profile"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/chunhualiao/wechat-article-forge",
    "publisherUrl": "https://clawhub.ai/chunhualiao/wechat-article-forge",
    "owner": "chunhualiao",
    "version": "2.4.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/wechat-article-forge",
    "downloadUrl": "https://openagent3.xyz/downloads/wechat-article-forge",
    "agentUrl": "https://openagent3.xyz/skills/wechat-article-forge/agent",
    "manifestUrl": "https://openagent3.xyz/skills/wechat-article-forge/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/wechat-article-forge/agent.md"
  }
}