{"id":"a489a72d-0eeb-4576-b04f-698063dc6a7e","entityType":"agent","slug":"clawhub-mr-q526-wechat-toolkit","name":"wechat-toolkit","canonicalUrl":"https://www.xpersona.co/agent/clawhub-mr-q526-wechat-toolkit","canonicalPath":"/agent/clawhub-mr-q526-wechat-toolkit","generatedAt":"2026-10-09T12:16:47.545Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-09T04:47:05.174Z","emptyReason":null},"description":"微信公众号一站式工具包 — 集成文章搜索、文章下载、AI洗稿改写、公众号发布四大功能。当用户需要搜索/下载/改写/发布微信公众号文章时使用。 Skill: wechat-toolkit Owner: mr-q526 Summary: 微信公众号一站式工具包 — 集成文章搜索、文章下载、AI洗稿改写、公众号发布四大功能。当用户需要搜索/下载/改写/发布微信公众号文章时使用。 Tags: latest:1.0.2 Version history: v1.0.2 | 2026-03-18T09:12:37.460Z | user - 新增 12 套内置公众号文章发布主题，实现 theme 目录 + 一键预览拼图/单图，便于选择和对比。 - 新增如下文件：主题 CSS（如 aurora.css、ember.css 等），主题预览图，主题预览 HTML，总览拼图，主题描述 JSON 与示例文档。 - 发布脚本支持 --list-themes 与 --generate-theme-previews，并详列预览目录和用法说明。 - SKILL 文档补充所有可用主题名、预览相关说明，","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 4.8K downloads reported by the source. Last updated 10/9/2026.","installCommand":"clawhub skill install s17324ax9fydwk7qwsx3smeapx83v630:wechat-toolkit","sourceUrl":"https://clawhub.ai/mr-q526/wechat-toolkit","homepage":"https://clawhub.ai/mr-q526/skills/wechat-toolkit","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/mr-q526/wechat-toolkit","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/mr-q526/skills/wechat-toolkit","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":67,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"微信公众号一站式工具包 — 集成文章搜索、文章下载、AI洗稿改写、公众号发布四大功能。当用户需要搜索/下载/改写/发布微信公众号文章时使用。 Skill: wechat-toolkit Owner: mr-q526 Summary: 微信公众号一站式工具包 — 集成文章搜索、文章下载、AI洗稿改写、公众号发布四大功能。"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-09T04:47:05.174Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T04:47:05.174Z","emptyReason":null},"stars":null,"forks":null,"downloads":4817,"packageName":null,"latestVersion":"1.0.2","tractionLabel":"4.8K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T04:47:05.174Z","emptyReason":null},"lastUpdatedAt":"2026-10-09T04:47:05.174Z","lastCrawledAt":"2026-10-09T04:47:05.174Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-10T04:47:05.174Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.2","createdAt":"2026-03-18T09:12:37.460Z","changelog":"- 新增 12 套内置公众号文章发布主题，实现 theme 目录 + 一键预览拼图/单图，便于选择和对比。 - 新增如下文件：主题 CSS（如 aurora.css、ember.css 等），主题预览图，主题预览 HTML，总览拼图，主题描述 JSON 与示例文档。 - 发布脚本支持 `--list-themes` 与 `--generate-theme-previews`，并详列预览目录和用法说明。 - SKILL 文档补充所有可用主题名、预览相关说明，以及高亮主题完整清单。","fileCount":19,"zipByteSize":48260},{"version":"1.0.1","createdAt":"2026-03-07T09:50:57.577Z","changelog":"- 新增对 Windows 的支持（platforms 字段更新）。 - 新增大量依赖和脚本文件，特别是下载器模块（downloader）。 - 发布器脚本由 shell/python 迁移为 Node.js 实现（publish.sh、publish_with_video.py、setup.sh 移除，新增 publish.js、publish_with_video.js）。 - README/文档同步更新，示例发布命令改为 Node.js 方式。","fileCount":11,"zipByteSize":35178},{"version":"1.0.0","createdAt":"2026-03-04T08:46:09.806Z","changelog":"Initial release: 搜索、下载、洗稿、发布四合一","fileCount":11,"zipByteSize":31655}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17324ax9fydwk7qwsx3smeapx83v630:wechat-toolkit","setupComplexity":"low","setupSteps":["Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-mr-q526-wechat-toolkit/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-mr-q526-wechat-toolkit/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-mr-q526-wechat-toolkit/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-mr-q526-wechat-toolkit/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-mr-q526-wechat-toolkit/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-mr-q526-wechat-toolkit/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-09T12:16:47.543Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-mr-q526-wechat-toolkit/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-mr-q526-wechat-toolkit/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-mr-q526-wechat-toolkit/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-mr-q526-wechat-toolkit/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-09T04:47:05.174Z","emptyReason":null},"readme":"Skill: wechat-toolkit\n\nOwner: mr-q526\n\nSummary: 微信公众号一站式工具包 — 集成文章搜索、文章下载、AI洗稿改写、公众号发布四大功能。当用户需要搜索/下载/改写/发布微信公众号文章时使用。\n\nTags: latest:1.0.2\n\nVersion history:\n\nv1.0.2 | 2026-03-18T09:12:37.460Z | user\n\n- 新增 12 套内置公众号文章发布主题，实现 theme 目录 + 一键预览拼图/单图，便于选择和对比。\n- 新增如下文件：主题 CSS（如 aurora.css、ember.css 等），主题预览图，主题预览 HTML，总览拼图，主题描述 JSON 与示例文档。\n- 发布脚本支持 `--list-themes` 与 `--generate-theme-previews`，并详列预览目录和用法说明。\n- SKILL 文档补充所有可用主题名、预览相关说明，以及高亮主题完整清单。\n\nv1.0.1 | 2026-03-07T09:50:57.577Z | user\n\n- 新增对 Windows 的支持（platforms 字段更新）。\n- 新增大量依赖和脚本文件，特别是下载器模块（downloader）。\n- 发布器脚本由 shell/python 迁移为 Node.js 实现（publish.sh、publish_with_video.py、setup.sh 移除，新增 publish.js、publish_with_video.js）。\n- README/文档同步更新，示例发布命令改为 Node.js 方式。\n\nv1.0.0 | 2026-03-04T08:46:09.806Z | user\n\nInitial release: 搜索、下载、洗稿、发布四合一\n\nArchive index:\n\nArchive v1.0.2: 19 files, 48260 bytes\n\nFiles: example.md (1020b), LICENSE.md (898b), README.md (5394b), references/themes.md (2838b), references/troubleshooting.md (5979b), scripts/downloader/download.js (17200b), scripts/downloader/package.json (230b), scripts/publisher/publish_with_video.js (19273b), scripts/publisher/publish.js (7549b), scripts/publisher/theme_catalog.js (14927b), scripts/publisher/theme_catalog.json (4553b), scripts/publisher/theme_preview_sample.md (1675b), scripts/publisher/themes/aurora.css (2410b), scripts/publisher/themes/ember.css (2233b), scripts/publisher/themes/newsroom.css (2208b), scripts/publisher/themes/sage.css (2263b), scripts/search/search_wechat.js (27165b), SKILL.md (12881b), _meta.json (133b)\n\nFile v1.0.2:SKILL.md\n\n---\nname: wechat-toolkit\ndescription: \"微信公众号一站式工具包 — 集成文章搜索、文章下载、AI洗稿改写、公众号发布四大功能。当用户需要搜索/下载/改写/发布微信公众号文章时使用。\"\nmetadata:\n  {\n    \"openclaw\":\n      {\n        \"emoji\": \"📦\",\n        \"requires\": { \"bins\": [\"node\"] },\n        \"platforms\": [\"macos\", \"linux\", \"windows\"],\n        \"install\":\n          [\n            {\n              \"id\": \"node-brew\",\n              \"kind\": \"brew\",\n              \"formula\": \"node\",\n              \"bins\": [\"node\"],\n              \"label\": \"Install Node.js (brew)\",\n            },\n          ],\n      },\n  }\n---\n\n# 📦 微信公众号工具包 (wechat-toolkit)\n\n集成四大功能模块：**搜索 → 下载 → 洗稿 → 发布**，覆盖公众号内容创作全流程。\n\n---\n\n## 模块一览\n\n| 模块 | 功能 | 触发词示例 |\n|------|------|-----------|\n| 🔍 搜索 | 按关键词搜索公众号文章 | \"搜XX的公众号文章\" |\n| 📰 下载 | 下载文章内容/图片/视频 | \"下载这篇公众号文章\" |\n| ✍️ 洗稿 | AI去痕迹+原创改写 | \"帮我洗稿/改写这篇文章\" |\n| 📱 发布 | 发布Markdown到草稿箱 | \"发布到公众号\" |\n\n---\n\n# 🔍 模块一：文章搜索\n\n通过搜狗微信搜索获取公众号文章列表，支持抓取正文。\n\n## 首次安装依赖\n\n```bash\nnpm install -g cheerio\n```\n\n## 使用方法\n\n```bash\n# 基础搜索\nnode {baseDir}/scripts/search/search_wechat.js \"关键词\"\n\n# 指定数量\nnode {baseDir}/scripts/search/search_wechat.js \"关键词\" -n 15\n\n# 保存到文件\nnode {baseDir}/scripts/search/search_wechat.js \"关键词\" -n 20 -o result.json\n\n# 解析真实链接\nnode {baseDir}/scripts/search/search_wechat.js \"关键词\" -n 5 -r\n\n# 抓取文章正文（自动启用 -r）\nnode {baseDir}/scripts/search/search_wechat.js \"关键词\" -n 5 -c\n```\n\n### 参数说明\n- `query`：搜索关键词（必填）\n- `-n, --num`：返回数量（默认 10，最大 50）\n- `-o, --output`：输出 JSON 文件路径\n- `-r, --resolve-url`：解析微信文章真实链接\n- `-c, --fetch-content`：抓取文章正文内容（自动启用 -r）\n\n### 输出字段\n- 文章标题、地址、概要、发布时间、来源公众号\n- `content`：正文内容（使用 -c 时）\n- `word_count`：字数统计（使用 -c 时）\n\n---\n\n# 📰 模块二：文章下载\n\n输入公众号文章链接，自动下载内容（Markdown+HTML）、配图和视频。\n\n## 首次安装依赖\n\n```bash\ncd {baseDir}/scripts/downloader && npm install\n```\n\n## 下载前：确认保存位置\n\n```bash\n# 查看当前配置\nnode {baseDir}/scripts/downloader/download.js --show-config\n\n# 设置默认下载路径（仅需一次）\nnode {baseDir}/scripts/downloader/download.js --set-output ~/Downloads/wechat-articles\n```\n\n- `\"isDefault\": true` → 尚未配置，需询问用户\n- `\"isDefault\": false` → 已配置，告知用户当前路径\n\n## 下载文章\n\n```bash\n# 使用默认路径\nnode {baseDir}/scripts/downloader/download.js \"<文章URL>\"\n\n# 临时指定路径\nnode {baseDir}/scripts/downloader/download.js \"<文章URL>\" --output <临时目录>\n\n# 跳过图片/视频\nnode {baseDir}/scripts/downloader/download.js \"<文章URL>\" --no-image\nnode {baseDir}/scripts/downloader/download.js \"<文章URL>\" --no-video\n```\n\n### 输出结构\n```\n<下载目录>/<文章标题>/\n├── content/article.html      # 完整 HTML\n├── metadata.json              # 标题、作者、时间等\n├── images/                    # 所有配图\n└── videos/                    # 所有视频/音频\n```\n\n### 前置要求\n- Node.js ≥ 18、Google Chrome、`npm install`（首次）\n\n---\n\n# ✍️ 模块三：文章洗稿与改写\n\n将文章改写为自然、原创的风格，去除 AI 写作痕迹，提升原创度。\n\n## 触发词\n- \"帮我洗稿这篇文章\"\n- \"改写成原创\"\n- \"降低查重率\"\n- \"去掉 AI 味\"\n\n## 洗稿工作流\n\n### 标准洗稿流程\n\n1. **获取原文** — 通过搜索（-c 抓正文）或下载获得原文\n2. **分析结构** — 识别文章类型、核心论点、段落层次\n3. **深度改写** — 按以下策略执行改写\n4. **添加 frontmatter** — 补充 title + cover\n5. **发布** — 推送到公众号草稿箱\n\n### 改写策略\n\n#### A. 结构重组（降重核心）\n- **段落重排**：调整段落顺序，打乱原文结构\n- **段落拆合**：将长段拆为短段，或合并碎片段落\n- **叙事角度转换**：时间线 ↔ 问题导向 ↔ 对比分析 ↔ 故事引入\n- **论据重组**：保留核心论据，改变展开方式\n\n#### B. 语言改写（去 AI 痕迹）\n- **删除意义膨胀句**：\"标志性\"、\"里程碑\"、\"深远影响\" → 替换为具体事实\n- **去虚假权威**：\"专家认为\"、\"业内普遍认为\" → 写明来源或删除\n- **去伪深度动词**：\"提升能力\"、\"赋能\"、\"推动进程\" → 改为具体动作\n- **去广告语气**：\"卓越\"、\"极致体验\"、\"全方位\" → 客观描述\n- **去 AI 高频词**：赋能、闭环、生态、抓手、底层逻辑、范式、沉淀、势能\n- **去填充短语**：事实上、值得注意的是、总体来说、不难发现\n- **去空洞结尾**：\"未来可期\"、\"值得期待\" → 实际结论或行动项\n\n#### C. 标题改写\n为每篇文章生成 3-5 个备选标题，涵盖：\n- **疑问型**：用问题引发好奇（\"为什么XX还在用这种方法？\"）\n- **数字型**：用数字增强可信度（\"3个被忽略的XX技巧\"）\n- **悬念型**：制造信息差（\"XX的真相，90%的人不知道\"）\n- **痛点型**：戳中读者痛点（\"别再XX了，试试这个方法\"）\n\n#### D. 开头改写\n将原文开头转换为以下风格之一：\n- **故事引入**：用一个小故事或场景切入\n- **数据引入**：用震撼数据开头\n- **痛点引入**：直击读者困扰\n- **反问引入**：抛出反直觉问题\n\n#### E. SEO 优化（可选）\n- 在标题和首段自然植入核心关键词\n- 在小标题中分布长尾关键词\n- 控制关键词密度（2%-5%），保持自然可读\n\n### AI 痕迹识别清单\n\n改写完成后，逐项检查：\n\n| # | 检查项 | 处理方式 |\n|---|--------|---------|\n| 1 | 意义膨胀句 | 替换为具体事实 |\n| 2 | 虚假权威引用 | 写明来源或删除 |\n| 3 | 伪深度动词 | 改为具体动作 |\n| 4 | 广告语气 | 客观描述 |\n| 5 | 模板段落（挑战→机遇→展望） | 删除模板，保留结论 |\n| 6 | AI 高频词密集出现 | 替换为日常用语 |\n| 7 | 负向并列滥用（不仅…而且…） | 直接表达 |\n| 8 | 三段式强拆 | 保留重点，删填充项 |\n| 9 | 同义词机械轮换 | 同一概念固定用词 |\n| 10 | 破折号滥用 | 改为句号或逗号 |\n| 11 | 加粗强调滥用 | 去掉不必要强调 |\n| 12 | 列表模板（**X：**…） | 合并为自然段 |\n| 13 | 概念堆砌标题 | 改为口语化标题 |\n| 14 | Emoji 泛滥 | 除非指定风格，默认删除 |\n| 15 | 聊天语残留 | 删除 |\n| 16 | 知识截止声明 | 删除 |\n| 17 | 过度讨好语气 | 客观回应 |\n| 18 | 填充短语 | 删除 |\n| 19 | 过度模糊（可能会、或许） | 改为条件判断 |\n| 20 | 空洞结尾 | 改为实际结论 |\n| 21 | 假区间表达（从…到…） | 列举具体事实 |\n\n### 输出格式\n\n1. **改写后全文**（Markdown 格式，含 frontmatter）\n2. **备选标题**（3-5 个）\n3. **修改说明**（可选，简要列出主要改动）\n\n### 判断标准\n\n改写成功的标志：\n- ✅ 读起来像真人写的，能直接朗读不拗口\n- ✅ 没有空洞句、模板段、\"像 AI\" 的气味\n- ✅ 信息密度高，每句话都有具体内容\n- ✅ 结构与原文明显不同\n- ✅ 保持原文核心信息完整性\n\n---\n\n# 📱 模块四：文章发布\n\n一键发布 Markdown 到微信公众号草稿箱，基于 wenyan-cli。\n\n## 首次安装\n\n```bash\nnpm install -g @wenyan-md/cli\n```\n\n## 配置 API 凭证\n\n确保环境变量已设置（或在 TOOLS.md 中配置）：\n```bash\nexport WECHAT_APP_ID=your_wechat_app_id\nexport WECHAT_APP_SECRET=your_wechat_app_secret\n```\n\n**重要：** IP 必须在微信公众号后台白名单中！\n\n## Markdown 格式要求\n\n文件顶部**必须**包含完整 frontmatter：\n\n```markdown\n---\ntitle: 文章标题（必填！）\ncover: https://example.com/cover.jpg  # 封面图（必填！）\n---\n\n# 正文...\n```\n\n⚠️ `title` 和 `cover` **缺一不可**，否则报错。\n\n**⚠️ 图片路径必须使用绝对路径**，避免 wenyan 路径解析问题。包括 cover 和正文中的所有图片引用：\n```markdown\ncover: /Users/minruiqing/photos/cover.jpg        # ✅ 绝对路径\ncover: ./assets/cover.jpg                         # ❌ 相对路径可能出错\n\n![配图](/Users/minruiqing/photos/image.jpg)       # ✅ 绝对路径\n![配图](./images/photo.jpg)                       # ❌ 相对路径可能出错\n```\n\n## 配图生成\n\n发布前，**主动询问用户是否需要生成配图**：\n\n> 📸 文章准备就绪！需要我帮你生成配图吗？\n> - 封面图（cover，建议 1080×864）\n> - 正文插图（根据段落主题生成）\n> - 不需要，直接发布\n\n**如果用户需要配图：**\n1. 根据文章标题和内容，生成合适的图片描述 prompt\n2. 调用用户提供的**生图 skill**（如 doubao-image、openai-image-gen 等）生成图片\n3. 将生成的图片保存到文章目录，使用**绝对路径**引用\n4. 封面图设置到 frontmatter 的 `cover` 字段\n5. 正文插图在合适位置插入 `![描述](绝对路径)`\n\n**prompt 建议：**\n- 封面图：与标题强相关，简洁有冲击力，适合小尺寸预览\n- 正文插图：与对应段落内容一致，辅助理解\n\n## 发布方式\n\n```bash\n# 方式 1: 使用 publish.js\nnode {baseDir}/scripts/publisher/publish.js /path/to/article.md\n\n# 方式 2: 直接用 wenyan-cli\nwenyan publish -f article.md -t lapis -h solarized-light\n\n# 方式 3: stdin（推荐，解决路径问题）\n# macOS/Linux:\ncat \"/path/to/article.md\" | WECHAT_APP_ID=xxx WECHAT_APP_SECRET=xxx wenyan publish -t lapis -h solarized-light\n\n# 方式 4: 含视频文章（必须用这个）\nnode {baseDir}/scripts/publisher/publish_with_video.js /path/to/article.md\n```\n\n## 主题选项\n\n先查看 wechat-toolkit 已整理好的主题目录：\n\n```bash\nnode {baseDir}/scripts/publisher/publish.js --list-themes\n```\n\n**Bundled 主题（12 个）**\n\n- 内置：`default`、`orangeheart`、`rainbow`、`lapis`、`pie`、`maize`、`purple`、`phycat`\n- 自定义：`aurora`、`newsroom`、`sage`、`ember`\n\n**代码高亮**：`atom-one-dark`、`atom-one-light`、`dracula`、`github`、`github-dark`、`monokai`、`solarized-dark`、`solarized-light`、`xcode`\n\n**主题预览（ClawHub 版本说明）**\n\n- ClawHub 发布包默认**不包含 PNG 预览图**，避免触发非文本文件限制和体积限制\n- 如果你本地想生成参考图，请运行：\n\n```bash\nnode {baseDir}/scripts/publisher/publish.js --generate-theme-previews\n```\n\n- 生成目录：`{baseDir}/scripts/publisher/theme_previews/`\n\n```bash\n# 使用 bundled 主题发布\nnode {baseDir}/scripts/publisher/publish.js article.md lapis\nnode {baseDir}/scripts/publisher/publish.js article.md aurora\n\n# 指定高亮主题\nnode {baseDir}/scripts/publisher/publish.js article.md newsroom github\n\n# 重新生成全部参考图\nnode {baseDir}/scripts/publisher/publish.js --generate-theme-previews\n```\n\n## 视频嵌入（关键）\n\n微信视频必须用 iframe + data-mpvid 格式，`publish_with_video.js` 已内置此逻辑。\n\nMarkdown 中引用：\n```markdown\n![视频描述](media/video.mp4)   # 自动上传并嵌入\n```\n\n## 故障排查\n\n| 问题 | 解决方法 |\n|------|---------|\n| IP 不在白名单 | `curl ifconfig.me` → 添加到公众号后台 |\n| wenyan 未安装 | `npm install -g @wenyan-md/cli` |\n| 环境变量未设置 | `export WECHAT_APP_ID=xxx` |\n| 缺少 frontmatter | 添加 title + cover |\n| 40001 token 失效 | 用 `publish_with_video.js`（已内置 token 管理） |\n\n---\n\n# 完整工作流示例\n\n## 搜索 → 洗稿 → 发布\n\n```\n1. 搜索文章：node {baseDir}/scripts/search/search_wechat.js \"AI教程\" -n 5 -c\n2. 选择目标文章，执行洗稿改写\n3. 保存为 Markdown（含 frontmatter）\n4. 发布：node {baseDir}/scripts/publisher/publish.js article.md\n```\n\n## 下载 → 洗稿 → 发布\n\n```\n1. 下载文章：node {baseDir}/scripts/downloader/download.js \"https://mp.weixin.qq.com/s/xxx\"\n2. 读取下载的 HTML/Markdown，执行洗稿改写\n3. 保存为 Markdown（含 frontmatter）\n4. 发布：node {baseDir}/scripts/publisher/publish.js article.md\n```\n\n---\n\n## 注意事项\n\n- 所有工具仅供个人学习使用，请遵守版权法规\n- 搜索功能内置防封禁机制（随机UA、请求延迟），请勿高频使用\n- 配置文件：下载器 `{baseDir}/scripts/downloader/config.json`\n\nFile v1.0.2:README.md\n\n# 📦 微信公众号工具包 (wechat-toolkit)\n\n> OpenClaw Skill — 微信公众号一站式工具包，集成 **搜索 → 下载 → 洗稿 → 发布** 四大功能，覆盖公众号内容创作全流程。\n>\n> 📦 **跨平台支持**: macOS / Linux / Windows（全部脚本基于 Node.js）\n\n---\n\n## ✨ 功能模块\n\n| 模块 | 功能 | 说明 |\n|------|------|------|\n| 🔍 **搜索** | 关键词搜索公众号文章 | 基于搜狗微信搜索，支持抓取正文 |\n| 📰 **下载** | 下载文章内容/配图/视频 | 输出 Markdown + HTML + 媒体文件 |\n| ✍️ **洗稿** | AI 去痕迹 + 原创改写 | 结构重组、语言改写、SEO 优化 |\n| 📱 **发布** | 一键发布到公众号草稿箱 | 基于 wenyan-cli，支持主题和视频嵌入 |\n\n---\n\n## 🚀 快速开始\n\n### 环境要求\n\n- **Node.js** ≥ 18\n- **Google Chrome**（下载模块需要）\n- [OpenClaw](https://github.com/anthropics/openclaw) 运行环境\n\n### 安装\n\n```bash\n# 1. 克隆仓库到 OpenClaw skills 目录\ngit clone git@github.com:Mr-Q526/openclaw-skill-wechat-toolkit.git skills/wechat-toolkit\n\n# 2. 安装搜索模块依赖\nnpm install -g cheerio\n\n# 3. 安装下载模块依赖\ncd skills/wechat-toolkit/scripts/downloader && npm install\n\n# 4. 安装发布模块依赖\nnpm install -g @wenyan-md/cli\n```\n\n---\n\n## 📖 使用方法\n\n### 🔍 搜索文章\n\n```bash\n# 基础搜索\nnode scripts/search/search_wechat.js \"关键词\"\n\n# 指定数量 + 抓取正文\nnode scripts/search/search_wechat.js \"关键词\" -n 5 -c\n\n# 保存结果\nnode scripts/search/search_wechat.js \"关键词\" -n 20 -o result.json\n```\n\n**参数：**\n- `-n, --num`：返回数量（默认 10，最大 50）\n- `-o, --output`：输出 JSON 文件路径\n- `-r, --resolve-url`：解析微信文章真实链接\n- `-c, --fetch-content`：抓取文章正文（自动启用 `-r`）\n\n### 📰 下载文章\n\n```bash\n# 设置默认下载路径（首次）\nnode scripts/downloader/download.js --set-output ~/Downloads/wechat-articles\n\n# 下载文章\nnode scripts/downloader/download.js \"https://mp.weixin.qq.com/s/xxx\"\n\n# 跳过图片/视频\nnode scripts/downloader/download.js \"https://mp.weixin.qq.com/s/xxx\" --no-image --no-video\n```\n\n**输出结构：**\n```\n<下载目录>/<文章标题>/\n├── content/article.html    # 完整 HTML\n├── metadata.json            # 元数据\n├── images/                  # 配图\n└── videos/                  # 视频/音频\n```\n\n### ✍️ 洗稿改写\n\n作为 OpenClaw Skill 使用，通过自然语言指令触发：\n\n- *\"帮我洗稿这篇文章\"*\n- *\"改写成原创\"*\n- *\"降低查重率\"*\n- *\"去掉 AI 味\"*\n\n**改写策略包括：** 结构重组、语言改写、标题优化、开头重写、SEO 优化等。\n\n### 📱 发布到公众号\n\n```bash\n# 配置（确保环境变量已设置）\nexport WECHAT_APP_ID=your_app_id\nexport WECHAT_APP_SECRET=your_app_secret\n\n# 发布（三种方式任选）\nnode scripts/publisher/publish.js /path/to/article.md\nwenyan publish -f article.md -t lapis -h solarized-light\nnode scripts/publisher/publish_with_video.js /path/to/article.md  # 含视频时使用\n```\n\n> ⚠️ **重要：** 你的 IP 必须添加到微信公众号后台白名单中！\n\n**Markdown 格式要求：**\n```markdown\n---\ntitle: 文章标题（必填）\ncover: /absolute/path/to/cover.jpg（必填，使用绝对路径）\n---\n\n# 正文内容...\n```\n\n---\n\n## 🖼️ 主题预览\n\nClawHub 发布包默认**不包含 PNG 预览图**，这样可以避免非文本文件限制和 50MB 体积限制。\n\n如果你本地想看每个主题的效果图，请在 skill 目录运行：\n\n```bash\nnode scripts/publisher/publish.js --generate-theme-previews\n```\n\n生成后会输出到：\n\n```bash\nscripts/publisher/theme_previews/\n```\n\n---\n\n## 📁 项目结构\n\n```\nwechat-toolkit/\n├── SKILL.md                        # OpenClaw Skill 定义\n├── README.md                       # 本文件\n├── example.md                      # 示例文章\n├── references/                     # 参考文档\n│   ├── themes.md                   #   主题配置说明\n│   └── troubleshooting.md          #   故障排查指南\n└── scripts/                        # 脚本目录（全部 Node.js，跨平台）\n    ├── search/                     #   搜索模块\n    │   └── search_wechat.js\n    ├── downloader/                 #   下载模块\n    │   └── download.js\n    └── publisher/                  #   发布模块\n        ├── publish.js              #   基础发布\n        └── publish_with_video.js   #   含视频发布\n```\n\n---\n\n## 🔧 故障排查\n\n| 问题 | 解决方法 |\n|------|----------|\n| IP 不在白名单 | `curl ifconfig.me` → 添加到公众号后台 |\n| wenyan 未安装 | `npm install -g @wenyan-md/cli` |\n| 环境变量未设置 | `export WECHAT_APP_ID=xxx` |\n| 缺少 frontmatter | 添加 `title` + `cover` 字段 |\n| 40001 token 失效 | 使用 `publish_with_video.js` |\n\n更多排查方法见 [`references/troubleshooting.md`](references/troubleshooting.md)\n\n---\n\n## ⚠️ 免责声明\n\n- 所有工具仅供**个人学习**使用，请遵守相关版权法规\n- 搜索功能内置防封禁机制（随机 UA、请求延迟），请勿高频使用\n\n---\n\n## 📄 License\n\nMIT-0\n\n> 发布到 ClawHub 时，请在上传界面接受 MIT-0 许可条款。\n\nFile v1.0.2:_meta.json\n\n{\n  \"ownerId\": \"kn757qqsc7myx5e40qvf212q918259v3\",\n  \"slug\": \"wechat-toolkit\",\n  \"version\": \"1.0.2\",\n  \"publishedAt\": 1773825157460\n}\n\nFile v1.0.2:references/themes.md\n\n# wechat-toolkit 主题参考\n\nwechat-toolkit 现在不只暴露 wenyan 的少数几个主题，而是维护了一份统一主题目录，发布、视频发布、参考图都走同一套配置。\n\n## 快速查看\n\n```bash\nnode scripts/publisher/publish.js --list-themes\nnode scripts/publisher/theme_catalog.js list\n```\n\n## 参考图\n\nClawHub 发布包默认**不附带 PNG 预览图**，避免非文本文件限制和 50MB 上传限制。\n\n如果你本地想生成主题预览，请运行：\n\n```bash\nnode scripts/publisher/publish.js --generate-theme-previews\n```\n\n生成后会得到：\n\n```bash\nscripts/publisher/theme_previews/theme-gallery.html\nscripts/publisher/theme_previews/theme-gallery.png\nscripts/publisher/theme_previews/<theme-id>.png\n```\n\n## Bundled 主题\n\n### 内置主题\n\n- `default` - 简洁稳妥，适合资讯、总结、日报\n- `orangeheart` - 暖色杂志感，适合人物、品牌、案例文章\n- `rainbow` - 色彩活泼，适合活动、清单、创意内容\n- `lapis` - 冷调科技蓝，适合教程、评测、工具介绍\n- `pie` - 现代锐利，适合观点、方法论、深度分析\n- `maize` - 浅暖纸感，适合教程、拆解、轻阅读\n- `purple` - 柔和优雅，适合专栏、随笔、访谈\n- `phycat` - 薄荷清新，适合科技资讯、产品上手、工具流\n\n### 自定义主题\n\n- `aurora` - 渐变标题和清爽层次，适合 AI 趋势、产品观察\n- `newsroom` - 报刊专栏风，适合评论、行业观察、长文\n- `sage` - 柔和笔记感，适合经验总结、个人成长、复盘\n- `ember` - 暖调杂志封面感，适合故事、案例、品牌内容\n\n## 推荐命令\n\n```bash\n# 默认稳妥\nnode scripts/publisher/publish.js article.md default\n\n# 技术/工具类\nnode scripts/publisher/publish.js article.md lapis\nnode scripts/publisher/publish.js article.md aurora\n\n# 长文/评论\nnode scripts/publisher/publish.js article.md pie\nnode scripts/publisher/publish.js article.md newsroom\n\n# 个人表达/复盘\nnode scripts/publisher/publish.js article.md purple\nnode scripts/publisher/publish.js article.md sage\n\n# 暖色案例/品牌文\nnode scripts/publisher/publish.js article.md orangeheart\nnode scripts/publisher/publish.js article.md ember\n```\n\n## 代码高亮主题\n\n- `atom-one-dark`\n- `atom-one-light`\n- `dracula`\n- `github`\n- `github-dark`\n- `monokai`\n- `solarized-dark`\n- `solarized-light`\n- `xcode`\n\n## 自定义 CSS 主题\n\n除了 bundled 主题外，也支持直接传 CSS 路径：\n\n```bash\nnode scripts/publisher/publish.js article.md /absolute/path/to/theme.css\nnode scripts/publisher/publish_with_video.js article.md /absolute/path/to/theme.css\n```\n\n## 原生 wenyan 能力\n\n如果你要管理 wenyan 自己安装的主题：\n\n```bash\nwenyan theme -l\nwenyan theme --add --name my-theme --path /path/to/theme.css\nwenyan theme --rm my-theme\n```\n\nFile v1.0.2:references/troubleshooting.md\n\n# 故障排查指南\n\nwechat-publisher skill 的常见问题和解决方案。\n\n## 1. ❌ IP 不在白名单\n\n**错误信息：**\n```\nError: ip not in whitelist\n```\n\n**原因：** 你的 IP 地址未添加到微信公众号后台白名单。\n\n**解决方法：**\n\n1. **获取你的公网 IP：**\n   ```bash\n   curl ifconfig.me\n   ```\n\n2. **登录微信公众号后台：** https://mp.weixin.qq.com/\n\n3. **添加 IP 白名单：**\n   - 开发 → 基本配置\n   - IP 白名单 → 添加你的 IP\n\n4. **重试发布**\n\n**详细说明：** https://yuzhi.tech/docs/wenyan/upload\n\n---\n\n## 2. ❌ wenyan-cli 未安装\n\n**错误信息：**\n```\nwenyan: command not found\n```\n\n**解决方法：**\n```bash\nnpm install -g @wenyan-md/cli\n```\n\n**验证安装：**\n```bash\nwenyan --help\n```\n\n---\n\n## 3. ❌ 环境变量未设置\n\n**错误信息：**\n```\nError: WECHAT_APP_ID is required\n```\n\n**解决方法：**\n\n**方式 1: 使用 setup.sh**\n```bash\ncd /Users/leebot/.openclaw/workspace/wechat-publisher\nsource ./scripts/setup.sh\n```\n\n**方式 2: 手动设置（临时）**\n```bash\nexport WECHAT_APP_ID=your_wechat_app_id\nexport WECHAT_APP_SECRET=your_wechat_app_secret\n```\n\n**方式 3: 永久设置**\n\n编辑 `~/.zshrc` 或 `~/.bashrc`，添加：\n```bash\nexport WECHAT_APP_ID=your_wechat_app_id\nexport WECHAT_APP_SECRET=your_wechat_app_secret\n```\n\n然后：\n```bash\nsource ~/.zshrc  # 或 source ~/.bashrc\n```\n\n---\n\n## 4. ❌ Frontmatter 缺失（最常见！）\n\n**错误信息：**\n```\nError: 未能找到文章封面\n```\n\n**原因：** Markdown 文件缺少必需的 frontmatter（特别是 `title` 字段）。\n\n**⚠️ 重要：** wenyan-cli **强制要求** frontmatter，必须在 Markdown 文件顶部添加！\n\n**解决方法：**\n\n**方案 1：有封面图**\n```markdown\n---\ntitle: 你的文章标题\ncover: /path/to/cover.jpg\n---\n\n# 正文开始\n...\n```\n\n**方案 2：无封面图（推荐，正文有图片即可）**\n```markdown\n---\ntitle: 你的文章标题\n---\n\n# 正文\n\n![配图](https://example.com/image.jpg)  # 正文图片会自动上传\n\n内容...\n```\n\n**⚠️ 关键点：**\n- `title` 字段是**必须的**，缺少会报错 \"未能找到文章封面\"\n- `cover` 字段可选：如果正文中有图片，wenyan 会自动使用第一张图作为封面\n- frontmatter 必须在文件最顶部，前面不能有空行或其他内容\n- frontmatter 使用三个短横线 `---` 包围\n\n**错误示例（会报错）：**\n```markdown\n# 我的文章\n\n没有 frontmatter，wenyan 会报错！\n```\n\n---\n\n## 5. ❌ 图片上传失败\n\n**错误信息：**\n```\nError: Failed to upload image\n```\n\n**可能原因：**\n\n1. **图片路径错误** - 检查本地路径是否正确\n2. **图片格式不支持** - 微信支持 jpg/png/gif\n3. **图片过大** - 微信限制单张图片 < 10MB\n4. **网络图片无法访问** - 检查 URL 是否可访问\n\n**解决方法：**\n\n1. **检查图片路径：**\n   ```bash\n   ls -lh /path/to/image.jpg\n   ```\n\n2. **检查图片格式：**\n   ```bash\n   file /path/to/image.jpg\n   ```\n\n3. **压缩图片（如果过大）：**\n   ```bash\n   # 使用 ImageMagick\n   convert large.jpg -quality 80 -resize 1200x compressed.jpg\n   ```\n\n4. **测试网络图片：**\n   ```bash\n   curl -I https://example.com/image.jpg\n   ```\n\n---\n\n## 6. ❌ API 凭证错误\n\n**错误信息：**\n```\nError: invalid credential\n```\n\n**原因：** AppID 或 AppSecret 错误。\n\n**解决方法：**\n\n1. **检查 TOOLS.md 中的凭证是否正确**\n\n2. **重新获取凭证：**\n   - 登录：https://mp.weixin.qq.com/\n   - 开发 → 基本配置\n   - 查看 AppID 和 AppSecret\n\n3. **更新环境变量**\n\n4. **重试发布**\n\n---\n\n## 7. ❌ Node.js 版本过低\n\n**错误信息：**\n```\nError: Requires Node.js >= 14.0.0\n```\n\n**解决方法：**\n\n1. **检查当前版本：**\n   ```bash\n   node --version\n   ```\n\n2. **升级 Node.js：**\n   ```bash\n   # 使用 Homebrew (macOS)\n   brew upgrade node\n   \n   # 或使用 nvm\n   nvm install stable\n   nvm use stable\n   ```\n\n---\n\n## 8. ❌ 网络连接问题\n\n**错误信息：**\n```\nError: connect ETIMEDOUT\n```\n\n**可能原因：**\n\n1. **网络不稳定** - 检查网络连接\n2. **防火墙阻止** - 检查防火墙设置\n3. **微信 API 服务异常** - 稍后重试\n\n**解决方法：**\n\n1. **测试网络连接：**\n   ```bash\n   curl -I https://api.weixin.qq.com\n   ```\n\n2. **使用代理（如需要）：**\n   ```bash\n   export HTTP_PROXY=http://proxy:port\n   export HTTPS_PROXY=http://proxy:port\n   ```\n\n3. **重试发布**\n\n---\n\n## 9. 🐛 调试模式\n\n如果以上方法都不行，启用详细日志：\n\n```bash\n# 设置详细日志\nexport DEBUG=wenyan:*\n\n# 运行发布\nwenyan publish -f article.md -t lapis -h solarized-light\n```\n\n查看完整错误信息，然后：\n- 检查 wenyan-cli GitHub Issues: https://github.com/caol64/wenyan-cli/issues\n- 或提交新 Issue\n\n---\n\n## 10. 📞 获取帮助\n\n**wenyan-cli 帮助：**\n```bash\nwenyan --help\nwenyan publish --help\nwenyan theme --help\n```\n\n**wechat-publisher 帮助：**\n```bash\ncd /Users/leebot/.openclaw/workspace/wechat-publisher\n./scripts/publish.sh --help\n```\n\n**参考资料：**\n- wenyan-cli GitHub: https://github.com/caol64/wenyan-cli\n- wenyan 官网: https://wenyan.yuzhi.tech\n- 微信公众号开发文档: https://developers.weixin.qq.com/doc/offiaccount/\n\n---\n\n## 💡 最佳实践\n\n**1. 始终添加 frontmatter**\n```markdown\n---\ntitle: 文章标题（必填！）\n---\n```\n\n**2. 正文添加至少一张图片**\n- wenyan 会自动使用第一张图作为封面\n- 图片会自动上传到微信图床\n\n**3. 测试流程**\n```bash\n# 1. 先用 render 测试（不发布）\nwenyan render -f article.md\n\n# 2. 确认无误后再 publish\nwenyan publish -f article.md -t lapis -h solarized-light\n```\n\n**4. 检查列表**\n- ✅ frontmatter 中有 title\n- ✅ 正文有至少一张图片（或 frontmatter 有 cover）\n- ✅ 环境变量已设置\n- ✅ IP 在白名单中\n\n---\n\n**如果问题仍未解决，请联系 Bruce 或提交 Issue。**\n\nFile v1.0.2:scripts/downloader/package.json\n\n{\n    \"name\": \"wechat-article-downloader-skill\",\n    \"version\": \"1.0.0\",\n    \"description\": \"微信公众号文章下载器 - OpenClaw Skill\",\n    \"type\": \"module\",\n    \"dependencies\": {\n        \"puppeteer-core\": \"^24.0.0\"\n    }\n}\n\nFile v1.0.2:scripts/publisher/theme_catalog.json\n\n{\n  \"default_theme\": \"lapis\",\n  \"default_highlight\": \"solarized-light\",\n  \"themes\": [\n    {\n      \"id\": \"lapis\",\n      \"label\": \"Lapis\",\n      \"name_zh\": \"青金石\",\n      \"source\": \"builtin\",\n      \"wenyan_theme\": \"lapis\",\n      \"highlight\": \"solarized-light\",\n      \"description\": \"冷调科技蓝，适合教程、评测、工具介绍。\",\n      \"preview_background\": \"linear-gradient(135deg, #eff6ff 0%, #dbeafe 100%)\",\n      \"accent\": \"#4870ac\"\n    },\n    {\n      \"id\": \"default\",\n      \"label\": \"Default\",\n      \"name_zh\": \"默认\",\n      \"source\": \"builtin\",\n      \"wenyan_theme\": \"default\",\n      \"highlight\": \"github\",\n      \"description\": \"简洁稳妥，适合资讯、总结、日报。\",\n      \"preview_background\": \"linear-gradient(135deg, #f8fafc 0%, #e2e8f0 100%)\",\n      \"accent\": \"#374151\"\n    },\n    {\n      \"id\": \"orangeheart\",\n      \"label\": \"Orangeheart\",\n      \"name_zh\": \"暖橙\",\n      \"source\": \"builtin\",\n      \"wenyan_theme\": \"orangeheart\",\n      \"highlight\": \"github\",\n      \"description\": \"暖色杂志感，适合人物、品牌、案例文章。\",\n      \"preview_background\": \"linear-gradient(135deg, #fff7ed 0%, #ffedd5 100%)\",\n      \"accent\": \"#ea580c\"\n    },\n    {\n      \"id\": \"rainbow\",\n      \"label\": \"Rainbow\",\n      \"name_zh\": \"彩虹\",\n      \"source\": \"builtin\",\n      \"wenyan_theme\": \"rainbow\",\n      \"highlight\": \"atom-one-light\",\n      \"description\": \"色彩活泼，适合活动、清单、创意内容。\",\n      \"preview_background\": \"linear-gradient(135deg, #fef3c7 0%, #ede9fe 50%, #dbeafe 100%)\",\n      \"accent\": \"#7c3aed\"\n    },\n    {\n      \"id\": \"pie\",\n      \"label\": \"Pie\",\n      \"name_zh\": \"少数派风\",\n      \"source\": \"builtin\",\n      \"wenyan_theme\": \"pie\",\n      \"highlight\": \"github\",\n      \"description\": \"现代锐利，适合观点、方法论、深度分析。\",\n      \"preview_background\": \"linear-gradient(135deg, #f5f3ff 0%, #ede9fe 100%)\",\n      \"accent\": \"#6d28d9\"\n    },\n    {\n      \"id\": \"maize\",\n      \"label\": \"Maize\",\n      \"name_zh\": \"玉米黄\",\n      \"source\": \"builtin\",\n      \"wenyan_theme\": \"maize\",\n      \"highlight\": \"xcode\",\n      \"description\": \"浅暖纸感，适合教程、拆解、轻阅读。\",\n      \"preview_background\": \"linear-gradient(135deg, #fffaf0 0%, #fef3c7 100%)\",\n      \"accent\": \"#d97706\"\n    },\n    {\n      \"id\": \"purple\",\n      \"label\": \"Purple\",\n      \"name_zh\": \"优雅紫\",\n      \"source\": \"builtin\",\n      \"wenyan_theme\": \"purple\",\n      \"highlight\": \"atom-one-light\",\n      \"description\": \"柔和优雅，适合专栏、随笔、访谈。\",\n      \"preview_background\": \"linear-gradient(135deg, #faf5ff 0%, #ede9fe 100%)\",\n      \"accent\": \"#7c3aed\"\n    },\n    {\n      \"id\": \"phycat\",\n      \"label\": \"Phycat\",\n      \"name_zh\": \"薄荷猫\",\n      \"source\": \"builtin\",\n      \"wenyan_theme\": \"phycat\",\n      \"highlight\": \"dracula\",\n      \"description\": \"薄荷清新，适合科技资讯、产品上手、工具流。\",\n      \"preview_background\": \"linear-gradient(135deg, #ecfdf5 0%, #d1fae5 100%)\",\n      \"accent\": \"#059669\"\n    },\n    {\n      \"id\": \"aurora\",\n      \"label\": \"Aurora\",\n      \"name_zh\": \"极光\",\n      \"source\": \"custom\",\n      \"css_path\": \"themes/aurora.css\",\n      \"highlight\": \"github\",\n      \"description\": \"渐变标题和清爽层次，适合 AI 趋势、产品观察。\",\n      \"preview_background\": \"linear-gradient(135deg, #ecfeff 0%, #d1fae5 100%)\",\n      \"accent\": \"#0f766e\"\n    },\n    {\n      \"id\": \"newsroom\",\n      \"label\": \"Newsroom\",\n      \"name_zh\": \"报刊室\",\n      \"source\": \"custom\",\n      \"css_path\": \"themes/newsroom.css\",\n      \"highlight\": \"github\",\n      \"description\": \"报刊专栏风，适合评论、行业观察、长文。\",\n      \"preview_background\": \"linear-gradient(135deg, #fafaf9 0%, #e7e5e4 100%)\",\n      \"accent\": \"#991b1b\"\n    },\n    {\n      \"id\": \"sage\",\n      \"label\": \"Sage\",\n      \"name_zh\": \"手记绿\",\n      \"source\": \"custom\",\n      \"css_path\": \"themes/sage.css\",\n      \"highlight\": \"xcode\",\n      \"description\": \"柔和笔记感，适合经验总结、个人成长、复盘。\",\n      \"preview_background\": \"linear-gradient(135deg, #f0fdf4 0%, #dcfce7 100%)\",\n      \"accent\": \"#166534\"\n    },\n    {\n      \"id\": \"ember\",\n      \"label\": \"Ember\",\n      \"name_zh\": \"余烬\",\n      \"source\": \"custom\",\n      \"css_path\": \"themes/ember.css\",\n      \"highlight\": \"atom-one-light\",\n      \"description\": \"暖调杂志封面感，适合故事、案例、品牌内容。\",\n      \"preview_background\": \"linear-gradient(135deg, #fff7ed 0%, #fde68a 100%)\",\n      \"accent\": \"#b45309\"\n    }\n  ]\n}\n\nFile v1.0.2:scripts/publisher/theme_preview_sample.md\n\n---\ntitle: AI 内容工具，怎么写得像真人\ncover: https://example.com/cover.jpg\n---\n\n# AI 内容工具，怎么写得像真人\n\n很多内容工具的问题不在于写不出来，而在于写出来以后太像模板。段落很完整，句子也通顺，但读者一眼就知道这不是一个真正做过内容的人写的。\n\n## 先判断一件事\n\n如果一句话删掉之后，信息没有任何损失，它大概率就是填充句。真正好用的文章，应该让每一段都推进一个具体判断。\n\n> 好的公众号文章不是“看起来很完整”，而是“读完能带走一个明确结论”。\n\n### 常见问题\n\n- 标题太大，正文太空\n- 结构整齐，但没有重点\n- 结尾只有态度，没有行动建议\n\n## 更稳的写法\n\n1. 开头先交代用户为什么要继续读\n2. 中间给出判断标准和真实例子\n3. 结尾告诉用户下一步怎么做\n\n| 维度 | 容易踩坑的写法 | 更好的写法 |\n| --- | --- | --- |\n| 标题 | 宏大、空泛、像口号 | 直接说明收益或问题 |\n| 段落 | 每段都在重复立场 | 每段只推进一个信息点 |\n| 结尾 | 只有总结，没有动作 | 给出明确操作建议 |\n\n## 一个很实用的检查动作\n\n把文章里所有“值得注意的是”“不难发现”“未来可期”这类句子圈出来。如果删掉以后文章更紧凑，说明它们本来就不该留。\n\n```bash\nwenyan publish -f article.md -t lapis -h solarized-light\n```\n\n## 最后留一个动作\n\n如果你准备把这篇文章发到公众号，先挑一个主题预览一遍，再决定要不要发布。选主题不是装饰，它会直接影响文章的阅读节奏和专业感。\n\nFile v1.0.2:example.md\n\n---\ntitle: wechat-publisher 测试文章\ncover: ./assets/default-cover.jpg\n---\n\n# wechat-publisher Skill 测试\n\n欢迎使用 **wechat-publisher** skill！\n\n## 核心功能\n\n### 1. Markdown 自动转换\n- 标准 Markdown 转换为微信公众号格式\n- 自动处理样式和排版\n- 支持多种主题\n\n### 2. 图片自动上传\n- 本地图片自动上传\n- 网络图片自动处理\n- 无需手动操作\n\n### 3. 一键发布\n```bash\nnode ./scripts/publisher/publish.js example.md\n```\n\n## 代码示例\n\n```python\ndef publish_article(file):\n    \"\"\"发布到微信公众号\"\"\"\n    return wenyan.publish(file)\n```\n\n## 使用步骤\n\n1. 配置凭证（TOOLS.md）\n2. 准备 Markdown 文件\n3. 运行发布脚本\n\n## 封面图说明\n\n本测试文章使用相对路径引用封面：\n```markdown\ncover: ./assets/default-cover.jpg\n```\n\n这样发布到 GitHub 后，其他用户克隆 skill 也能直接使用！\n\n## 测试总结\n\n如果看到这篇文章，说明 skill 工作正常！\n\n---\n\n*由 wechat-publisher 自动发布*\n\nFile v1.0.2:LICENSE.md\n\nMIT No Attribution\n\nCopyright (c) 2026\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this\nsoftware and associated documentation files (the \"Software\"), to deal in the Software\nwithout restriction, including without limitation the rights to use, copy, modify,\nmerge, publish, distribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\nINCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A\nPARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\nHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR\nTHE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nArchive v1.0.1: 11 files, 35178 bytes\n\nFiles: example.md (1020b), README.md (4946b), references/themes.md (2347b), references/troubleshooting.md (5979b), scripts/downloader/download.js (17200b), scripts/downloader/package.json (230b), scripts/publisher/publish_with_video.js (18713b), scripts/publisher/publish.js (6654b), scripts/search/search_wechat.js (27165b), SKILL.md (11988b), _meta.json (133b)\n\nFile v1.0.1:SKILL.md\n\n---\nname: wechat-toolkit\ndescription: \"微信公众号一站式工具包 — 集成文章搜索、文章下载、AI洗稿改写、公众号发布四大功能。当用户需要搜索/下载/改写/发布微信公众号文章时使用。\"\nmetadata:\n  {\n    \"openclaw\":\n      {\n        \"emoji\": \"📦\",\n        \"requires\": { \"bins\": [\"node\"] },\n        \"platforms\": [\"macos\", \"linux\", \"windows\"],\n        \"install\":\n          [\n            {\n              \"id\": \"node-brew\",\n              \"kind\": \"brew\",\n              \"formula\": \"node\",\n              \"bins\": [\"node\"],\n              \"label\": \"Install Node.js (brew)\",\n            },\n          ],\n      },\n  }\n---\n\n# 📦 微信公众号工具包 (wechat-toolkit)\n\n集成四大功能模块：**搜索 → 下载 → 洗稿 → 发布**，覆盖公众号内容创作全流程。\n\n---\n\n## 模块一览\n\n| 模块 | 功能 | 触发词示例 |\n|------|------|-----------|\n| 🔍 搜索 | 按关键词搜索公众号文章 | \"搜XX的公众号文章\" |\n| 📰 下载 | 下载文章内容/图片/视频 | \"下载这篇公众号文章\" |\n| ✍️ 洗稿 | AI去痕迹+原创改写 | \"帮我洗稿/改写这篇文章\" |\n| 📱 发布 | 发布Markdown到草稿箱 | \"发布到公众号\" |\n\n---\n\n# 🔍 模块一：文章搜索\n\n通过搜狗微信搜索获取公众号文章列表，支持抓取正文。\n\n## 首次安装依赖\n\n```bash\nnpm install -g cheerio\n```\n\n## 使用方法\n\n```bash\n# 基础搜索\nnode {baseDir}/scripts/search/search_wechat.js \"关键词\"\n\n# 指定数量\nnode {baseDir}/scripts/search/search_wechat.js \"关键词\" -n 15\n\n# 保存到文件\nnode {baseDir}/scripts/search/search_wechat.js \"关键词\" -n 20 -o result.json\n\n# 解析真实链接\nnode {baseDir}/scripts/search/search_wechat.js \"关键词\" -n 5 -r\n\n# 抓取文章正文（自动启用 -r）\nnode {baseDir}/scripts/search/search_wechat.js \"关键词\" -n 5 -c\n```\n\n### 参数说明\n- `query`：搜索关键词（必填）\n- `-n, --num`：返回数量（默认 10，最大 50）\n- `-o, --output`：输出 JSON 文件路径\n- `-r, --resolve-url`：解析微信文章真实链接\n- `-c, --fetch-content`：抓取文章正文内容（自动启用 -r）\n\n### 输出字段\n- 文章标题、地址、概要、发布时间、来源公众号\n- `content`：正文内容（使用 -c 时）\n- `word_count`：字数统计（使用 -c 时）\n\n---\n\n# 📰 模块二：文章下载\n\n输入公众号文章链接，自动下载内容（Markdown+HTML）、配图和视频。\n\n## 首次安装依赖\n\n```bash\ncd {baseDir}/scripts/downloader && npm install\n```\n\n## 下载前：确认保存位置\n\n```bash\n# 查看当前配置\nnode {baseDir}/scripts/downloader/download.js --show-config\n\n# 设置默认下载路径（仅需一次）\nnode {baseDir}/scripts/downloader/download.js --set-output ~/Downloads/wechat-articles\n```\n\n- `\"isDefault\": true` → 尚未配置，需询问用户\n- `\"isDefault\": false` → 已配置，告知用户当前路径\n\n## 下载文章\n\n```bash\n# 使用默认路径\nnode {baseDir}/scripts/downloader/download.js \"<文章URL>\"\n\n# 临时指定路径\nnode {baseDir}/scripts/downloader/download.js \"<文章URL>\" --output <临时目录>\n\n# 跳过图片/视频\nnode {baseDir}/scripts/downloader/download.js \"<文章URL>\" --no-image\nnode {baseDir}/scripts/downloader/download.js \"<文章URL>\" --no-video\n```\n\n### 输出结构\n```\n<下载目录>/<文章标题>/\n├── content/article.html      # 完整 HTML\n├── metadata.json              # 标题、作者、时间等\n├── images/                    # 所有配图\n└── videos/                    # 所有视频/音频\n```\n\n### 前置要求\n- Node.js ≥ 18、Google Chrome、`npm install`（首次）\n\n---\n\n# ✍️ 模块三：文章洗稿与改写\n\n将文章改写为自然、原创的风格，去除 AI 写作痕迹，提升原创度。\n\n## 触发词\n- \"帮我洗稿这篇文章\"\n- \"改写成原创\"\n- \"降低查重率\"\n- \"去掉 AI 味\"\n\n## 洗稿工作流\n\n### 标准洗稿流程\n\n1. **获取原文** — 通过搜索（-c 抓正文）或下载获得原文\n2. **分析结构** — 识别文章类型、核心论点、段落层次\n3. **深度改写** — 按以下策略执行改写\n4. **添加 frontmatter** — 补充 title + cover\n5. **发布** — 推送到公众号草稿箱\n\n### 改写策略\n\n#### A. 结构重组（降重核心）\n- **段落重排**：调整段落顺序，打乱原文结构\n- **段落拆合**：将长段拆为短段，或合并碎片段落\n- **叙事角度转换**：时间线 ↔ 问题导向 ↔ 对比分析 ↔ 故事引入\n- **论据重组**：保留核心论据，改变展开方式\n\n#### B. 语言改写（去 AI 痕迹）\n- **删除意义膨胀句**：\"标志性\"、\"里程碑\"、\"深远影响\" → 替换为具体事实\n- **去虚假权威**：\"专家认为\"、\"业内普遍认为\" → 写明来源或删除\n- **去伪深度动词**：\"提升能力\"、\"赋能\"、\"推动进程\" → 改为具体动作\n- **去广告语气**：\"卓越\"、\"极致体验\"、\"全方位\" → 客观描述\n- **去 AI 高频词**：赋能、闭环、生态、抓手、底层逻辑、范式、沉淀、势能\n- **去填充短语**：事实上、值得注意的是、总体来说、不难发现\n- **去空洞结尾**：\"未来可期\"、\"值得期待\" → 实际结论或行动项\n\n#### C. 标题改写\n为每篇文章生成 3-5 个备选标题，涵盖：\n- **疑问型**：用问题引发好奇（\"为什么XX还在用这种方法？\"）\n- **数字型**：用数字增强可信度（\"3个被忽略的XX技巧\"）\n- **悬念型**：制造信息差（\"XX的真相，90%的人不知道\"）\n- **痛点型**：戳中读者痛点（\"别再XX了，试试这个方法\"）\n\n#### D. 开头改写\n将原文开头转换为以下风格之一：\n- **故事引入**：用一个小故事或场景切入\n- **数据引入**：用震撼数据开头\n- **痛点引入**：直击读者困扰\n- **反问引入**：抛出反直觉问题\n\n#### E. SEO 优化（可选）\n- 在标题和首段自然植入核心关键词\n- 在小标题中分布长尾关键词\n- 控制关键词密度（2%-5%），保持自然可读\n\n### AI 痕迹识别清单\n\n改写完成后，逐项检查：\n\n| # | 检查项 | 处理方式 |\n|---|--------|---------|\n| 1 | 意义膨胀句 | 替换为具体事实 |\n| 2 | 虚假权威引用 | 写明来源或删除 |\n| 3 | 伪深度动词 | 改为具体动作 |\n| 4 | 广告语气 | 客观描述 |\n| 5 | 模板段落（挑战→机遇→展望） | 删除模板，保留结论 |\n| 6 | AI 高频词密集出现 | 替换为日常用语 |\n| 7 | 负向并列滥用（不仅…而且…） | 直接表达 |\n| 8 | 三段式强拆 | 保留重点，删填充项 |\n| 9 | 同义词机械轮换 | 同一概念固定用词 |\n| 10 | 破折号滥用 | 改为句号或逗号 |\n| 11 | 加粗强调滥用 | 去掉不必要强调 |\n| 12 | 列表模板（**X：**…） | 合并为自然段 |\n| 13 | 概念堆砌标题 | 改为口语化标题 |\n| 14 | Emoji 泛滥 | 除非指定风格，默认删除 |\n| 15 | 聊天语残留 | 删除 |\n| 16 | 知识截止声明 | 删除 |\n| 17 | 过度讨好语气 | 客观回应 |\n| 18 | 填充短语 | 删除 |\n| 19 | 过度模糊（可能会、或许） | 改为条件判断 |\n| 20 | 空洞结尾 | 改为实际结论 |\n| 21 | 假区间表达（从…到…） | 列举具体事实 |\n\n### 输出格式\n\n1. **改写后全文**（Markdown 格式，含 frontmatter）\n2. **备选标题**（3-5 个）\n3. **修改说明**（可选，简要列出主要改动）\n\n### 判断标准\n\n改写成功的标志：\n- ✅ 读起来像真人写的，能直接朗读不拗口\n- ✅ 没有空洞句、模板段、\"像 AI\" 的气味\n- ✅ 信息密度高，每句话都有具体内容\n- ✅ 结构与原文明显不同\n- ✅ 保持原文核心信息完整性\n\n---\n\n# 📱 模块四：文章发布\n\n一键发布 Markdown 到微信公众号草稿箱，基于 wenyan-cli。\n\n## 首次安装\n\n```bash\nnpm install -g @wenyan-md/cli\n```\n\n## 配置 API 凭证\n\n确保环境变量已设置（或在 TOOLS.md 中配置）：\n```bash\nexport WECHAT_APP_ID=your_wechat_app_id\nexport WECHAT_APP_SECRET=your_wechat_app_secret\n```\n\n**重要：** IP 必须在微信公众号后台白名单中！\n\n## Markdown 格式要求\n\n文件顶部**必须**包含完整 frontmatter：\n\n```markdown\n---\ntitle: 文章标题（必填！）\ncover: https://example.com/cover.jpg  # 封面图（必填！）\n---\n\n# 正文...\n```\n\n⚠️ `title` 和 `cover` **缺一不可**，否则报错。\n\n**⚠️ 图片路径必须使用绝对路径**，避免 wenyan 路径解析问题。包括 cover 和正文中的所有图片引用：\n```markdown\ncover: /Users/minruiqing/photos/cover.jpg        # ✅ 绝对路径\ncover: ./assets/cover.jpg                         # ❌ 相对路径可能出错\n\n![配图](/Users/minruiqing/photos/image.jpg)       # ✅ 绝对路径\n![配图](./images/photo.jpg)                       # ❌ 相对路径可能出错\n```\n\n## 配图生成\n\n发布前，**主动询问用户是否需要生成配图**：\n\n> 📸 文章准备就绪！需要我帮你生成配图吗？\n> - 封面图（cover，建议 1080×864）\n> - 正文插图（根据段落主题生成）\n> - 不需要，直接发布\n\n**如果用户需要配图：**\n1. 根据文章标题和内容，生成合适的图片描述 prompt\n2. 调用用户提供的**生图 skill**（如 doubao-image、openai-image-gen 等）生成图片\n3. 将生成的图片保存到文章目录，使用**绝对路径**引用\n4. 封面图设置到 frontmatter 的 `cover` 字段\n5. 正文插图在合适位置插入 `![描述](绝对路径)`\n\n**prompt 建议：**\n- 封面图：与标题强相关，简洁有冲击力，适合小尺寸预览\n- 正文插图：与对应段落内容一致，辅助理解\n\n## 发布方式\n\n```bash\n# 方式 1: 使用 publish.js\nnode {baseDir}/scripts/publisher/publish.js /path/to/article.md\n\n# 方式 2: 直接用 wenyan-cli\nwenyan publish -f article.md -t lapis -h solarized-light\n\n# 方式 3: stdin（推荐，解决路径问题）\n# macOS/Linux:\ncat \"/path/to/article.md\" | WECHAT_APP_ID=xxx WECHAT_APP_SECRET=xxx wenyan publish -t lapis -h solarized-light\n\n# 方式 4: 含视频文章（必须用这个）\nnode {baseDir}/scripts/publisher/publish_with_video.js /path/to/article.md\n```\n\n## 主题选项\n\n**内置主题**：`default`、`lapis`（推荐）、`phycat`\n\n**代码高亮**：`atom-one-dark`、`dracula`、`github`、`monokai`、`solarized-light`（推荐）、`xcode`\n\n```bash\nwenyan publish -f article.md -t lapis -h solarized-light\nwenyan theme -l  # 查看所有主题\n```\n\n## 视频嵌入（关键）\n\n微信视频必须用 iframe + data-mpvid 格式，`publish_with_video.js` 已内置此逻辑。\n\nMarkdown 中引用：\n```markdown\n![视频描述](media/video.mp4)   # 自动上传并嵌入\n```\n\n## 故障排查\n\n| 问题 | 解决方法 |\n|------|---------|\n| IP 不在白名单 | `curl ifconfig.me` → 添加到公众号后台 |\n| wenyan 未安装 | `npm install -g @wenyan-md/cli` |\n| 环境变量未设置 | `export WECHAT_APP_ID=xxx` |\n| 缺少 frontmatter | 添加 title + cover |\n| 40001 token 失效 | 用 `publish_with_video.js`（已内置 token 管理） |\n\n---\n\n# 完整工作流示例\n\n## 搜索 → 洗稿 → 发布\n\n```\n1. 搜索文章：node {baseDir}/scripts/search/search_wechat.js \"AI教程\" -n 5 -c\n2. 选择目标文章，执行洗稿改写\n3. 保存为 Markdown（含 frontmatter）\n4. 发布：node {baseDir}/scripts/publisher/publish.js article.md\n```\n\n## 下载 → 洗稿 → 发布\n\n```\n1. 下载文章：node {baseDir}/scripts/downloader/download.js \"https://mp.weixin.qq.com/s/xxx\"\n2. 读取下载的 HTML/Markdown，执行洗稿改写\n3. 保存为 Markdown（含 frontmatter）\n4. 发布：node {baseDir}/scripts/publisher/publish.js article.md\n```\n\n---\n\n## 注意事项\n\n- 所有工具仅供个人学习使用，请遵守版权法规\n- 搜索功能内置防封禁机制（随机UA、请求延迟），请勿高频使用\n- 配置文件：下载器 `{baseDir}/scripts/downloader/config.json`\n\nFile v1.0.1:README.md\n\n# 📦 微信公众号工具包 (wechat-toolkit)\n\n> OpenClaw Skill — 微信公众号一站式工具包，集成 **搜索 → 下载 → 洗稿 → 发布** 四大功能，覆盖公众号内容创作全流程。\n>\n> 📦 **跨平台支持**: macOS / Linux / Windows（全部脚本基于 Node.js）\n\n---\n\n## ✨ 功能模块\n\n| 模块 | 功能 | 说明 |\n|------|------|------|\n| 🔍 **搜索** | 关键词搜索公众号文章 | 基于搜狗微信搜索，支持抓取正文 |\n| 📰 **下载** | 下载文章内容/配图/视频 | 输出 Markdown + HTML + 媒体文件 |\n| ✍️ **洗稿** | AI 去痕迹 + 原创改写 | 结构重组、语言改写、SEO 优化 |\n| 📱 **发布** | 一键发布到公众号草稿箱 | 基于 wenyan-cli，支持主题和视频嵌入 |\n\n---\n\n## 🚀 快速开始\n\n### 环境要求\n\n- **Node.js** ≥ 18\n- **Google Chrome**（下载模块需要）\n- [OpenClaw](https://github.com/anthropics/openclaw) 运行环境\n\n### 安装\n\n```bash\n# 1. 克隆仓库到 OpenClaw skills 目录\ngit clone git@github.com:Mr-Q526/openclaw-skill-wechat-toolkit.git skills/wechat-toolkit\n\n# 2. 安装搜索模块依赖\nnpm install -g cheerio\n\n# 3. 安装下载模块依赖\ncd skills/wechat-toolkit/scripts/downloader && npm install\n\n# 4. 安装发布模块依赖\nnpm install -g @wenyan-md/cli\n```\n\n---\n\n## 📖 使用方法\n\n### 🔍 搜索文章\n\n```bash\n# 基础搜索\nnode scripts/search/search_wechat.js \"关键词\"\n\n# 指定数量 + 抓取正文\nnode scripts/search/search_wechat.js \"关键词\" -n 5 -c\n\n# 保存结果\nnode scripts/search/search_wechat.js \"关键词\" -n 20 -o result.json\n```\n\n**参数：**\n- `-n, --num`：返回数量（默认 10，最大 50）\n- `-o, --output`：输出 JSON 文件路径\n- `-r, --resolve-url`：解析微信文章真实链接\n- `-c, --fetch-content`：抓取文章正文（自动启用 `-r`）\n\n### 📰 下载文章\n\n```bash\n# 设置默认下载路径（首次）\nnode scripts/downloader/download.js --set-output ~/Downloads/wechat-articles\n\n# 下载文章\nnode scripts/downloader/download.js \"https://mp.weixin.qq.com/s/xxx\"\n\n# 跳过图片/视频\nnode scripts/downloader/download.js \"https://mp.weixin.qq.com/s/xxx\" --no-image --no-video\n```\n\n**输出结构：**\n```\n<下载目录>/<文章标题>/\n├── content/article.html    # 完整 HTML\n├── metadata.json            # 元数据\n├── images/                  # 配图\n└── videos/                  # 视频/音频\n```\n\n### ✍️ 洗稿改写\n\n作为 OpenClaw Skill 使用，通过自然语言指令触发：\n\n- *\"帮我洗稿这篇文章\"*\n- *\"改写成原创\"*\n- *\"降低查重率\"*\n- *\"去掉 AI 味\"*\n\n**改写策略包括：** 结构重组、语言改写、标题优化、开头重写、SEO 优化等。\n\n### 📱 发布到公众号\n\n```bash\n# 配置（确保环境变量已设置）\nexport WECHAT_APP_ID=your_app_id\nexport WECHAT_APP_SECRET=your_app_secret\n\n# 发布（三种方式任选）\nnode scripts/publisher/publish.js /path/to/article.md\nwenyan publish -f article.md -t lapis -h solarized-light\nnode scripts/publisher/publish_with_video.js /path/to/article.md  # 含视频时使用\n```\n\n> ⚠️ **重要：** 你的 IP 必须添加到微信公众号后台白名单中！\n\n**Markdown 格式要求：**\n```markdown\n---\ntitle: 文章标题（必填）\ncover: /absolute/path/to/cover.jpg（必填，使用绝对路径）\n---\n\n# 正文内容...\n```\n\n---\n\n## 📁 项目结构\n\n```\nwechat-toolkit/\n├── SKILL.md                        # OpenClaw Skill 定义\n├── README.md                       # 本文件\n├── example.md                      # 示例文章\n├── references/                     # 参考文档\n│   ├── themes.md                   #   主题配置说明\n│   └── troubleshooting.md          #   故障排查指南\n└── scripts/                        # 脚本目录（全部 Node.js，跨平台）\n    ├── search/                     #   搜索模块\n    │   └── search_wechat.js\n    ├── downloader/                 #   下载模块\n    │   └── download.js\n    └── publisher/                  #   发布模块\n        ├── publish.js              #   基础发布\n        └── publish_with_video.js   #   含视频发布\n```\n\n---\n\n## 🔧 故障排查\n\n| 问题 | 解决方法 |\n|------|----------|\n| IP 不在白名单 | `curl ifconfig.me` → 添加到公众号后台 |\n| wenyan 未安装 | `npm install -g @wenyan-md/cli` |\n| 环境变量未设置 | `export WECHAT_APP_ID=xxx` |\n| 缺少 frontmatter | 添加 `title` + `cover` 字段 |\n| 40001 token 失效 | 使用 `publish_with_video.js` |\n\n更多排查方法见 [`references/troubleshooting.md`](references/troubleshooting.md)\n\n---\n\n## ⚠️ 免责声明\n\n- 所有工具仅供**个人学习**使用，请遵守相关版权法规\n- 搜索功能内置防封禁机制（随机 UA、请求延迟），请勿高频使用\n\n---\n\n## 📄 License\n\nMIT\n\nFile v1.0.1:_meta.json\n\n{\n  \"ownerId\": \"kn757qqsc7myx5e40qvf212q918259v3\",\n  \"slug\": \"wechat-toolkit\",\n  \"version\": \"1.0.1\",\n  \"publishedAt\": 1772877057577\n}\n\nFile v1.0.1:references/themes.md\n\n# wenyan-cli 主题列表\n\nwenyan-cli 支持多种内置主题，也支持自定义主题。\n\n## 内置主题\n\n查看所有内置主题：\n```bash\nwenyan theme -l\n```\n\n**常用主题：**\n\n1. **default** - 默认主题\n   - 简洁、通用\n   - 适合大部分文章\n\n2. **lapis** - 青金石（推荐）\n   - 优雅的蓝色调\n   - 适合技术文章\n\n3. **phycat** - 物理猫\n   - 轻量、现代\n   - 适合科技类内容\n\n**完整主题列表：** https://github.com/caol64/wenyan-core/tree/main/src/assets/themes\n\n## 代码高亮主题\n\n### 亮色主题\n- `atom-one-light` - Atom 编辑器亮色\n- `github` - GitHub 风格\n- `solarized-light` - Solarized 亮色（推荐）\n- `xcode` - Xcode 默认\n\n### 暗色主题\n- `atom-one-dark` - Atom 编辑器暗色\n- `dracula` - Dracula 主题\n- `github-dark` - GitHub 暗色\n- `monokai` - Monokai 经典\n- `solarized-dark` - Solarized 暗色\n\n## 自定义主题\n\n### 临时使用\n```bash\nwenyan publish -f article.md -c /path/to/theme.css\n```\n\n### 永久安装\n```bash\n# 从本地文件\nwenyan theme --add --name my-theme --path /path/to/theme.css\n\n# 从网络\nwenyan theme --add --name my-theme --path https://example.com/theme.css\n```\n\n### 使用已安装主题\n```bash\nwenyan publish -f article.md -t my-theme\n```\n\n### 删除主题\n```bash\nwenyan theme --rm my-theme\n```\n\n## 主题定制\n\n如果你想创建自己的主题，可以参考：\n\n1. **查看现有主题源码：** https://github.com/caol64/wenyan-core/tree/main/src/assets/themes\n2. **CSS 变量参考：** wenyan 使用 CSS 变量定制样式\n3. **测试主题：** 使用 `wenyan render` 命令仅渲染不发布\n\n**示例：**\n```bash\n# 渲染测试（不发布）\nwenyan render -f article.md -t my-theme -h github\n```\n\n## 推荐组合\n\n### 技术文章\n```bash\nwenyan publish -f article.md -t lapis -h solarized-light\n```\n\n### 深色风格\n```bash\nwenyan publish -f article.md -t phycat -h dracula\n```\n\n### 简洁风格\n```bash\nwenyan publish -f article.md -t default -h github\n```\n\n## 更多选项\n\n### 关闭 Mac 风格代码块\n```bash\nwenyan publish -f article.md -t lapis --no-mac-style\n```\n\n### 关闭链接转脚注\n```bash\nwenyan publish -f article.md -t lapis --no-footnote\n```\n\n### 组合所有选项\n```bash\nwenyan publish -f article.md \\\n  -t lapis \\\n  -h solarized-light \\\n  --no-mac-style \\\n  --no-footnote\n```\n\nFile v1.0.1:references/troubleshooting.md\n\n# 故障排查指南\n\nwechat-publisher skill 的常见问题和解决方案。\n\n## 1. ❌ IP 不在白名单\n\n**错误信息：**\n```\nError: ip not in whitelist\n```\n\n**原因：** 你的 IP 地址未添加到微信公众号后台白名单。\n\n**解决方法：**\n\n1. **获取你的公网 IP：**\n   ```bash\n   curl ifconfig.me\n   ```\n\n2. **登录微信公众号后台：** https://mp.weixin.qq.com/\n\n3. **添加 IP 白名单：**\n   - 开发 → 基本配置\n   - IP 白名单 → 添加你的 IP\n\n4. **重试发布**\n\n**详细说明：** https://yuzhi.tech/docs/wenyan/upload\n\n---\n\n## 2. ❌ wenyan-cli 未安装\n\n**错误信息：**\n```\nwenyan: command not found\n```\n\n**解决方法：**\n```bash\nnpm install -g @wenyan-md/cli\n```\n\n**验证安装：**\n```bash\nwenyan --help\n```\n\n---\n\n## 3. ❌ 环境变量未设置\n\n**错误信息：**\n```\nError: WECHAT_APP_ID is required\n```\n\n**解决方法：**\n\n**方式 1: 使用 setup.sh**\n```bash\ncd /Users/leebot/.openclaw/workspace/wechat-publisher\nsource ./scripts/setup.sh\n```\n\n**方式 2: 手动设置（临时）**\n```bash\nexport WECHAT_APP_ID=your_wechat_app_id\nexport WECHAT_APP_SECRET=your_wechat_app_secret\n```\n\n**方式 3: 永久设置**\n\n编辑 `~/.zshrc` 或 `~/.bashrc`，添加：\n```bash\nexport WECHAT_APP_ID=your_wechat_app_id\nexport WECHAT_APP_SECRET=your_wechat_app_secret\n```\n\n然后：\n```bash\nsource ~/.zshrc  # 或 source ~/.bashrc\n```\n\n---\n\n## 4. ❌ Frontmatter 缺失（最常见！）\n\n**错误信息：**\n```\nError: 未能找到文章封面\n```\n\n**原因：** Markdown 文件缺少必需的 frontmatter（特别是 `title` 字段）。\n\n**⚠️ 重要：** wenyan-cli **强制要求** frontmatter，必须在 Markdown 文件顶部添加！\n\n**解决方法：**\n\n**方案 1：有封面图**\n```markdown\n---\ntitle: 你的文章标题\ncover: /path/to/cover.jpg\n---\n\n# 正文开始\n...\n```\n\n**方案 2：无封面图（推荐，正文有图片即可）**\n```markdown\n---\ntitle: 你的文章标题\n---\n\n# 正文\n\n![配图](https://example.com/image.jpg)  # 正文图片会自动上传\n\n内容...\n```\n\n**⚠️ 关键点：**\n- `title` 字段是**必须的**，缺少会报错 \"未能找到文章封面\"\n- `cover` 字段可选：如果正文中有图片，wenyan 会自动使用第一张图作为封面\n- frontmatter 必须在文件最顶部，前面不能有空行或其他内容\n- frontmatter 使用三个短横线 `---` 包围\n\n**错误示例（会报错）：**\n```markdown\n# 我的文章\n\n没有 frontmatter，wenyan 会报错！\n```\n\n---\n\n## 5. ❌ 图片上传失败\n\n**错误信息：**\n```\nError: Failed to upload image\n```\n\n**可能原因：**\n\n1. **图片路径错误** - 检查本地路径是否正确\n2. **图片格式不支持** - 微信支持 jpg/png/gif\n3. **图片过大** - 微信限制单张图片 < 10MB\n4. **网络图片无法访问** - 检查 URL 是否可访问\n\n**解决方法：**\n\n1. **检查图片路径：**\n   ```bash\n   ls -lh /path/to/image.jpg\n   ```\n\n2. **检查图片格式：**\n   ```bash\n   file /path/to/image.jpg\n   ```\n\n3. **压缩图片（如果过大）：**\n   ```bash\n   # 使用 ImageMagick\n   convert large.jpg -quality 80 -resize 1200x compressed.jpg\n   ```\n\n4. **测试网络图片：**\n   ```bash\n   curl -I https://example.com/image.jpg\n   ```\n\n---\n\n## 6. ❌ API 凭证错误\n\n**错误信息：**\n```\nError: invalid credential\n```\n\n**原因：** AppID 或 AppSecret 错误。\n\n**解决方法：**\n\n1. **检查 TOOLS.md 中的凭证是否正确**\n\n2. **重新获取凭证：**\n   - 登录：https://mp.weixin.qq.com/\n   - 开发 → 基本配置\n   - 查看 AppID 和 AppSecret\n\n3. **更新环境变量**\n\n4. **重试发布**\n\n---\n\n## 7. ❌ Node.js 版本过低\n\n**错误信息：**\n```\nError: Requires Node.js >= 14.0.0\n```\n\n**解决方法：**\n\n1. **检查当前版本：**\n   ```bash\n   node --version\n   ```\n\n2. **升级 Node.js：**\n   ```bash\n   # 使用 Homebrew (macOS)\n   brew upgrade node\n   \n   # 或使用 nvm\n   nvm install stable\n   nvm use stable\n   ```\n\n---\n\n## 8. ❌ 网络连接问题\n\n**错误信息：**\n```\nError: connect ETIMEDOUT\n```\n\n**可能原因：**\n\n1. **网络不稳定** - 检查网络连接\n2. **防火墙阻止** - 检查防火墙设置\n3. **微信 API 服务异常** - 稍后重试\n\n**解决方法：**\n\n1. **测试网络连接：**\n   ```bash\n   curl -I https://api.weixin.qq.com\n   ```\n\n2. **使用代理（如需要）：**\n   ```bash\n   export HTTP_PROXY=http://proxy:port\n   export HTTPS_PROXY=http://proxy:port\n   ```\n\n3. **重试发布**\n\n---\n\n## 9. 🐛 调试模式\n\n如果以上方法都不行，启用详细日志：\n\n```bash\n# 设置详细日志\nexport DEBUG=wenyan:*\n\n# 运行发布\nwenyan publish -f article.md -t lapis -h solarized-light\n```\n\n查看完整错误信息，然后：\n- 检查 wenyan-cli GitHub Issues: https://github.com/caol64/wenyan-cli/issues\n- 或提交新 Issue\n\n---\n\n## 10. 📞 获取帮助\n\n**wenyan-cli 帮助：**\n```bash\nwenyan --help\nwenyan publish --help\nwenyan theme --help\n```\n\n**wechat-publisher 帮助：**\n```bash\ncd /Users/leebot/.openclaw/workspace/wechat-publisher\n./scripts/publish.sh --help\n```\n\n**参考资料：**\n- wenyan-cli GitHub: https://github.com/caol64/wenyan-cli\n- wenyan 官网: https://wenyan.yuzhi.tech\n- 微信公众号开发文档: https://developers.weixin.qq.com/doc/offiaccount/\n\n---\n\n## 💡 最佳实践\n\n**1. 始终添加 frontmatter**\n```markdown\n---\ntitle: 文章标题（必填！）\n---\n```\n\n**2. 正文添加至少一张图片**\n- wenyan 会自动使用第一张图作为封面\n- 图片会自动上传到微信图床\n\n**3. 测试流程**\n```bash\n# 1. 先用 render 测试（不发布）\nwenyan render -f article.md\n\n# 2. 确认无误后再 publish\nwenyan publish -f article.md -t lapis -h solarized-light\n```\n\n**4. 检查列表**\n- ✅ frontmatter 中有 title\n- ✅ 正文有至少一张图片（或 frontmatter 有 cover）\n- ✅ 环境变量已设置\n- ✅ IP 在白名单中\n\n---\n\n**如果问题仍未解决，请联系 Bruce 或提交 Issue。**\n\nFile v1.0.1:scripts/downloader/package.json\n\n{\n    \"name\": \"wechat-article-downloader-skill\",\n    \"version\": \"1.0.0\",\n    \"description\": \"微信公众号文章下载器 - OpenClaw Skill\",\n    \"type\": \"module\",\n    \"dependencies\": {\n        \"puppeteer-core\": \"^24.0.0\"\n    }\n}\n\nFile v1.0.1:example.md\n\n---\ntitle: wechat-publisher 测试文章\ncover: ./assets/default-cover.jpg\n---\n\n# wechat-publisher Skill 测试\n\n欢迎使用 **wechat-publisher** skill！\n\n## 核心功能\n\n### 1. Markdown 自动转换\n- 标准 Markdown 转换为微信公众号格式\n- 自动处理样式和排版\n- 支持多种主题\n\n### 2. 图片自动上传\n- 本地图片自动上传\n- 网络图片自动处理\n- 无需手动操作\n\n### 3. 一键发布\n```bash\nnode ./scripts/publisher/publish.js example.md\n```\n\n## 代码示例\n\n```python\ndef publish_article(file):\n    \"\"\"发布到微信公众号\"\"\"\n    return wenyan.publish(file)\n```\n\n## 使用步骤\n\n1. 配置凭证（TOOLS.md）\n2. 准备 Markdown 文件\n3. 运行发布脚本\n\n## 封面图说明\n\n本测试文章使用相对路径引用封面：\n```markdown\ncover: ./assets/default-cover.jpg\n```\n\n这样发布到 GitHub 后，其他用户克隆 skill 也能直接使用！\n\n## 测试总结\n\n如果看到这篇文章，说明 skill 工作正常！\n\n---\n\n*由 wechat-publisher 自动发布*\n\nArchive v1.0.0: 11 files, 31655 bytes\n\nFiles: example.md (1005b), references/themes.md (2347b), references/troubleshooting.md (5979b), scripts/downloader/download.js (16553b), scripts/downloader/package.json (230b), scripts/publisher/publish_with_video.py (13265b), scripts/publisher/publish.sh (4342b), scripts/publisher/setup.sh (1445b), scripts/search/search_wechat.js (27165b), SKILL.md (11924b), _meta.json (133b)\n\nFile v1.0.0:SKILL.md\n\n---\nname: wechat-toolkit\ndescription: \"微信公众号一站式工具包 — 集成文章搜索、文章下载、AI洗稿改写、公众号发布四大功能。当用户需要搜索/下载/改写/发布微信公众号文章时使用。\"\nmetadata:\n  {\n    \"openclaw\":\n      {\n        \"emoji\": \"📦\",\n        \"requires\": { \"bins\": [\"node\"] },\n        \"install\":\n          [\n            {\n              \"id\": \"node-brew\",\n              \"kind\": \"brew\",\n              \"formula\": \"node\",\n              \"bins\": [\"node\"],\n              \"label\": \"Install Node.js (brew)\",\n            },\n          ],\n      },\n  }\n---\n\n# 📦 微信公众号工具包 (wechat-toolkit)\n\n集成四大功能模块：**搜索 → 下载 → 洗稿 → 发布**，覆盖公众号内容创作全流程。\n\n---\n\n## 模块一览\n\n| 模块 | 功能 | 触发词示例 |\n|------|------|-----------|\n| 🔍 搜索 | 按关键词搜索公众号文章 | \"搜XX的公众号文章\" |\n| 📰 下载 | 下载文章内容/图片/视频 | \"下载这篇公众号文章\" |\n| ✍️ 洗稿 | AI去痕迹+原创改写 | \"帮我洗稿/改写这篇文章\" |\n| 📱 发布 | 发布Markdown到草稿箱 | \"发布到公众号\" |\n\n---\n\n# 🔍 模块一：文章搜索\n\n通过搜狗微信搜索获取公众号文章列表，支持抓取正文。\n\n## 首次安装依赖\n\n```bash\nnpm install -g cheerio\n```\n\n## 使用方法\n\n```bash\n# 基础搜索\nnode {baseDir}/scripts/search/search_wechat.js \"关键词\"\n\n# 指定数量\nnode {baseDir}/scripts/search/search_wechat.js \"关键词\" -n 15\n\n# 保存到文件\nnode {baseDir}/scripts/search/search_wechat.js \"关键词\" -n 20 -o result.json\n\n# 解析真实链接\nnode {baseDir}/scripts/search/search_wechat.js \"关键词\" -n 5 -r\n\n# 抓取文章正文（自动启用 -r）\nnode {baseDir}/scripts/search/search_wechat.js \"关键词\" -n 5 -c\n```\n\n### 参数说明\n- `query`：搜索关键词（必填）\n- `-n, --num`：返回数量（默认 10，最大 50）\n- `-o, --output`：输出 JSON 文件路径\n- `-r, --resolve-url`：解析微信文章真实链接\n- `-c, --fetch-content`：抓取文章正文内容（自动启用 -r）\n\n### 输出字段\n- 文章标题、地址、概要、发布时间、来源公众号\n- `content`：正文内容（使用 -c 时）\n- `word_count`：字数统计（使用 -c 时）\n\n---\n\n# 📰 模块二：文章下载\n\n输入公众号文章链接，自动下载内容（Markdown+HTML）、配图和视频。\n\n## 首次安装依赖\n\n```bash\ncd {baseDir}/scripts/downloader && npm install\n```\n\n## 下载前：确认保存位置\n\n```bash\n# 查看当前配置\nnode {baseDir}/scripts/downloader/download.js --show-config\n\n# 设置默认下载路径（仅需一次）\nnode {baseDir}/scripts/downloader/download.js --set-output ~/Downloads/wechat-articles\n```\n\n- `\"isDefault\": true` → 尚未配置，需询问用户\n- `\"isDefault\": false` → 已配置，告知用户当前路径\n\n## 下载文章\n\n```bash\n# 使用默认路径\nnode {baseDir}/scripts/downloader/download.js \"<文章URL>\"\n\n# 临时指定路径\nnode {baseDir}/scripts/downloader/download.js \"<文章URL>\" --output <临时目录>\n\n# 跳过图片/视频\nnode {baseDir}/scripts/downloader/download.js \"<文章URL>\" --no-image\nnode {baseDir}/scripts/downloader/download.js \"<文章URL>\" --no-video\n```\n\n### 输出结构\n```\n<下载目录>/<文章标题>/\n├── content/article.html      # 完整 HTML\n├── metadata.json              # 标题、作者、时间等\n├── images/                    # 所有配图\n└── videos/                    # 所有视频/音频\n```\n\n### 前置要求\n- Node.js ≥ 18、Google Chrome、`npm install`（首次）\n\n---\n\n# ✍️ 模块三：文章洗稿与改写\n\n将文章改写为自然、原创的风格，去除 AI 写作痕迹，提升原创度。\n\n## 触发词\n- \"帮我洗稿这篇文章\"\n- \"改写成原创\"\n- \"降低查重率\"\n- \"去掉 AI 味\"\n\n## 洗稿工作流\n\n### 标准洗稿流程\n\n1. **获取原文** — 通过搜索（-c 抓正文）或下载获得原文\n2. **分析结构** — 识别文章类型、核心论点、段落层次\n3. **深度改写** — 按以下策略执行改写\n4. **添加 frontmatter** — 补充 title + cover\n5. **发布** — 推送到公众号草稿箱\n\n### 改写策略\n\n#### A. 结构重组（降重核心）\n- **段落重排**：调整段落顺序，打乱原文结构\n- **段落拆合**：将长段拆为短段，或合并碎片段落\n- **叙事角度转换**：时间线 ↔ 问题导向 ↔ 对比分析 ↔ 故事引入\n- **论据重组**：保留核心论据，改变展开方式\n\n#### B. 语言改写（去 AI 痕迹）\n- **删除意义膨胀句**：\"标志性\"、\"里程碑\"、\"深远影响\" → 替换为具体事实\n- **去虚假权威**：\"专家认为\"、\"业内普遍认为\" → 写明来源或删除\n- **去伪深度动词**：\"提升能力\"、\"赋能\"、\"推动进程\" → 改为具体动作\n- **去广告语气**：\"卓越\"、\"极致体验\"、\"全方位\" → 客观描述\n- **去 AI 高频词**：赋能、闭环、生态、抓手、底层逻辑、范式、沉淀、势能\n- **去填充短语**：事实上、值得注意的是、总体来说、不难发现\n- **去空洞结尾**：\"未来可期\"、\"值得期待\" → 实际结论或行动项\n\n#### C. 标题改写\n为每篇文章生成 3-5 个备选标题，涵盖：\n- **疑问型**：用问题引发好奇（\"为什么XX还在用这种方法？\"）\n- **数字型**：用数字增强可信度（\"3个被忽略的XX技巧\"）\n- **悬念型**：制造信息差（\"XX的真相，90%的人不知道\"）\n- **痛点型**：戳中读者痛点（\"别再XX了，试试这个方法\"）\n\n#### D. 开头改写\n将原文开头转换为以下风格之一：\n- **故事引入**：用一个小故事或场景切入\n- **数据引入**：用震撼数据开头\n- **痛点引入**：直击读者困扰\n- **反问引入**：抛出反直觉问题\n\n#### E. SEO 优化（可选）\n- 在标题和首段自然植入核心关键词\n- 在小标题中分布长尾关键词\n- 控制关键词密度（2%-5%），保持自然可读\n\n### AI 痕迹识别清单\n\n改写完成后，逐项检查：\n\n| # | 检查项 | 处理方式 |\n|---|--------|---------|\n| 1 | 意义膨胀句 | 替换为具体事实 |\n| 2 | 虚假权威引用 | 写明来源或删除 |\n| 3 | 伪深度动词 | 改为具体动作 |\n| 4 | 广告语气 | 客观描述 |\n| 5 | 模板段落（挑战→机遇→展望） | 删除模板，保留结论 |\n| 6 | AI 高频词密集出现 | 替换为日常用语 |\n| 7 | 负向并列滥用（不仅…而且…） | 直接表达 |\n| 8 | 三段式强拆 | 保留重点，删填充项 |\n| 9 | 同义词机械轮换 | 同一概念固定用词 |\n| 10 | 破折号滥用 | 改为句号或逗号 |\n| 11 | 加粗强调滥用 | 去掉不必要强调 |\n| 12 | 列表模板（**X：**…） | 合并为自然段 |\n| 13 | 概念堆砌标题 | 改为口语化标题 |\n| 14 | Emoji 泛滥 | 除非指定风格，默认删除 |\n| 15 | 聊天语残留 | 删除 |\n| 16 | 知识截止声明 | 删除 |\n| 17 | 过度讨好语气 | 客观回应 |\n| 18 | 填充短语 | 删除 |\n| 19 | 过度模糊（可能会、或许） | 改为条件判断 |\n| 20 | 空洞结尾 | 改为实际结论 |\n| 21 | 假区间表达（从…到…） | 列举具体事实 |\n\n### 输出格式\n\n1. **改写后全文**（Markdown 格式，含 frontmatter）\n2. **备选标题**（3-5 个）\n3. **修改说明**（可选，简要列出主要改动）\n\n### 判断标准\n\n改写成功的标志：\n- ✅ 读起来像真人写的，能直接朗读不拗口\n- ✅ 没有空洞句、模板段、\"像 AI\" 的气味\n- ✅ 信息密度高，每句话都有具体内容\n- ✅ 结构与原文明显不同\n- ✅ 保持原文核心信息完整性\n\n---\n\n# 📱 模块四：文章发布\n\n一键发布 Markdown 到微信公众号草稿箱，基于 wenyan-cli。\n\n## 首次安装\n\n```bash\nnpm install -g @wenyan-md/cli\n```\n\n## 配置 API 凭证\n\n确保环境变量已设置（或在 TOOLS.md 中配置）：\n```bash\nexport WECHAT_APP_ID=your_wechat_app_id\nexport WECHAT_APP_SECRET=your_wechat_app_secret\n```\n\n**重要：** IP 必须在微信公众号后台白名单中！\n\n## Markdown 格式要求\n\n文件顶部**必须**包含完整 frontmatter：\n\n```markdown\n---\ntitle: 文章标题（必填！）\ncover: https://example.com/cover.jpg  # 封面图（必填！）\n---\n\n# 正文...\n```\n\n⚠️ `title` 和 `cover` **缺一不可**，否则报错。\n\n**⚠️ 图片路径必须使用绝对路径**，避免 wenyan 路径解析问题。包括 cover 和正文中的所有图片引用：\n```markdown\ncover: /Users/minruiqing/photos/cover.jpg        # ✅ 绝对路径\ncover: ./assets/cover.jpg                         # ❌ 相对路径可能出错\n\n![配图](/Users/minruiqing/photos/image.jpg)       # ✅ 绝对路径\n![配图](./images/photo.jpg)                       # ❌ 相对路径可能出错\n```\n\n## 配图生成\n\n发布前，**主动询问用户是否需要生成配图**：\n\n> 📸 文章准备就绪！需要我帮你生成配图吗？\n> - 封面图（cover，建议 1080×864）\n> - 正文插图（根据段落主题生成）\n> - 不需要，直接发布\n\n**如果用户需要配图：**\n1. 根据文章标题和内容，生成合适的图片描述 prompt\n2. 调用用户提供的**生图 skill**（如 doubao-image、openai-image-gen 等）生成图片\n3. 将生成的图片保存到文章目录，使用**绝对路径**引用\n4. 封面图设置到 frontmatter 的 `cover` 字段\n5. 正文插图在合适位置插入 `![描述](绝对路径)`\n\n**prompt 建议：**\n- 封面图：与标题强相关，简洁有冲击力，适合小尺寸预览\n- 正文插图：与对应段落内容一致，辅助理解\n\n## 发布方式\n\n```bash\n# 方式 1: 使用 publish.sh\nbash {baseDir}/scripts/publisher/publish.sh /path/to/article.md\n\n# 方式 2: 直接用 wenyan-cli\nwenyan publish -f article.md -t lapis -h solarized-light\n\n# 方式 3: stdin（推荐，解决路径问题）\ncat \"/path/to/article.md\" | WECHAT_APP_ID=xxx WECHAT_APP_SECRET=xxx wenyan publish -t lapis -h solarized-light\n\n# 方式 4: 含视频文章（必须用这个）\npython3 {baseDir}/scripts/publisher/publish_with_video.py /path/to/article.md\n```\n\n## 主题选项\n\n**内置主题**：`default`、`lapis`（推荐）、`phycat`\n\n**代码高亮**：`atom-one-dark`、`dracula`、`github`、`monokai`、`solarized-light`（推荐）、`xcode`\n\n```bash\nwenyan publish -f article.md -t lapis -h solarized-light\nwenyan theme -l  # 查看所有主题\n```\n\n## 视频嵌入（关键）\n\n微信视频必须用 iframe + data-mpvid 格式，`publish_with_video.py` 已内置此逻辑。\n\nMarkdown 中引用：\n```markdown\n![视频描述](media/video.mp4)   # 自动上传并嵌入\n```\n\n## 故障排查\n\n| 问题 | 解决方法 |\n|------|---------|\n| IP 不在白名单 | `curl ifconfig.me` → 添加到公众号后台 |\n| wenyan 未安装 | `npm install -g @wenyan-md/cli` |\n| 环境变量未设置 | `export WECHAT_APP_ID=xxx` |\n| 缺少 frontmatter | 添加 title + cover |\n| 40001 token 失效 | 用 `publish_with_video.py`（已内置 token 管理） |\n\n---\n\n# 完整工作流示例\n\n## 搜索 → 洗稿 → 发布\n\n```\n1. 搜索文章：node {baseDir}/scripts/search/search_wechat.js \"AI教程\" -n 5 -c\n2. 选择目标文章，执行洗稿改写\n3. 保存为 Markdown（含 frontmatter）\n4. 发布：bash {baseDir}/scripts/publisher/publish.sh article.md\n```\n\n## 下载 → 洗稿 → 发布\n\n```\n1. 下载文章：node {baseDir}/scripts/downloader/download.js \"https://mp.weixin.qq.com/s/xxx\"\n2. 读取下载的 HTML/Markdown，执行洗稿改写\n3. 保存为 Markdown（含 frontmatter）\n4. 发布：bash {baseDir}/scripts/publisher/publish.sh article.md\n```\n\n---\n\n## 注意事项\n\n- 所有工具仅供个人学习使用，请遵守版权法规\n- 搜索功能内置防封禁机制（随机UA、请求延迟），请勿高频使用\n- 配置文件：下载器 `{baseDir}/scripts/downloader/config.json`\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn757qqsc7myx5e40qvf212q918259v3\",\n  \"slug\": \"wechat-toolkit\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1772613969806\n}\n\nFile v1.0.0:references/themes.md\n\n# wenyan-cli 主题列表\n\nwenyan-cli 支持多种内置主题，也支持自定义主题。\n\n## 内置主题\n\n查看所有内置主题：\n```bash\nwenyan theme -l\n```\n\n**常用主题：**\n\n1. **default** - 默认主题\n   - 简洁、通用\n   - 适合大部分文章\n\n2. **lapis** - 青金石（推荐）\n   - 优雅的蓝色调\n   - 适合技术文章\n\n3. **phycat** - 物理猫\n   - 轻量、现代\n   - 适合科技类内容\n\n**完整主题列表：** https://github.com/caol64/wenyan-core/tree/main/src/assets/themes\n\n## 代码高亮主题\n\n### 亮色主题\n- `atom-one-light` - Atom 编辑器亮色\n- `github` - GitHub 风格\n- `solarized-light` - Solarized 亮色（推荐）\n- `xcode` - Xcode 默认\n\n### 暗色主题\n- `atom-one-dark` - Atom 编辑器暗色\n- `dracula` - Dracula 主题\n- `github-dark` - GitHub 暗色\n- `monokai` - Monokai 经典\n- `solarized-dark` - Solarized 暗色\n\n## 自定义主题\n\n### 临时使用\n```bash\nwenyan publish -f article.md -c /path/to/theme.css\n```\n\n### 永久安装\n```bash\n# 从本地文件\nwenyan theme --add --name my-theme --path /path/to/theme.css\n\n# 从网络\nwenyan theme --add --name my-theme --path https://example.com/theme.css\n```\n\n### 使用已安装主题\n```bash\nwenyan publish -f article.md -t my-theme\n```\n\n### 删除主题\n```bash\nwenyan theme --rm my-theme\n```\n\n## 主题定制\n\n如果你想创建自己的主题，可以参考：\n\n1. **查看现有主题源码：** https://github.com/caol64/wenyan-core/tree/main/src/assets/themes\n2. **CSS 变量参考：** wenyan 使用 CSS 变量定制样式\n3. **测试主题：** 使用 `wenyan render` 命令仅渲染不发布\n\n**示例：**\n```bash\n# 渲染测试（不发布）\nwenyan render -f article.md -t my-theme -h github\n```\n\n## 推荐组合\n\n### 技术文章\n```bash\nwenyan publish -f article.md -t lapis -h solarized-light\n```\n\n### 深色风格\n```bash\nwenyan publish -f article.md -t phycat -h dracula\n```\n\n### 简洁风格\n```bash\nwenyan publish -f article.md -t default -h github\n```\n\n## 更多选项\n\n### 关闭 Mac 风格代码块\n```bash\nwenyan publish -f article.md -t lapis --no-mac-style\n```\n\n### 关闭链接转脚注\n```bash\nwenyan publish -f article.md -t lapis --no-footnote\n```\n\n### 组合所有选项\n```bash\nwenyan publish -f article.md \\\n  -t lapis \\\n  -h solarized-light \\\n  --no-mac-style \\\n  --no-footnote\n```\n\nFile v1.0.0:references/troubleshooting.md\n\n# 故障排查指南\n\nwechat-publisher skill 的常见问题和解决方案。\n\n## 1. ❌ IP 不在白名单\n\n**错误信息：**\n```\nError: ip not in whitelist\n```\n\n**原因：** 你的 IP 地址未添加到微信公众号后台白名单。\n\n**解决方法：**\n\n1. **获取你的公网 IP：**\n   ```bash\n   curl ifconfig.me\n   ```\n\n2. **登录微信公众号后台：** https://mp.weixin.qq.com/\n\n3. **添加 IP 白名单：**\n   - 开发 → 基本配置\n   - IP 白名单 → 添加你的 IP\n\n4. **重试发布**\n\n**详细说明：** https://yuzhi.tech/docs/wenyan/upload\n\n---\n\n## 2. ❌ wenyan-cli 未安装\n\n**错误信息：**\n```\nwenyan: command not found\n```\n\n**解决方法：**\n```bash\nnpm install -g @wenyan-md/cli\n```\n\n**验证安装：**\n```bash\nwenyan --help\n```\n\n---\n\n## 3. ❌ 环境变量未设置\n\n**错误信息：**\n```\nError: WECHAT_APP_ID is required\n```\n\n**解决方法：**\n\n**方式 1: 使用 setup.sh**\n```bash\ncd /Users/leebot/.openclaw/workspace/wechat-publisher\nsource ./scripts/setup.sh\n```\n\n**方式 2: 手动设置（临时）**\n```bash\nexport WECHAT_APP_ID=your_wechat_app_id\nexport WECHAT_APP_SECRET=your_wechat_app_secret\n```\n\n**方式 3: 永久设置**\n\n编辑 `~/.zshrc` 或 `~/.bashrc`，添加：\n```bash\nexport WECHAT_APP_ID=your_wechat_app_id\nexport WECHAT_APP_SECRET=your_wechat_app_secret\n```\n\n然后：\n```bash\nsource ~/.zshrc  # 或 source ~/.bashrc\n```\n\n---\n\n## 4. ❌ Frontmatter 缺失（最常见！）\n\n**错误信息：**\n```\nError: 未能找到文章封面\n```\n\n**原因：** Markdown 文件缺少必需的 frontmatter（特别是 `title` 字段）。\n\n**⚠️ 重要：** wenyan-cli **强制要求** frontmatter，必须在 Markdown 文件顶部添加！\n\n**解决方法：**\n\n**方案 1：有封面图**\n```markdown\n---\ntitle: 你的文章标题\ncover: /path/to/cover.jpg\n---\n\n# 正文开始\n...\n```\n\n**方案 2：无封面图（推荐，正文有图片即可）**\n```markdown\n---\ntitle: 你的文章标题\n---\n\n# 正文\n\n![配图](https://example.com/image.jpg)  # 正文图片会自动上传\n\n内容...\n```\n\n**⚠️ 关键点：**\n- `title` 字段是**必须的**，缺少会报错 \"未能找到文章封面\"\n- `cover` 字段可选：如果正文中有图片，wenyan 会自动使用第一张图作为封面\n- frontmatter 必须在文件最顶部，前面不能有空行或其他内容\n- frontmatter 使用三个短横线 `---` 包围\n\n**错误示例（会报错）：**\n```markdown\n# 我的文章\n\n没有 frontmatter，wenyan 会报错！\n```\n\n---\n\n## 5. ❌ 图片上传失败\n\n**错误信息：**\n```\nError: Failed to upload image\n```\n\n**可能原因：**\n\n1. **图片路径错误** - 检查本地路径是否正确\n2. **图片格式不支持** - 微信支持 jpg/png/gif\n3. **图片过大** - 微信限制单张图片 < 10MB\n4. **网络图片无法访问** - 检查 URL 是否可访问\n\n**解决方法：**\n\n1. **检查图片路径：**\n   ```bash\n   ls -lh /path/to/image.jpg\n   ```\n\n2. **检查图片格式：**\n   ```bash\n   file /path/to/image.jpg\n   ```\n\n3. **压缩图片（如果过大）：**\n   ```bash\n   # 使用 ImageMagick\n   convert large.jpg -quality 80 -resize 1200x compressed.jpg\n   ```\n\n4. **测试网络图片：**\n   ```bash\n   curl -I https://example.com/image.jpg\n   ```\n\n---\n\n## 6. ❌ API 凭证错误\n\n**错误信息：**\n```\nError: invalid credential\n```\n\n**原因：** AppID 或 AppSecret 错误。\n\n**解决方法：**\n\n1. **检查 TOOLS.md 中的凭证是否正确**\n\n2. **重新获取凭证：**\n   - 登录：https://mp.weixin.qq.com/\n   - 开发 → 基本配置\n   - 查看 AppID 和 AppSecret\n\n3. **更新环境变量**\n\n4. **重试发布**\n\n---\n\n## 7. ❌ Node.js 版本过低\n\n**错误信息：**\n```\nError: Requires Node.js >= 14.0.0\n```\n\n**解决方法：**\n\n1. **检查当前版本：**\n   ```bash\n   node --version\n   ```\n\n2. **升级 Node.js：**\n   ```bash\n   # 使用 Homebrew (macOS)\n   brew upgrade node\n   \n   # 或使用 nvm\n   nvm install stable\n   nvm use stable\n   ```\n\n---\n\n## 8. ❌ 网络连接问题\n\n**错误信息：**\n```\nError: connect ETIMEDOUT\n```\n\n**可能原因：**\n\n1. **网络不稳定** - 检查网络连接\n2. **防火墙阻止** - 检查防火墙设置\n3. **微信 API 服务异常** - 稍后重试\n\n**解决方法：**\n\n1. **测试网络连接：**\n   ```bash\n   curl -I https://api.weixin.qq.com\n   ```\n\n2. **使用代理（如需要）：**\n   ```bash\n   export HTTP_PROXY=http://proxy:port\n   export HTTPS_PROXY=http://proxy:port\n   ```\n\n3. **重试发布**\n\n---\n\n## 9. 🐛 调试模式\n\n如果以上方法都不行，启用详细日志：\n\n```bash\n# 设置详细日志\nexport DEBUG=wenyan:*\n\n# 运行发布\nwenyan publish -f article.md -t lapis -h solarized-light\n```\n\n查看完整错误信息，然后：\n- 检查 wenyan-cli GitHub Issues: https://github.com/caol64/wenyan-cli/issues\n- 或提交新 Issue\n\n---\n\n## 10. 📞 获取帮助\n\n**wenyan-cli 帮助：**\n```bash\nwenyan --help\nwenyan publish --help\nwenyan theme --help\n```\n\n**wechat-publisher 帮助：**\n```bash\ncd /Users/leebot/.openclaw/workspace/wechat-publisher\n./scripts/publish.sh --help\n```\n\n**参考资料：**\n- wenyan-cli GitHub: https://github.com/caol64/wenyan-cli\n- wenyan 官网: https://wenyan.yuzhi.tech\n- 微信公众号开发文档: https://developers.weixin.qq.com/doc/offiaccount/\n\n---\n\n## 💡 最佳实践\n\n**1. 始终添加 frontmatter**\n```markdown\n---\ntitle: 文章标题（必填！）\n---\n```\n\n**2. 正文添加至少一张图片**\n- wenyan 会自动使用第一张图作为封面\n- 图片会自动上传到微信图床\n\n**3. 测试流程**\n```bash\n# 1. 先用 render 测试（不发布）\nwenyan render -f article.md\n\n# 2. 确认无误后再 publish\nwenyan publish -f article.md -t lapis -h solarized-light\n```\n\n**4. 检查列表**\n- ✅ frontmatter 中有 title\n- ✅ 正文有至少一张图片（或 frontmatter 有 cover）\n- ✅ 环境变量已设置\n- ✅ IP 在白名单中\n\n---\n\n**如果问题仍未解决，请联系 Bruce 或提交 Issue。**\n\nFile v1.0.0:scripts/downloader/package.json\n\n{\n    \"name\": \"wechat-article-downloader-skill\",\n    \"version\": \"1.0.0\",\n    \"description\": \"微信公众号文章下载器 - OpenClaw Skill\",\n    \"type\": \"module\",\n    \"dependencies\": {\n        \"puppeteer-core\": \"^24.0.0\"\n    }\n}\n\nFile v1.0.0:example.md\n\n---\ntitle: wechat-publisher 测试文章\ncover: ./assets/default-cover.jpg\n---\n\n# wechat-publisher Skill 测试\n\n欢迎使用 **wechat-publisher** skill！\n\n## 核心功能\n\n### 1. Markdown 自动转换\n- 标准 Markdown 转换为微信公众号格式\n- 自动处理样式和排版\n- 支持多种主题\n\n### 2. 图片自动上传\n- 本地图片自动上传\n- 网络图片自动处理\n- 无需手动操作\n\n### 3. 一键发布\n```bash\n./scripts/publish.sh example.md\n```\n\n## 代码示例\n\n```python\ndef publish_article(file):\n    \"\"\"发布到微信公众号\"\"\"\n    return wenyan.publish(file)\n```\n\n## 使用步骤\n\n1. 配置凭证（TOOLS.md）\n2. 准备 Markdown 文件\n3. 运行发布脚本\n\n## 封面图说明\n\n本测试文章使用相对路径引用封面：\n```markdown\ncover: ./assets/default-cover.jpg\n```\n\n这样发布到 GitHub 后，其他用户克隆 skill 也能直接使用！\n\n## 测试总结\n\n如果看到这篇文章，说明 skill 工作正常！\n\n---\n\n*由 wechat-publisher 自动发布*","readmeExcerpt":"Skill: wechat-toolkit Owner: mr-q526 Summary: 微信公众号一站式工具包 — 集成文章搜索、文章下载、AI洗稿改写、公众号发布四大功能。当用户需要搜索/下载/改写/发布微信公众号文章时使用。 Tags: latest:1.0.2 Version history: v1.0.2 | 2026-03-18T09:12:37.460Z | user - 新增 12 套内置公众号文章发布主题，实现 theme 目录 + 一键预览拼图/单图，便于选择和对比。 - 新增如下文件：主题 CSS（如 aurora.css、ember.css 等），主题预览图，主题预览 HTML，总览拼图，主题描述 JSON 与示例文档。 - 发布脚本支持 --list-themes 与 --generate-theme-previews，并详列预览目录和用法说明。 - SKILL 文档补充所有可用主题名、预览相关说明，","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"npm install -g cheerio"},{"language":"bash","snippet":"# 基础搜索\nnode {baseDir}/scripts/search/search_wechat.js \"关键词\"\n\n# 指定数量\nnode {baseDir}/scripts/search/search_wechat.js \"关键词\" -n 15\n\n# 保存到文件\nnode {baseDir}/scripts/search/search_wechat.js \"关键词\" -n 20 -o result.json\n\n# 解析真实链接\nnode {baseDir}/scripts/search/search_wechat.js \"关键词\" -n 5 -r\n\n# 抓取文章正文（自动启用 -r）\nnode {baseDir}/scripts/search/search_wechat.js \"关键词\" -n 5 -c"},{"language":"bash","snippet":"cd {baseDir}/scripts/downloader && npm install"},{"language":"bash","snippet":"# 查看当前配置\nnode {baseDir}/scripts/downloader/download.js --show-config\n\n# 设置默认下载路径（仅需一次）\nnode {baseDir}/scripts/downloader/download.js --set-output ~/Downloads/wechat-articles"},{"language":"bash","snippet":"# 使用默认路径\nnode {baseDir}/scripts/downloader/download.js \"<文章URL>\"\n\n# 临时指定路径\nnode {baseDir}/scripts/downloader/download.js \"<文章URL>\" --output <临时目录>\n\n# 跳过图片/视频\nnode {baseDir}/scripts/downloader/download.js \"<文章URL>\" --no-image\nnode {baseDir}/scripts/downloader/download.js \"<文章URL>\" --no-video"},{"language":"text","snippet":"<下载目录>/<文章标题>/\n├── content/article.html      # 完整 HTML\n├── metadata.json              # 标题、作者、时间等\n├── images/                    # 所有配图\n└── videos/                    # 所有视频/音频"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: wechat-toolkit\ndescription: \"微信公众号一站式工具包 — 集成文章搜索、文章下载、AI洗稿改写、公众号发布四大功能。当用户需要搜索/下载/改写/发布微信公众号文章时使用。\"\nmetadata:\n  {\n    \"openclaw\":\n      {\n        \"emoji\": \"📦\",\n        \"requires\": { \"bins\": [\"node\"] },\n        \"platforms\": [\"macos\", \"linux\", \"windows\"],\n        \"install\":\n          [\n            {\n              \"id\": \"node-brew\",\n              \"kind\": \"brew\",\n              \"formula\": \"node\",\n              \"bins\": [\"node\"],\n              \"label\": \"Install Node.js (brew)\",\n            },\n          ],\n      },\n  }\n---\n\n# 📦 微信公众号工具包 (wechat-toolkit)\n\n集成四大功能模块：**搜索 → 下载 → 洗稿 → 发布**，覆盖公众号内容创作全流程。\n\n---\n\n## 模块一览\n\n| 模块 | 功能 | 触发词示例 |\n|------|------|-----------|\n| 🔍 搜索 | 按关键词搜索公众号文章 | \"搜XX的公众号文章\" |\n| 📰 下载 | 下载文章内容/图片/视频 | \"下载这篇公众号文章\" |\n| ✍️ 洗稿 | AI去痕迹+原创改写 | \"帮我洗稿/改写这篇文章\" |\n| 📱 发布 | 发布Markdown到草稿箱 | \"发布到公众号\" |\n\n---\n\n# 🔍 模块一：文章搜索\n\n通过搜狗微信搜索获取公众号文章列表，支持抓取正文。\n\n## 首次安装依赖\n\n```bash\nnpm install -g cheerio\n```\n\n## 使用方法\n\n```bash\n# 基础搜索\nnode {baseDir}/scripts/search/search_wechat.js \"关键词\"\n\n# 指定数量\nnode {baseDir}/scripts/search/search_wechat.js \"关键词\" -n 15\n\n# 保存到文件\nnode {baseDir}/scripts/search/search_wechat.js \"关键词\" -n 20 -o result.json\n\n# 解析真实链接\nnode {baseDir}/scripts/search/search_wechat.js \"关键词\" -n 5 -r\n\n# 抓取文章正文（自动启用 -r）\nnode {baseDir}/scripts/search/search_wechat.js \"关键词\" -n 5 -c\n```\n\n### 参数说明\n- `query`：搜索关键词（必填）\n- `-n, --num`：返回数量（默认 10，最大 50）\n- `-o, --output`：输出 JSON 文件路径\n- `-r, --resolve-url`：解析微信文章真实链接\n- `-c, --fetch-content`：抓取文章正文内容（自动启用 -r）\n\n### 输出字段\n- 文章标题、地址、概要、发布时间、来源公众号\n- `content`：正文内容（使用 -c 时）\n- `word_count`：字数统计（使用 -c 时）\n\n---\n\n# 📰 模块二：文章下载\n\n输入公众号文章链接，自动下载内容（Markdown+HTML）、配图和视频。\n\n## 首次安装依赖\n\n```bash\ncd {baseDir}/scripts/downloader && npm install\n```\n\n## 下载前：确认保存位置\n\n```bash\n# 查看当前配置\nnode {baseDir}/scripts/downloader/download.js --show-config\n\n# 设置默认下载路径（仅需一次）\nnode {baseDir}/scripts/downloader/download.js --set-output ~/Downloads/wechat-articles\n```\n\n- `\"isDefault\": true` → 尚未配置，需询问用户\n- `\"isDefault\": false` → 已配置，告知用户当前路径\n\n## 下载文章\n\n```bash\n# 使用默认路径\nnode {baseDir}/scripts/downloader/download.js \"<文章URL>\"\n\n# 临时指定路径\nnode {baseDir}/scripts/downloader/download.js \"<文章URL>\" --output <临时目录>\n\n# 跳过图片/视频\nnode {baseDir}/scripts/downloader/download.js \"<文章URL>\" --no-image\nnode {baseDir}/scripts/downloader/download.js \"<文章URL>\" --no-video\n```\n\n### 输出结构\n```\n<下载目录>/<文章标题>/\n├── content/article.html      # 完整 HTML\n├── metadata.json              # 标题、作者、时间等\n├── images/                    # 所有配图\n└── videos/                    # 所有视频/音频\n```\n\n### 前置要求\n- Node.js ≥ 18、Google Chrome、`npm install`（首次）\n\n---\n\n# ✍️ 模块三：文章洗稿与改写\n\n将文章改写为自然、原创的风格，去除 AI 写作痕迹，提升原创度。\n\n## 触发词\n- \"帮我洗稿这篇文章\"\n- \"改写成原创\"\n- \"降低查重率\"\n- \"去掉 AI 味\"\n\n## 洗稿工作流\n\n### 标准洗稿流程\n\n1. **获取原文** — 通过搜索（-c 抓正文）或下载获得原文\n2. **分析结构** — 识别文章类型、核心论点、段落层次\n3. **深度改写** — 按以下策略执行改写\n4. **添加 frontmatter** — 补充 title + cover\n5. **发布** — 推送到公众号草稿箱\n\n### 改写策略\n\n#### A. 结构重组（降重核心）\n- **段落重排**：调整段落顺序，打乱原文结构\n- **段落拆合**：将长段拆为短段，或合并碎片段落\n- **叙事角度转换**：时间线 ↔ 问题导向 ↔ 对比分析 ↔ 故事引入\n- **论据重组**：保留核心论据，改变展开方式\n\n#### B. 语言改写（去 AI 痕迹）\n- **删除意义膨胀句**"},{"path":"README.md","content":"# 📦 微信公众号工具包 (wechat-toolkit)\n\n> OpenClaw Skill — 微信公众号一站式工具包，集成 **搜索 → 下载 → 洗稿 → 发布** 四大功能，覆盖公众号内容创作全流程。\n>\n> 📦 **跨平台支持**: macOS / Linux / Windows（全部脚本基于 Node.js）\n\n---\n\n## ✨ 功能模块\n\n| 模块 | 功能 | 说明 |\n|------|------|------|\n| 🔍 **搜索** | 关键词搜索公众号文章 | 基于搜狗微信搜索，支持抓取正文 |\n| 📰 **下载** | 下载文章内容/配图/视频 | 输出 Markdown + HTML + 媒体文件 |\n| ✍️ **洗稿** | AI 去痕迹 + 原创改写 | 结构重组、语言改写、SEO 优化 |\n| 📱 **发布** | 一键发布到公众号草稿箱 | 基于 wenyan-cli，支持主题和视频嵌入 |\n\n---\n\n## 🚀 快速开始\n\n### 环境要求\n\n- **Node.js** ≥ 18\n- **Google Chrome**（下载模块需要）\n- [OpenClaw](https://github.com/anthropics/openclaw) 运行环境\n\n### 安装\n\n```bash\n# 1. 克隆仓库到 OpenClaw skills 目录\ngit clone git@github.com:Mr-Q526/openclaw-skill-wechat-toolkit.git skills/wechat-toolkit\n\n# 2. 安装搜索模块依赖\nnpm install -g cheerio\n\n# 3. 安装下载模块依赖\ncd skills/wechat-toolkit/scripts/downloader && npm install\n\n# 4. 安装发布模块依赖\nnpm install -g @wenyan-md/cli\n```\n\n---\n\n## 📖 使用方法\n\n### 🔍 搜索文章\n\n```bash\n# 基础搜索\nnode scripts/search/search_wechat.js \"关键词\"\n\n# 指定数量 + 抓取正文\nnode scripts/search/search_wechat.js \"关键词\" -n 5 -c\n\n# 保存结果\nnode scripts/search/search_wechat.js \"关键词\" -n 20 -o result.json\n```\n\n**参数：**\n- `-n, --num`：返回数量（默认 10，最大 50）\n- `-o, --output`：输出 JSON 文件路径\n- `-r, --resolve-url`：解析微信文章真实链接\n- `-c, --fetch-content`：抓取文章正文（自动启用 `-r`）\n\n### 📰 下载文章\n\n```bash\n# 设置默认下载路径（首次）\nnode scripts/downloader/download.js --set-output ~/Downloads/wechat-articles\n\n# 下载文章\nnode scripts/downloader/download.js \"https://mp.weixin.qq.com/s/xxx\"\n\n# 跳过图片/视频\nnode scripts/downloader/download.js \"https://mp.weixin.qq.com/s/xxx\" --no-image --no-video\n```\n\n**输出结构：**\n```\n<下载目录>/<文章标题>/\n├── content/article.html    # 完整 HTML\n├── metadata.json            # 元数据\n├── images/                  # 配图\n└── videos/                  # 视频/音频\n```\n\n### ✍️ 洗稿改写\n\n作为 OpenClaw Skill 使用，通过自然语言指令触发：\n\n- *\"帮我洗稿这篇文章\"*\n- *\"改写成原创\"*\n- *\"降低查重率\"*\n- *\"去掉 AI 味\"*\n\n**改写策略包括：** 结构重组、语言改写、标题优化、开头重写、SEO 优化等。\n\n### 📱 发布到公众号\n\n```bash\n# 配置（确保环境变量已设置）\nexport WECHAT_APP_ID=your_app_id\nexport WECHAT_APP_SECRET=your_app_secret\n\n# 发布（三种方式任选）\nnode scripts/publisher/publish.js /path/to/article.md\nwenyan publish -f article.md -t lapis -h solarized-light\nnode scripts/publisher/publish_with_video.js /path/to/article.md  # 含视频时使用\n```\n\n> ⚠️ **重要：** 你的 IP 必须添加到微信公众号后台白名单中！\n\n**Markdown 格式要求：**\n```markdown\n---\ntitle: 文章标题（必填）\ncover: /absolute/path/to/cover.jpg（必填，使用绝对路径）\n---\n\n# 正文内容...\n```\n\n---\n\n## 🖼️ 主题预览\n\nClawHub 发布包默认**不包含 PNG 预览图**，这样可以避免非文本文件限制和 50MB 体积限制。\n\n如果你本地想看每个主题的效果图，请在 skill 目录运行：\n\n```bash\nnode scripts/publisher/publish.js --generate-theme-previews\n```\n\n生成后会输出到：\n\n```bash\nscripts/publisher/theme_previews/\n```\n\n---\n\n## 📁 项目结构\n\n```\nwechat-toolkit/\n├── SKILL.md                        # OpenClaw Skill 定义\n├── README.md                       # 本文件\n├── example.md                      # 示例文章\n├── references/                     # 参考文档\n│   ├── themes.md                   #   主题配置说明\n│   └── troubleshooting.md          #   故障排查指南\n└── scripts/                        # 脚本目录（全部 Node.js，跨平台）\n    ├── search/                     #   搜索模块\n    │   └── search_"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn757qqsc7myx5e40qvf212q918259v3\",\n  \"slug\": \"wechat-toolkit\",\n  \"version\": \"1.0.2\",\n  \"publishedAt\": 1773825157460\n}"},{"path":"references/themes.md","content":"# wechat-toolkit 主题参考\n\nwechat-toolkit 现在不只暴露 wenyan 的少数几个主题，而是维护了一份统一主题目录，发布、视频发布、参考图都走同一套配置。\n\n## 快速查看\n\n```bash\nnode scripts/publisher/publish.js --list-themes\nnode scripts/publisher/theme_catalog.js list\n```\n\n## 参考图\n\nClawHub 发布包默认**不附带 PNG 预览图**，避免非文本文件限制和 50MB 上传限制。\n\n如果你本地想生成主题预览，请运行：\n\n```bash\nnode scripts/publisher/publish.js --generate-theme-previews\n```\n\n生成后会得到：\n\n```bash\nscripts/publisher/theme_previews/theme-gallery.html\nscripts/publisher/theme_previews/theme-gallery.png\nscripts/publisher/theme_previews/<theme-id>.png\n```\n\n## Bundled 主题\n\n### 内置主题\n\n- `default` - 简洁稳妥，适合资讯、总结、日报\n- `orangeheart` - 暖色杂志感，适合人物、品牌、案例文章\n- `rainbow` - 色彩活泼，适合活动、清单、创意内容\n- `lapis` - 冷调科技蓝，适合教程、评测、工具介绍\n- `pie` - 现代锐利，适合观点、方法论、深度分析\n- `maize` - 浅暖纸感，适合教程、拆解、轻阅读\n- `purple` - 柔和优雅，适合专栏、随笔、访谈\n- `phycat` - 薄荷清新，适合科技资讯、产品上手、工具流\n\n### 自定义主题\n\n- `aurora` - 渐变标题和清爽层次，适合 AI 趋势、产品观察\n- `newsroom` - 报刊专栏风，适合评论、行业观察、长文\n- `sage` - 柔和笔记感，适合经验总结、个人成长、复盘\n- `ember` - 暖调杂志封面感，适合故事、案例、品牌内容\n\n## 推荐命令\n\n```bash\n# 默认稳妥\nnode scripts/publisher/publish.js article.md default\n\n# 技术/工具类\nnode scripts/publisher/publish.js article.md lapis\nnode scripts/publisher/publish.js article.md aurora\n\n# 长文/评论\nnode scripts/publisher/publish.js article.md pie\nnode scripts/publisher/publish.js article.md newsroom\n\n# 个人表达/复盘\nnode scripts/publisher/publish.js article.md purple\nnode scripts/publisher/publish.js article.md sage\n\n# 暖色案例/品牌文\nnode scripts/publisher/publish.js article.md orangeheart\nnode scripts/publisher/publish.js article.md ember\n```\n\n## 代码高亮主题\n\n- `atom-one-dark`\n- `atom-one-light`\n- `dracula`\n- `github`\n- `github-dark`\n- `monokai`\n- `solarized-dark`\n- `solarized-light`\n- `xcode`\n\n## 自定义 CSS 主题\n\n除了 bundled 主题外，也支持直接传 CSS 路径：\n\n```bash\nnode scripts/publisher/publish.js article.md /absolute/path/to/theme.css\nnode scripts/publisher/publish_with_video.js article.md /absolute/path/to/theme.css\n```\n\n## 原生 wenyan 能力\n\n如果你要管理 wenyan 自己安装的主题：\n\n```bash\nwenyan theme -l\nwenyan theme --add --name my-theme --path /path/to/theme.css\nwenyan theme --rm my-theme\n```"},{"path":"references/troubleshooting.md","content":"# 故障排查指南\n\nwechat-publisher skill 的常见问题和解决方案。\n\n## 1. ❌ IP 不在白名单\n\n**错误信息：**\n```\nError: ip not in whitelist\n```\n\n**原因：** 你的 IP 地址未添加到微信公众号后台白名单。\n\n**解决方法：**\n\n1. **获取你的公网 IP：**\n   ```bash\n   curl ifconfig.me\n   ```\n\n2. **登录微信公众号后台：** https://mp.weixin.qq.com/\n\n3. **添加 IP 白名单：**\n   - 开发 → 基本配置\n   - IP 白名单 → 添加你的 IP\n\n4. **重试发布**\n\n**详细说明：** https://yuzhi.tech/docs/wenyan/upload\n\n---\n\n## 2. ❌ wenyan-cli 未安装\n\n**错误信息：**\n```\nwenyan: command not found\n```\n\n**解决方法：**\n```bash\nnpm install -g @wenyan-md/cli\n```\n\n**验证安装：**\n```bash\nwenyan --help\n```\n\n---\n\n## 3. ❌ 环境变量未设置\n\n**错误信息：**\n```\nError: WECHAT_APP_ID is required\n```\n\n**解决方法：**\n\n**方式 1: 使用 setup.sh**\n```bash\ncd /Users/leebot/.openclaw/workspace/wechat-publisher\nsource ./scripts/setup.sh\n```\n\n**方式 2: 手动设置（临时）**\n```bash\nexport WECHAT_APP_ID=your_wechat_app_id\nexport WECHAT_APP_SECRET=your_wechat_app_secret\n```\n\n**方式 3: 永久设置**\n\n编辑 `~/.zshrc` 或 `~/.bashrc`，添加：\n```bash\nexport WECHAT_APP_ID=your_wechat_app_id\nexport WECHAT_APP_SECRET=your_wechat_app_secret\n```\n\n然后：\n```bash\nsource ~/.zshrc  # 或 source ~/.bashrc\n```\n\n---\n\n## 4. ❌ Frontmatter 缺失（最常见！）\n\n**错误信息：**\n```\nError: 未能找到文章封面\n```\n\n**原因：** Markdown 文件缺少必需的 frontmatter（特别是 `title` 字段）。\n\n**⚠️ 重要：** wenyan-cli **强制要求** frontmatter，必须在 Markdown 文件顶部添加！\n\n**解决方法：**\n\n**方案 1：有封面图**\n```markdown\n---\ntitle: 你的文章标题\ncover: /path/to/cover.jpg\n---\n\n# 正文开始\n...\n```\n\n**方案 2：无封面图（推荐，正文有图片即可）**\n```markdown\n---\ntitle: 你的文章标题\n---\n\n# 正文\n\n![配图](https://example.com/image.jpg)  # 正文图片会自动上传\n\n内容...\n```\n\n**⚠️ 关键点：**\n- `title` 字段是**必须的**，缺少会报错 \"未能找到文章封面\"\n- `cover` 字段可选：如果正文中有图片，wenyan 会自动使用第一张图作为封面\n- frontmatter 必须在文件最顶部，前面不能有空行或其他内容\n- frontmatter 使用三个短横线 `---` 包围\n\n**错误示例（会报错）：**\n```markdown\n# 我的文章\n\n没有 frontmatter，wenyan 会报错！\n```\n\n---\n\n## 5. ❌ 图片上传失败\n\n**错误信息：**\n```\nError: Failed to upload image\n```\n\n**可能原因：**\n\n1. **图片路径错误** - 检查本地路径是否正确\n2. **图片格式不支持** - 微信支持 jpg/png/gif\n3. **图片过大** - 微信限制单张图片 < 10MB\n4. **网络图片无法访问** - 检查 URL 是否可访问\n\n**解决方法：**\n\n1. **检查图片路径：**\n   ```bash\n   ls -lh /path/to/image.jpg\n   ```\n\n2. **检查图片格式：**\n   ```bash\n   file /path/to/image.jpg\n   ```\n\n3. **压缩图片（如果过大）：**\n   ```bash\n   # 使用 ImageMagick\n   convert large.jpg -quality 80 -resize 1200x compressed.jpg\n   ```\n\n4. **测试网络图片：**\n   ```bash\n   curl -I https://example.com/image.jpg\n   ```\n\n---\n\n## 6. ❌ API 凭证错误\n\n**错误信息：**\n```\nError: invalid credential\n```\n\n**原因：** AppID 或 AppSecret 错误。\n\n**解决方法：**\n\n1. **检查 TOOLS.md 中的凭证是否正确**\n\n2. **重新获取凭证：**\n   - 登录：https://mp.weixin.qq.com/\n   - 开发 → 基本配置\n   - 查看 AppID 和 AppSecret\n\n3. **更新环境变量**\n\n4. **重试发布**\n\n---\n\n## 7. ❌ Node.js 版本过低\n\n**错误信息：**\n```\nError: Requires Node.js >= 14.0.0\n```\n\n**解决方法：**\n\n1. **检查当前版本：**\n   ```bash\n   node --version\n   ```\n\n2. **升级 Node.js：**\n   ```bash\n   # 使用 Homebrew (macOS)\n   brew upgrade node\n   \n   # 或使用 nvm\n   nvm install stable\n   nvm use stable\n   ```\n\n---\n\n## 8. ❌ 网络连接问题\n\n**错误信息：**\n```\nError: connect ETIMEDOUT\n```\n\n**可能原因：**\n\n1. **网络不稳定** - 检查网络连接\n2. **防火墙阻止** - 检查防火墙设置\n3. **微信 API 服务异常** - 稍后重试\n\n**解决方法：**\n\n1. **测试网络连接：**\n   ```bash\n   curl -I https://api.wei"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"微信公众号一站式工具包 — 集成文章搜索、文章下载、AI洗稿改写、公众号发布四大功能。当用户需要搜索/下载/改写/发布微信公众号文章时使用。 Skill: wechat-toolkit Owner: mr-q526 Summary: 微信公众号一站式工具包 — 集成文章搜索、文章下载、AI洗稿改写、公众号发布四大功能。当用户需要搜索/下载/改写/发布微信公众号文章时使用。 Tags: latest:1.0.2 Version history: v1.0.2 | 2026-03-18T09:12:37.460Z | user - 新增 12 套内置公众号文章发布主题，实现 theme 目录 + 一键预览拼图/单图，便于选择和对比。 - 新增如下文件：主题 CSS（如 aurora.css、ember.css 等），主题预览图，主题预览 HTML，总览拼图，主题描述 JSON 与示例文档。 - 发布脚本支持 --list-themes 与 --generate-theme-previews，并详列预览目录和用法说明。 - SKILL 文档补充所有可用主题名、预览相关说明，","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":813,"uniquenessScore":48,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-09T04:47:05.174Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-09T04:47:05.174Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-09T12:16:47.545Z","emptyReason":null},"items":[{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-10T18:48:31.762Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}