{"id":37228501,"url":"https://github.com/geekjourneyx/md2wechat-skill","last_synced_at":"2026-04-01T21:08:38.370Z","repository":{"id":331868630,"uuid":"1132020002","full_name":"geekjourneyx/md2wechat-skill","owner":"geekjourneyx","description":"  用 Markdown 写公众号文章，一键转换为精美排版并自动上传到微信草稿箱。支持 AI 多主题样式和批量发布，让公众号写作像发朋友圈一样简单。","archived":false,"fork":false,"pushed_at":"2026-03-27T16:32:36.000Z","size":129165,"stargazers_count":863,"open_issues_count":1,"forks_count":135,"subscribers_count":6,"default_branch":"main","last_synced_at":"2026-03-28T00:06:34.894Z","etag":null,"topics":["claude-skills","codex-skills","golang","markdown-converter","markdown-to-wechat","md2wechat","openclaw","openclaw-skill","openclaw-skills","skills","wechat"],"latest_commit_sha":null,"homepage":"https://md2wechat.cn","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/geekjourneyx.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-01-11T06:36:13.000Z","updated_at":"2026-03-27T23:28:02.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/geekjourneyx/md2wechat-skill","commit_stats":null,"previous_names":["geekjourneyx/md2wechat-skill"],"tags_count":19,"template":false,"template_full_name":null,"purl":"pkg:github/geekjourneyx/md2wechat-skill","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geekjourneyx%2Fmd2wechat-skill","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geekjourneyx%2Fmd2wechat-skill/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geekjourneyx%2Fmd2wechat-skill/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geekjourneyx%2Fmd2wechat-skill/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/geekjourneyx","download_url":"https://codeload.github.com/geekjourneyx/md2wechat-skill/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geekjourneyx%2Fmd2wechat-skill/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31292023,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T13:12:26.723Z","status":"ssl_error","status_checked_at":"2026-04-01T13:12:25.102Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["claude-skills","codex-skills","golang","markdown-converter","markdown-to-wechat","md2wechat","openclaw","openclaw-skill","openclaw-skills","skills","wechat"],"created_at":"2026-01-15T03:28:03.097Z","updated_at":"2026-04-01T21:08:38.352Z","avatar_url":"https://github.com/geekjourneyx.png","language":"Go","funding_links":[],"categories":["Claude Code Skills","Skills","6 つのトラック","Go","✍️ Writing \u0026 Research"],"sub_categories":["文档与写作","Community Skills","Tier 4：GTM / マーケティング / Launch"],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003ch1\u003e\n  \u003cimg src=\"assets/favicon.ico\" alt=\"md2wechat logo\" width=\"28\" /\u003e\n  md2wechat\n\u003c/h1\u003e\n\n\u003cimg src=\"assets/readme-cover.webp\" alt=\"md2wechat\" width=\"520\" /\u003e\n\n**用 Markdown 写公众号文章，像发朋友圈一样简单**\n\n[![Go Version](https://img.shields.io/badge/Go-1.26.1+-00ADD8?logo=go)](https://golang.org)\n[![License](https://img.shields.io/badge/license-MIT-blue)](LICENSE)\n[![GitHub Release](https://img.shields.io/badge/download-latest-green)](https://github.com/geekjourneyx/md2wechat-skill/releases)\n[![Claude Code](https://img.shields.io/badge/Claude%20Code-Skill-purple)](#coding-agent)\n[![OpenClaw](https://img.shields.io/badge/OpenClaw-Compatible-00b0aa)](#openclaw)\n[![zread](https://img.shields.io/badge/Ask_Zread-_.svg?style=flat\u0026color=00b0aa\u0026labelColor=000000\u0026logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTQuOTYxNTYgMS42MDAxSDIuMjQxNTZDMS44ODgxIDEuNjAwMSAxLjYwMTU2IDEuODg2NjQgMS42MDE1NiAyLjI0MDFWNC45NjAxQzEuNjAxNTYgNS4zMTM1NiAxLjg4ODEgNS42MDAxIDIuMjQxNTYgNS42MDAxSDQuOTYxNTZDNS4zMTUwMiA1LjYwMDEgNS42MDE1NiA1LjMxMzU2IDUuNjAxNTYgNC45NjAxVjIuMjQwMUM1LjYwMTU2IDEuODg2NjQgNS4zMTUwMiAxLjYwMDEgNC45NjE1NiAxLjYwMDFaIiBmaWxsPSIjZmZmIi8%2BCjxwYXRoIGQ9Ik00Ljk2MTU2IDEwLjM5OTlIMi4yNDE1NkMxLjg4ODEgMTAuMzk5OSAxLjYwMTU2IDEwLjY4NjQgMS42MDE1NiAxMS4wMzk5VjEzLjc1OTlDMS42MDE1NiAxNC4xMTM0IDEuODg4MSAxNC4zOTk5IDIuMjQxNTYgMTQuMzk5OUg0Ljk2MTU2QzUuMzE1MDIgMTQuMzk5OSA1LjYwMTU2IDE0LjExMzQgNS42MDE1NiAxMy43NTk5VjExLjAzOTlDNS42MDE1NiAxMC42ODY0IDUuMzE1MDIgMTAuMzk5OSA0Ljk2MTU2IDEwLjM5OTlaIiBmaWxsPSIjZmZmIi8%2BCjxwYXRoIGQ9Ik0xMy43NTg0IDEuNjAwMUgxMS4wMzg0QzEwLjY4NSAxLjYwMDEgMTAuMzk4NCAxLjg4NjY0IDEwLjM5ODQgMi4yNDAxVjQuOTYwMUMxMC4zOTg0IDUuMzEzNTYgMTAuNjg1IDUuNjAwMSAxMS4wMzg0IDUuNjAwMUgxMy43NTg0QzE0LjExMTkgNS42MDAxIDE0LjM5ODQgNS4zMTM1NiAxNC4zOTg0IDQuOTYwMVYyLjI0MDFDMTQuMzk4NCAxLjg4NjY0IDE0LjExMTkgMS42MDAxIDEzLjc1ODQgMS42MDAxWiIgZmlsbD0iI2ZmZiIvPgo8cGF0aCBkPSJNNCAxMkwxMiA0TDQgMTJaIiBmaWxsPSIjZmZmIi8%2BCjxwYXRoIGQ9Ik00IDEyTDEyIDQiIHN0cm9rZT0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgo8L3N2Zz4K\u0026logoColor=ffffff)](https://zread.ai/geekjourneyx/md2wechat-skill)\n\n[快速开始](#quickstart) • [Coding Agent](#coding-agent) • [Obsidian / Claudian](#obsidian-claudian) • [OpenClaw](#openclaw) • [功能介绍](#features) • [使用说明](#usage) • [常见问题](#faq)\n\n---\n\n## 立即开始\n\n如果你第一次接触 `md2wechat`，先按这个顺序走：\n\n- 如果你是 mac 用户，优先用 Homebrew 安装 CLI：`brew install geekjourneyx/tap/md2wechat`\n- 如果你已经有稳定可用的 Node/npm 环境，也可以直接全局安装 CLI：`npm install -g @geekjourneyx/md2wechat`\n- 如果你已经有稳定可用的 Go 环境，也可以选 `go install github.com/geekjourneyx/md2wechat-skill/cmd/md2wechat@v2.0.7`\n- 想直接安装 CLI：看 [安装指南](docs/INSTALL.md)\n- 想申请 API 服务或咨询：扫描文末公众号二维码联系，备注「API咨询」\n- 想先看支持的主题 / 图片 prompt / provider：执行 discovery 命令\n- 想在 Claude Code / Codex / OpenCode 等 Coding Agent 里使用：先安装 CLI，再执行 `npx skills add`\n- 想在 Obsidian 的 Claudian 插件里使用：先安装 CLI，再执行 `npx skills add`，然后看 [Obsidian / Claudian 指南](docs/OBSIDIAN.md)\n\n```bash\n# 查看当前实例支持什么\nmd2wechat capabilities --json\nmd2wechat themes list --json\nmd2wechat prompts list --kind image --json\nmd2wechat providers list --json\n\n# 任选一种方式先安装 CLI，再在 Coding Agent 中安装 skill\nnpm install -g @geekjourneyx/md2wechat\ncurl -fsSL https://github.com/geekjourneyx/md2wechat-skill/releases/download/v2.0.7/install.sh | bash\n\n# 安装 skill\nnpx skills add https://github.com/geekjourneyx/md2wechat-skill --skill md2wechat\n```\n\n### 直接发给 Agent\n\n如果你不想自己组织命令，可以直接把下面的话发给 Claude Code / Codex / OpenCode 等 Agent：\n\n```text\n请帮我安装 md2wechat 并验证可用。按这个顺序执行：\n1. 运行：curl -fsSL https://github.com/geekjourneyx/md2wechat-skill/releases/download/v2.0.7/install.sh | bash\n2. 运行：npx skills add https://github.com/geekjourneyx/md2wechat-skill --skill md2wechat\n3. 运行：export PATH=\"$HOME/.local/bin:$PATH\"\n4. 运行：md2wechat version --json\n5. 运行：md2wechat config init\n6. 运行：md2wechat capabilities --json\n如果某一步失败，请直接告诉我失败原因和下一步修复命令，不要省略命令。\n```\n\n如果你在 OpenClaw 里使用，可以直接发：\n\n```text\n请帮我安装 OpenClaw 版 md2wechat，并验证 CLI 和 skill 都可用。按这个顺序执行：\n1. 运行：curl -fsSL https://github.com/geekjourneyx/md2wechat-skill/releases/download/v2.0.7/install-openclaw.sh | bash\n2. 运行：export PATH=\"$HOME/.local/bin:$PATH\"\n3. 运行：md2wechat version --json\n4. 运行：md2wechat config init\n5. 运行：md2wechat capabilities --json\n6. 如果我已经装过 skill，再检查：~/.openclaw/skills/md2wechat/ 是否存在，并确认 `command -v md2wechat` 有输出\n如果某一步失败，请直接告诉我失败原因和下一步修复命令，不要省略命令。\n```\n\n\u003c/div\u003e\n\n---\n\n\u003e ### 先看这里\n\u003e - `convert` 默认走 `API` 模式，需要你自己的 `md2wechat.cn` API Key；如需咨询或申请测试，扫描文末公众号二维码联系，备注「API咨询」\n\u003e - `AI` 模式不需要 `md2wechat.cn` API Key，但当前 CLI 返回的是 `AI request / prompt`，需要由 Claude Code / Codex / OpenAI 等外部模型继续完成 HTML\n\u003e - 主题、图片 prompt、provider 不要靠猜，先执行 `md2wechat themes list --json`、`md2wechat prompts list --kind image --json`、`md2wechat providers list --json`\n\u003e - 安装、配置和校验入口分别看：[安装指南](docs/INSTALL.md) / [配置指南](docs/CONFIG.md) / [能力发现](docs/DISCOVERY.md)\n\n---\n\n\u003ca id=\"quickstart\"\u003e\u003c/a\u003e\n\n## 5分钟快速上手\n\n### 第一步：安装工具\n\n推荐先看 [安装指南](docs/INSTALL.md)。如果你只想快速开始：\n\n- mac 用户：优先使用 Homebrew\n- 已有 Node/npm 环境：可以直接用 NPM 全局安装\n- 已有 Go 环境：也可以使用 `go install`\n- 其他环境：优先使用固定版本 `install.sh`\n\n```bash\nbrew install geekjourneyx/tap/md2wechat\n```\n\n如果你更常用 Node/npm，也可以直接安装：\n\n```bash\nnpm install -g @geekjourneyx/md2wechat\n```\n\nNPM 包不会在本地重新编译 Go 项目。它会下载与包版本同号的 GitHub Release 二进制，并校验同一个 `checksums.txt`，因此和 Homebrew / `install.sh` 复用同一套发布产物。\n\n当前 npm 安装目标矩阵：\n\n- macOS: `amd64` / `arm64`\n- Linux: `amd64` / `arm64`\n- Windows: `amd64`\n\n如果你的 npm 默认走 `https://registry.npmmirror.com`，而刚发布的新版本还没同步过去，可能会出现 tarball `404`。这种情况下先改用官方源安装：\n\n```bash\nnpm install -g @geekjourneyx/md2wechat --registry=https://registry.npmjs.org/\n```\n\n如果你不用 Homebrew，或者想走固定版本 release + checksum 路径，再用安装脚本：\n\n```bash\ncurl -fsSL https://github.com/geekjourneyx/md2wechat-skill/releases/download/v2.0.7/install.sh | bash\n```\n\n默认会安装到用户级目录：\n\n- macOS / Linux: `~/.local/bin/md2wechat`\n- Windows: 当前用户目录或 `C:\\Program Files\\md2wechat\\md2wechat.exe`\n\n如果脚本执行完后当前终端仍然提示 `command not found: md2wechat`，先执行：\n\n```bash\nexport PATH=\"$HOME/.local/bin:$PATH\"\nmd2wechat version --json\n```\n\nWindows PowerShell：\n\n```powershell\n$env:MD2WECHAT_RELEASE_BASE_URL = \"https://github.com/geekjourneyx/md2wechat-skill/releases/download/v2.0.7\"\niex ((New-Object System.Net.WebClient).DownloadString(\"$env:MD2WECHAT_RELEASE_BASE_URL/install.ps1\"))\n```\n\n如果你主要在 Claude Code / Codex / OpenCode 等 Coding Agent 中使用，推荐先安装 CLI，再安装 skill。mac 用户优先用 Homebrew：\n\n```bash\nbrew install geekjourneyx/tap/md2wechat\n```\n\n如果你已经有 Go 环境，也可以改成：\n\n```bash\ngo install github.com/geekjourneyx/md2wechat-skill/cmd/md2wechat@v2.0.7\n```\n\n然后安装 skill：\n\n```bash\nnpx skills add https://github.com/geekjourneyx/md2wechat-skill --skill md2wechat\n```\n\n如果你要直接发给 Agent，建议把这句也带上：\n\n```text\n如果 install.sh 执行完后当前终端仍然提示 command not found: md2wechat，请继续执行：\nexport PATH=\"$HOME/.local/bin:$PATH\"\nmd2wechat version --json\n```\n\n手动下载 release 资产时，请同时校验 `checksums.txt`。主路径应始终指向固定版本的 release，不要使用 `latest` 或 `main` 作为安装入口。\n\n### 第二步：配置微信（只需一次）\n\n```bash\nmd2wechat config init\n```\n\n用记事本打开生成的配置文件（会显示路径），填入两个信息：\n\n| 配置项 | 是什么 | 在哪获取 |\n|--------|--------|----------|\n| AppID | 公众号唯一标识 | [微信开发者平台](https://developers.weixin.qq.com/platform) → 开发接口管理 |\n| Secret | API 密钥 | 同上，需要管理员权限 |\n\n第一次接微信开发，建议直接看：\n\n- [微信凭证与 IP 白名单指南](docs/WECHAT-CREDENTIALS.md)\n\n里面单独讲清楚了：\n\n- AppID / AppSecret 去哪里拿\n- IP 白名单怎么配\n- 为什么白名单没配时会报错\n- 配好后怎么一步步验证\n\n### 第三步：开始使用\n\n```bash\n# 1. 用 Markdown 写好文章（假设文件叫 article.md）\n\n# 2. 先确认系统最终会怎么理解这篇文章\nmd2wechat inspect article.md\n\n# 3. 生成本地 HTML 预览文件\nmd2wechat preview article.md\n\n# 4. 需要时再预览 convert 输出或创建草稿\nmd2wechat convert article.md --preview\nmd2wechat convert article.md --draft --cover cover.jpg\n```\n\n\u003e **小贴士**：`inspect` 负责解释最终 metadata / readiness，`preview` 负责本地确认视觉结果；它们都不会触发上传或草稿副作用。\n\n## 这是什么？\n\n**md2wechat** 是一个让你的微信公众号写作更高效的神器。\n\n\u003e **一句话理解**：用 Markdown 写文章 → 一键转换 → 自动发到微信草稿箱\n\n**适合谁用？**\n\n| 你是 | 痛点 | md2wechat 帮你 |\n|------|------|---------------|\n| 内容创作者 | 微信编辑器太难用，排版花时间 | Markdown 写作，自动排版 |\n| 产品经理 | 要发公告，但不会 HTML | 不用学代码，一行命令搞定 |\n| 程序员 | 习惯 Markdown，讨厌微信编辑器 | 保持你的写作习惯 |\n| AI 用户 | 用 AI 生成内容，但要手动复制粘贴 | AI 生成 → 微信草稿，无缝衔接 |\n\n### 站点入口\n\n- 国际站: [md2wechat.com](https://www.md2wechat.com/)\n- 国内站 / API 主站: [md2wechat.cn](https://md2wechat.cn)\n- GitHub 项目: [geekjourneyx/md2wechat-skill](https://github.com/geekjourneyx/md2wechat-skill)\n\n### 关于作者\n\n这个项目由 [geekjourneyx](https://github.com/geekjourneyx/geekjourneyx) 维护。\n\n- 独立开发者 / AI Builder / AI 科技领域博主\n- 持续打磨面向 AI Agent 的 CLI、API 与自动化工作流\n- 相关项目和长期方向可见 GitHub 主页: [github.com/geekjourneyx/geekjourneyx](https://github.com/geekjourneyx/geekjourneyx)\n\n---\n\n\u003ca id=\"features\"\u003e\u003c/a\u003e\n\n## 核心功能\n\n```mermaid\nflowchart LR\n    A[用 Markdown 写文章] --\u003e B{选择模式}\n\n    B --\u003e|API 模式| C[调用 md2wechat.cn API]\n    C --\u003e D[获取 HTML]\n\n    B --\u003e|AI 模式| E[生成 AI request]\n    E --\u003e F[由 Claude 等继续生成 HTML]\n\n    D --\u003e G[预览效果]\n    F --\u003e G\n\n    G --\u003e H{满意吗}\n    H --\u003e|不满意| B\n    H --\u003e|满意| I[上传图片]\n    I --\u003e J[发送到微信草稿箱]\n    J --\u003e K[完成]\n\n    classDef nodeA fill:#e3f2fd,stroke:#2196f3,color:#0d47a1\n    classDef nodeE fill:#fff3e0,stroke:#ff9800,color:#e65100\n    classDef nodeJ fill:#e8f5e9,stroke:#4caf50,color:#1b5e20\n    classDef nodeK fill:#c8e6c9,stroke:#4caf50,color:#1b5e20\n\n    class A nodeA\n    class E nodeE\n    class J nodeJ\n    class K nodeK\n```\n\n### 五大核心功能\n\n| 功能 | 命令 | 说明 | 适合谁 |\n|------|------|------|--------|\n| **Markdown 转换** | `convert` | 将 Markdown 转换为微信格式 HTML | 所有用户 |\n| **风格写作** | `write` | 用创作者风格辅助写作，自动生成文章和封面提示词 | 写作小白、内容创作者 |\n| **AI 去痕** | `humanize` | 去除 AI 生成痕迹，让文章听起来更自然、像人写的 | AI 写作用户 |\n| **小绿书** | `create_image_post` | 创建图片消息（小绿书），最多 20 张图片 | 图片内容创作者 |\n| **草稿推送** | `convert --draft` | 一键发送到微信草稿箱 | 需要频繁发布的用户 |\n\n**`write` 与 `convert` 的区别：**\n\n| 对比项 | `write` 命令 | `convert` 命令 |\n|--------|-------------|---------------|\n| **输入** | 一个想法/观点/片段 | 完整的 Markdown 文件 |\n| **输出** | 结构化提示词（AI 处理后生成文章） | 微信格式 HTML |\n| **用途** | 从零开始创作 | 格式转换已有内容 |\n| **封面** | 自动生成封面提示词 | 需要手动指定封面图 |\n\n**简单理解：**\n- `write` = 帮你写文章（从想法到完整文章）\n- `convert` = 帮你排版（从 Markdown 到微信格式）\n\n### 两种转换模式\n\n| 模式 | 适合谁 | 特点 | 样式 |\n|------|--------|------|------|\n| **API 模式** | 追求稳定、快速 | 调用 md2wechat.cn API，秒级响应 | 简洁专业 |\n| **AI 模式** | 追求精美排版 | 生成 AI request / prompt，样式更丰富 | 秋日暖光 / 春日清新 / 深海静谧 |\n\n### 完整工作流程\n\n```mermaid\nflowchart LR\n    A1[Markdown 写作] --\u003e A2[插入图片]\n    A2 --\u003e B1{选择模式}\n\n    B1 --\u003e|API| B2[md2wechat.cn]\n    B1 --\u003e|AI| B3[生成 AI request]\n\n    B2 --\u003e B4[HTML 生成]\n    B3 --\u003e B4[由 Claude 等继续生成 HTML]\n\n    B4 --\u003e C1[预览效果]\n    C1 --\u003e C2{满意吗}\n\n    C2 --\u003e|调整| B1\n    C2 --\u003e|OK| C3[上传图片]\n    C3 --\u003e C4[发送草稿]\n    C4 --\u003e C5[完成]\n\n    classDef write fill:#e3f2fd,stroke:#2196f3,color:#0d47a1\n    classDef ai fill:#fff3e0,stroke:#ff9800,color:#e65100\n    classDef done fill:#e8f5e9,stroke:#4caf50,color:#1b5e20\n    classDef success fill:#c8e6c9,stroke:#4caf50,color:#1b5e20\n\n    class A1,A2 write\n    class B3 ai\n    class C4,C5 done\n```\n\n\u003ca id=\"usage\"\u003e\u003c/a\u003e\n\n## 使用方法\n\n### 基础命令\n\n```bash\n# 先检查最终标题/摘要/发布风险\nmd2wechat inspect article.md\n\n# 生成本地预览 HTML（输出文件路径）\nmd2wechat preview article.md\n\n# 预览转换效果（不发送）\nmd2wechat convert article.md --preview\n\n# 转换并保存为 HTML 文件\nmd2wechat convert article.md -o output.html\n\n# 使用 AI 模式生成精美排版\nmd2wechat convert article.md --mode ai --theme autumn-warm --preview\n\n# 显式覆盖标题、作者、摘要\nmd2wechat convert article.md --title \"新标题\" --author \"作者名\" --digest \"摘要\"\n```\n\n### 文章元数据\n\n`convert` 的文章元数据优先级如下：\n\n- 标题：`--title` -\u003e `frontmatter.title` -\u003e 正文首个 Markdown 标题 -\u003e `未命名文章`\n- 作者：`--author` -\u003e `frontmatter.author`\n- 摘要：`--digest` -\u003e `frontmatter.digest` -\u003e `frontmatter.summary` -\u003e `frontmatter.description`\n\n长度限制：\n\n- 标题最多 32 个字符\n- 作者最多 16 个字符\n- 摘要最多 128 个字符\n\n如果创建草稿时摘要仍为空，草稿层会从正文 HTML 生成一个 120 字符兜底摘要。`convert` 不会自动移除正文里的一级标题，所以同一个 H1 可能既作为草稿标题来源，也继续出现在文章正文里。\n\n### 确认层命令\n\n在真正执行 `convert` / `--draft` 之前，推荐先走确认层：\n\n```bash\n# 看系统最终会如何解释这篇文章\nmd2wechat inspect article.md\n\n# 生成本地预览 HTML 文件\nmd2wechat preview article.md\n```\n\n说明：\n\n- `inspect` 会输出最终标题、作者、摘要来源，以及 `upload/draft` readiness 和风险检查。\n- `inspect` 还会显式暴露一些常见误解，例如 `TITLE_BODY_MISMATCH`、`DIGEST_METADATA_ONLY`、`IMAGE_REPLACEMENT_REQUIRES_UPLOAD_OR_DRAFT`。\n- `preview` 第一版会生成一个本地 HTML 文件，不会启动重工作台，也不会触发上传或草稿副作用。\n- `preview --mode ai` 不会伪造最终视觉稿；它会明确标注当前只是 AI request / prompt，页面只作为确认层预览。\n- `--title` / `--author` / `--digest` 控制的是微信草稿 metadata；它们不保证直接改变正文里可见的 H1、作者行或摘要段落。\n- Markdown 图片只有在 `--upload` 或 `--draft` 流程中才会被上传并替换为已发布 URL；纯 `convert --preview` 只预览正文输出。\n- `--json` 命令约定 stdout 只输出 JSON，适合 Agent 和脚本直接消费。\n\n### Agent 可发现命令\n\n如果你是 Agent、自动化脚本，或者想先确认当前实例支持哪些能力，先执行这些命令：\n\n```bash\n# 总览当前 CLI 能力、默认模式、可用资源\nmd2wechat capabilities --json\n\n# 看文章最终 metadata 与 readiness\nmd2wechat inspect article.md --json\n\n# 查看图片 provider\nmd2wechat providers list --json\n\n# 查看可用主题\nmd2wechat themes list --json\n\n# 查看内置 Prompt Catalog\nmd2wechat prompts list --json\nmd2wechat prompts list --kind image --json\nmd2wechat prompts list --kind image --archetype cover --json\n```\n\n需要查看具体资源时，可继续用：\n\n```bash\nmd2wechat providers show openrouter --json\nmd2wechat providers show volcengine --json\nmd2wechat themes show autumn-warm --json\nmd2wechat prompts show cover-default --kind image --json\nmd2wechat prompts show cover-hero --kind image --archetype cover --tag hero --json\nmd2wechat prompts show infographic-victorian-engraving-banner --kind image --archetype infographic --tag victorian --json\n```\n\nPrompt 模板也可以直接渲染：\n\n```bash\nmd2wechat prompts render cover-default \\\n  --kind image \\\n  --var article_title='从 0 到 1 做好公众号封面' \\\n  --var article_summary='一份关于封面图策略的实战清单' \\\n  --json\n```\n\n详细说明见 [docs/DISCOVERY.md](docs/DISCOVERY.md)。\n\n图片 prompt 的底层统一归类为 `kind=image`。`cover` 和 `infographic` 是主要用途分组，不是两套独立系统。判断某个 preset 能否兼作封面或信息图时，优先看 `prompts show --json` 返回的 `primary_use_case`、`compatible_use_cases`、`recommended_aspect_ratios` 和 `default_aspect_ratio`。\n\n### 风格写作\n\n```bash\n# 查看所有可用写作风格\nmd2wechat write --list\n\n# 用 Dan Koe 风格写文章（交互模式）\nmd2wechat write\n\n# 用指定风格写文章，从观点生成\nmd2wechat write --style dan-koe\n\n# 润色现有文章\nmd2wechat write --style dan-koe --input-type fragment article.md\n\n# 生成匹配的封面提示词\nmd2wechat write --style dan-koe --cover-only\n\n# 同时生成文章和封面\nmd2wechat write --style dan-koe --cover\n```\n\n**写作风格说明：**\n\n| 风格 | 特点 | 适合内容 |\n|------|------|----------|\n| **Dan Koe** | 深刻但不晦涩，犀利但不刻薄，有哲学深度但接地气 | 个人成长、观点文章、评论 |\n\n**如何添加自定义风格：**\n\n在 `writers/` 目录下创建 YAML 文件即可，格式参考 `writers/dan-koe.yaml`。\n\n### Prompt Catalog\n\n除了 `themes/` 和 `writers/`，项目现在还提供内置 Prompt Catalog，用于承载：\n\n- `humanize` 的强度模板\n- `write` 的润色模板\n- 后续扩展的图片 archetype，例如封面图、信息图、配图\n\n当前内置 prompt kind：\n\n- `humanizer`\n- `refine`\n- `image`\n\nPrompt 覆盖顺序：\n\n- `MD2WECHAT_PROMPTS_DIR`\n- `./prompts`\n- `~/.config/md2wechat/prompts`\n- 内置 prompt 资产\n\n这意味着纯二进制安装也能用默认 prompt，而用户和平台仍然可以覆盖。\n\n### 风格写作工作原理\n\n```\n┌─────────────────────────────────────────────────────────────────────┐\n│                      风格写作 (write 命令)                           │\n│                                                                       │\n│  你只需要提供一个想法 → AI 自动生成符合特定创作者风格的文章            │\n│                                                                       │\n└─────────────────────────────────────────────────────────────────────┘\n```\n\n**核心概念：**\n\n| 概念 | 说明 | 示例 |\n|------|------|------|\n| **写作风格** | 特定创作者的写作 DNA，包括语气、结构、用词习惯 | Dan Koe：深刻犀利、接地气 |\n| **输入类型** | 你提供的内容类型 | 观点、片段、大纲、标题 |\n| **AI 模式** | 返回结构化提示词，由 Claude 等大模型生成内容 | 默认模式 |\n| **封面提示词** | 根据文章内容自动生成的配图提示 | 匹配写作风格 |\n\n**完整工作流程：**\n\n```mermaid\nflowchart LR\n    A[你提供想法] --\u003e B{选择写作风格}\n    B --\u003e C[构建结构化提示词]\n\n    C --\u003e D{AI 处理}\n    D --\u003e E[生成完整文章]\n\n    E --\u003e F{需要封面?}\n    F --\u003e|是| G[生成封面提示词]\n    F --\u003e|否| H[输出文章]\n\n    G --\u003e I[用 AI 生成封面图]\n    I --\u003e J[上传到微信素材库]\n    H --\u003e K[转换为微信格式]\n    J --\u003e K\n    K --\u003e L[发送到草稿箱]\n\n    classDef idea fill:#e3f2fd,stroke:#2196f3,color:#0d47a1\n    classDef creator fill:#fff3e0,stroke:#ff9800,color:#e65100\n    classDef ai fill:#f3e5f5,stroke:#9c27b0,color:#4a148c\n    classDef output fill:#e8f5e9,stroke:#4caf50,color:#1b5e20\n\n    class A idea\n    class B,C creator\n    class D,E,G,I ai\n    class H,J,K,L output\n```\n\n**输入类型说明：**\n\n| 输入类型 | 说明 | 示例 |\n|----------|------|------|\n| `idea` | 一个观点或想法 | \"我觉得自律是个伪命题\" |\n| `fragment` | 内容片段，需要润色扩展 | 现有的草稿或未完成的文章 |\n| `outline` | 文章大纲 | 有结构，需要填充内容 |\n| `title` | 仅标题，围绕标题写作 | \"自律是个谎言\" |\n\n**输出说明：**\n\n```json\n{\n  \"success\": true,\n  \"code\": \"WRITE_AI_REQUEST_READY\",\n  \"schema_version\": \"v1\",\n  \"status\": \"action_required\",\n  \"retryable\": false,\n  \"data\": {\n    \"mode\": \"ai\",\n    \"action\": \"ai_write_request\",\n    \"style\": \"Dan Koe\",\n    \"prompt\": \"结构化的写作提示词...\",\n    \"cover_prompt\": \"封面提示词...\"\n  }\n}\n```\n\n\u003e **重要说明**：`write` 命令默认使用 **AI 模式**，返回的是结构化提示词，需要由 Claude 等 AI 大模型处理才能生成最终文章。在 Claude Code 中使用时，这个流程是自动的。\n\n**从想法到发布的完整流程：**\n\n```mermaid\nflowchart TB\n    subgraph Phase1[\"阶段1：创作\"]\n        A1[你的想法] --\u003e A2[选择写作风格]\n        A2 --\u003e A3[AI 生成文章]\n        A3 --\u003e A4[生成封面提示词]\n    end\n\n    subgraph Phase2[\"🎨 阶段2：制作\"]\n        B1[AI 生成封面图] --\u003e B2[上传到微信素材库]\n        A4 --\u003e B1\n        A3 --\u003e B3[保存为 Markdown]\n    end\n\n    subgraph Phase3[\"📤 阶段3：发布\"]\n        C1[转换为微信格式] --\u003e C2[发送到草稿箱]\n        B2 --\u003e C1\n        B3 --\u003e C1\n        C2 --\u003e C3[在微信编辑器中微调]\n        C3 --\u003e C4[发布！]\n    end\n\n    classDef phase1 fill:#e3f2fd,stroke:#2196f3,color:#0d47a1\n    classDef phase2 fill:#fff3e0,stroke:#ff9800,color:#e65100\n    classDef phase3 fill:#e8f5e9,stroke:#4caf50,color:#1b5e20\n\n    class A1,A2,A3,A4 phase1\n    class B1,B2,B3 phase2\n    class C1,C2,C3,C4 phase3\n```\n\n**一条命令完成全流程（在 Claude Code 中）：**\n\n```\n\"用 Dan Koe 风格写一篇关于 AI 时代程序员怎么搞钱的文章，生成封面，并发送到微信草稿箱\"\n```\n\nClaude 会自动：\n1. 调用 `write` 命令生成文章和封面提示词\n2. 用 AI 生成封面图并上传\n3. 转换为微信格式\n4. 发送到草稿箱\n\n### AI 写作去痕\n\n\u003e **致谢**：AI 写作去痕功能基于 [Humanizer-zh](https://github.com/op7418/Humanizer-zh) 项目，感谢作者 **臧师傅** 的分享。\n\n**什么是 AI 去痕？**\n\nAI 生成的文章往往有明显的\"AI 味\"——公式化的表达、重复的结构、浮夸的词汇。AI 去痕功能可以识别并去除这些痕迹，让文章听起来更像真人写的。\n\n**能检测哪些 AI 痕迹？**\n\n| 类别 | 检测模式 | 示例 |\n|------|----------|------|\n| **内容模式** | 过度强调意义、宣传语言、模糊归因 | \"标志着\"、\"凸显了\"、\"行业报告显示\" |\n| **语言模式** | AI 词汇、否定排比、三段式 | \"此外\"、\"深入探讨\"、\"不仅…而且…\" |\n| **风格模式** | 破折号过度、粗体滥用、表情符号 | 过度使用 `——`、大量 `**粗体**` |\n| **填充词** | 填充短语、过度限定、通用结论 | \"为了实现这一目标\"、\"未来一片光明\" |\n| **协作痕迹** | 对话式填充、知识截止免责声明 | \"希望这对您有帮助\"、\"截至 2024 年\" |\n\n**三种处理强度：**\n\n| 强度 | 命令 | 适合场景 |\n|------|------|----------|\n| `gentle` | `--intensity gentle` | 文章已经比较自然，只处理明显问题 |\n| `medium` | 默认 | 大多数场景，平衡处理 |\n| `aggressive` | `--intensity aggressive` | AI 味很重的文章，深度改写 |\n\n**使用方法：**\n\n```bash\n# 独立使用：去除文章的 AI 痕迹\nmd2wechat humanize article.md\n\n# 指定强度\nmd2wechat humanize article.md --intensity aggressive\n\n# 显示修改对比和质量评分\nmd2wechat humanize article.md --show-changes\n\n# 输出到文件\nmd2wechat humanize article.md -o output.md\n```\n\n**与写作风格组合使用：**\n\n```bash\n# 写作 + 去痕：生成文章后自动去除 AI 痕迹\nmd2wechat write --style dan-koe --humanize\n\n# 指定去痕强度\nmd2wechat write --style dan-koe --humanize --humanize-intensity aggressive\n```\n\n\u003e **风格优先原则**：当与写作风格组合时，会保留风格的核心特征（如 Dan Koe 的破折号），只去除无意的 AI 痕迹。\n\n**AI 去痕工作流程：**\n\n```mermaid\nflowchart LR\n    A[AI 生成的文章] --\u003e B[识别 AI 痕迹模式]\n    B --\u003e C{检测到问题}\n\n    C --\u003e D[过度强调意义]\n    C --\u003e E[AI 词汇]\n    C --\u003e F[三段式结构]\n    C --\u003e G[填充短语]\n    C --\u003e H[协作痕迹]\n\n    D --\u003e I[重写为自然表达]\n    E --\u003e I\n    F --\u003e J[打破公式结构]\n    G --\u003e I\n    H --\u003e K[删除客套话]\n\n    I --\u003e L[注入真实观点]\n    J --\u003e L\n    K --\u003e L\n\n    L --\u003e M[变化句子节奏]\n    M --\u003e N[人性化后的文章]\n\n    N --\u003e O{需要评分?}\n    O --\u003e|是| P[5维度质量评分]\n    O --\u003e|否| N\n\n    P --\u003e Q[输出结果]\n\n    classDef ai fill:#ffebee,stroke:#f44336,color:#c62828\n    classDef problem fill:#fff3e0,stroke:#ff9800,color:#e65100\n    classDef fix fill:#e3f2fd,stroke:#2196f3,color:#0d47a1\n    classDef result fill:#e8f5e9,stroke:#4caf50,color:#1b5e20\n\n    class A ai\n    class B,C,D,E,F,G,H problem\n    class I,J,K,L,M fix\n    class N,P,Q result\n```\n\n**质量评分系统：**\n\n去除 AI 痕迹后，会给出 5 维度评分（总分 50）：\n\n| 维度 | 说明 | 评分标准 |\n|------|------|----------|\n| **直接性** | 是否直截了当 | 10 分：直击要点；1 分：充满铺垫 |\n| **节奏** | 句子长度是否变化 | 10 分：长短交错；1 分：机械重复 |\n| **信任度** | 是否尊重读者 | 10 分：简洁明了；1 分：过度解释 |\n| **真实性** | 听起来像真人吗 | 10 分：自然流畅；1 分：机械生硬 |\n| **精炼度** | 有无冗余内容 | 10 分：无废话；1 分：大量填充 |\n\n**评级标准：**\n- **45-50 分**：优秀，已去除 AI 痕迹\n- **35-44 分**：良好，仍有改进空间\n- **低于 35 分**：需要重新修订\n\n**去痕效果对比：**\n\n| 原文（AI 味） | 去痕后 |\n|--------------|--------|\n| 在当今快速发展的科技时代，人工智能技术正以前所未有的速度改变着我们的生活方式 | 这几年，AI 变化太快了 |\n| 人工智能的重要性不言而喻。它不仅标志着技术进步的新里程碑 | AI 挺重要的，但不是那种玄乎的重要 |\n| 此外，AI 技术还在改善我们的日常生活质量 | 顺手提一句，AI 确实让生活方便了不少 |\n| 尽管存在挑战，但人工智能的未来依然光明 | 未来会怎样不好说，有好有坏吧 |\n| 希望这对您有帮助 | —— |\n\n**自然语言使用（在 Claude Code 中）：**\n\n```\n\"去除这篇文章的 AI 痕迹\"\n\"让这篇文章听起来更像人写的\"\n\"用温和强度处理这篇文章\"\n\"用 Dan Koe 风格写一篇文章，然后去除 AI 痕迹\"\n```\n\n### 完整发布流程\n\n```bash\n# 一步到位：转换 + 上传图片 + 发送草稿\nmd2wechat convert article.md --draft --cover cover.jpg\nmd2wechat convert article.md --draft --cover-media-id PERMANENT_MEDIA_ID\n\n# 流程说明：\n# 1. 将 Markdown 转换为微信格式 HTML\n# 2. 如果传了 --cover，则上传封面图片到微信素材库\n# 3. 如果传了 --cover-media-id，则直接复用已有封面素材\n# 4. 创建草稿并推送到微信后台\n```\n\n### AI 模式主题选择\n\n| 主题名 | 命令 | 风格 | 适合内容 |\n|--------|------|------|----------|\n| **秋日暖光** | `--theme autumn-warm` | 温暖橙色调 | 情感故事、生活随笔 |\n| **春日清新** | `--theme spring-fresh` | 清新绿色调 | 旅行日记、自然主题 |\n| **深海静谧** | `--theme ocean-calm` | 专业蓝色调 | 技术文章、商业分析 |\n\n### API 模式主题选择\n\n精确主题清单以运行时 discovery 输出为准：\n\n```bash\nmd2wechat themes list --json\n```\n\n下面内容主要用于帮助理解主题分组和风格差异。\n\n#### 主题预览\n**完整主题预览**: [https://md2wechat.app/theme-gallery](https://md2wechat.app/theme-gallery)\n\n#### 主题分类\n\n**基础主题（6 个）** - v1.0 内置\n\n| 主题 | 风格 | 适合 |\n|------|------|------|\n| `default` | 微信经典，温暖舒适 | 通用内容 |\n| `bytedance` | 科技现代，简洁利落 | 科技资讯 |\n| `apple` | 视觉渐变，精致优雅 | 产品评测 |\n| `sports` | 活力动感，充满能量 | 体育健康 |\n| `chinese` | 古典雅致，书卷气息 | 文化文章 |\n| `cyber` | 未来科技，霓虹光影 | 前沿科技 |\n\n**Minimal 系列（8 个）** - 干净克制，纯色文字无装饰\n\n| 颜色 | 主题 | 命令 |\n|------|------|------|\n| 金色 | minimal-gold | `--theme minimal-gold` |\n| 绿色 | minimal-green | `--theme minimal-green` |\n| 蓝色 | minimal-blue | `--theme minimal-blue` |\n| 橙色 | minimal-orange | `--theme minimal-orange` |\n| 红色 | minimal-red | `--theme minimal-red` |\n| 藏青 | minimal-navy | `--theme minimal-navy` |\n| 灰色 | minimal-gray | `--theme minimal-gray` |\n| 天蓝 | minimal-sky | `--theme minimal-sky` |\n\n**Focus 系列（8 个）** - 居中对称，标题上下双横线\n\n| 颜色 | 主题 | 命令 |\n|------|------|------|\n| 金色 | focus-gold | `--theme focus-gold` |\n| 绿色 | focus-green | `--theme focus-green` |\n| 蓝色 | focus-blue | `--theme focus-blue` |\n| 橙色 | focus-orange | `--theme focus-orange` |\n| 红色 | focus-red | `--theme focus-red` |\n| 藏青 | focus-navy | `--theme focus-navy` |\n| 灰色 | focus-gray | `--theme focus-gray` |\n| 天蓝 | focus-sky | `--theme focus-sky` |\n\n**Elegant 系列（8 个）** - 层次丰富，左边框递减 + 渐变背景\n\n| 颜色 | 主题 | 命令 |\n|------|------|------|\n| 金色 | elegant-gold | `--theme elegant-gold` |\n| 绿色 | elegant-green | `--theme elegant-green` |\n| 蓝色 | elegant-blue | `--theme elegant-blue` |\n| 橙色 | elegant-orange | `--theme elegant-orange` |\n| 红色 | elegant-red | `--theme elegant-red` |\n| 藏青 | elegant-navy | `--theme elegant-navy` |\n| 灰色 | elegant-gray | `--theme elegant-gray` |\n| 天蓝 | elegant-sky | `--theme elegant-sky` |\n\n**Bold 系列（8 个）** - 视觉冲击，标题满底色 + 圆角投影\n\n| 颜色 | 主题 | 命令 |\n|------|------|------|\n| 金色 | bold-gold | `--theme bold-gold` |\n| 绿色 | bold-green | `--theme bold-green` |\n| 蓝色 | bold-blue | `--theme bold-blue` |\n| 橙色 | bold-orange | `--theme bold-orange` |\n| 红色 | bold-red | `--theme bold-red` |\n| 藏青 | bold-navy | `--theme bold-navy` |\n| 灰色 | bold-gray | `--theme bold-gray` |\n| 天蓝 | bold-sky | `--theme bold-sky` |\n\n#### 主题命名规则\n\n```\n\u003c系列\u003e-\u003c颜色\u003e\n\n系列:\n  minimal  - 干净克制\n  focus    - 居中对称\n  elegant  - 层次丰富\n  bold     - 视觉冲击\n\n颜色: gold, green, blue, orange, red, navy, gray, sky\n```\n\n#### 使用示例\n\n```bash\n# 使用 Elegant 金色主题\nmd2wechat convert article.md --theme elegant-gold --preview\n\n# 使用 Minimal 蓝色主题\nmd2wechat convert article.md --theme minimal-blue --draft --cover cover.jpg\n\n# 使用 Bold 红色主题（视觉冲击强）\nmd2wechat convert article.md --theme bold-red\n```\n\n\u003e **提示**: 某些 API 主题能力依赖当前 API 域名与服务版本，先看 `md2wechat themes list --json` 的实际输出。\n\n#### 背景类型选择\n\n除了主题，你还可以自定义背景样式：\n\n| 背景类型 | 命令 | 效果 | 适合场景 |\n|----------|------|------|----------|\n| `default` | `--background-type default` | 默认背景（纯色或渐变） | 通用内容 |\n| `grid` | `--background-type grid` | 网格纹理背景 | 技术文档、笔记类 |\n| `none` | `--background-type none` | 无背景（透明） | 嵌入式内容 |\n\n**使用示例：**\n\n```bash\n# 使用网格背景\nmd2wechat convert article.md --theme elegant-gold --background-type grid\n\n# 使用无背景（适合复制到其他编辑器）\nmd2wechat convert article.md --theme minimal-blue --background-type none\n\n# 组合使用\nmd2wechat convert article.md --theme focus-green --background-type grid --draft --cover cover.jpg\n```\n\n默认值是 `none`。只有在需要显式背景时才传 `--background-type default` 或 `--background-type grid`。\n\n**配置文件设置：**\n\n```yaml\n# ~/.config/md2wechat/config.yaml\napi:\n  background_type: none  # default/grid/none\n```\n\n### 图片处理\n\n```bash\n# 上传单张图片到微信素材库\nmd2wechat upload_image photo.jpg\n\n# 下载网络图片并上传\nmd2wechat download_and_upload https://example.com/image.jpg\n\n# AI 生成图片并上传（需要配置 IMAGE_API_KEY）\nmd2wechat generate_image \"A cute cat sitting on a windowsill\"\n\n# 用内置封面 preset 生成封面图\nmd2wechat generate_cover --article article.md\n\n# 用内置信息图 preset 生成信息图\nmd2wechat generate_infographic --article article.md --preset infographic-comparison\n\n# 生成暗黑票券风中文信息图（推荐 21:9）\nmd2wechat generate_infographic --article article.md --preset infographic-dark-ticket-cn --aspect 21:9\n\n# 生成手绘 sketchnote 信息图\nmd2wechat generate_infographic --article article.md --preset infographic-handdrawn-sketchnote\n\n# 生成苹果发布会风格信息图（默认 3:4，也可兼作封面）\nmd2wechat generate_infographic --article article.md --preset infographic-apple-keynote-premium\n\n# 生成维多利亚黑白版画横幅信息图（也可兼作封面，推荐 21:9）\nmd2wechat generate_infographic --article article.md --preset infographic-victorian-engraving-banner --aspect 21:9\n\n# 生成 16:9 比例的封面图（推荐，适配公众号封面）\nmd2wechat generate_image --preset cover-hero --article article.md --size 2560x1440\n\n# 单次覆盖本次调用使用的图片模型\nmd2wechat generate_infographic --article article.md --preset infographic-comparison --model gemini-3-pro-image-preview\n```\n\n\u003e **公众号封面图建议**：使用 16:9 横向比例（2560x1440）作为文章封面，在微信 feed 流和文章列表中显示效果更好。方形图片（2048x2048）在预览时会被裁剪。\n\n#### AI 图片生成服务配置\n\n支持多种 AI 图片生成服务：\n\n| 服务 | 配置值 | 说明 | 获取方式 |\n|------|--------|------|----------|\n| **ModelScope** | `modelscope` 或 `ms` | 阿里 ModelScope，免费额度 | [modelscope.cn](https://modelscope.cn/my/myaccesstoken) |\n| **TuZi** | `tuzi` | 国产 API，稳定快速 | [tu-zi.com](https://api.tu-zi.com) |\n| **OpenAI** | `openai` | 官方 OpenAI | [platform.openai.com](https://platform.openai.com) |\n| **OpenRouter** | `openrouter` 或 `or` | 多模型聚合接口，支持 Gemini / Flux 等 | [openrouter.ai](https://openrouter.ai) |\n| **Google Gemini** | `gemini` 或 `google` | 官方 Gemini 图片生成 API | [ai.google.dev](https://ai.google.dev/gemini-api/docs/image-generation) |\n| **Volcengine Ark** | `volcengine` 或 `volc` | 火山引擎 Ark，支持豆包 Seedream 5.0 系列 | [豆包大模型](https://www.volcengine.com/product/doubao) |\n\n**配置方式**（环境变量或配置文件）：\n\n```bash\n# 使用 ModelScope（推荐，有免费额度）\nexport IMAGE_PROVIDER=modelscope\nexport IMAGE_API_KEY=ms-your-token-here\nexport IMAGE_API_BASE=https://api-inference.modelscope.cn\nexport IMAGE_MODEL=Tongyi-MAI/Z-Image-Turbo\n```\n\n```yaml\n# config.yaml\napi:\n  image_provider: modelscope\n  image_key: ms-your-token-here\n  image_base_url: https://api-inference.modelscope.cn\n  image_model: Tongyi-MAI/Z-Image-Turbo\n  image_size: 1024x1024\n```\n\n\u003e `--model` 可覆盖当前命令的图片模型；未传时，优先使用 `IMAGE_MODEL`，再回退到 `api.image_model`，最后才是 provider 默认模型。\n\u003e `md2wechat providers show \u003cname\u003e --json` 现在会同时暴露 `supported_models`，适合 Agent 或脚本先确认模型目录再选 `--model`。\n\u003e 如果 Volcengine 返回 `ModelNotOpen`，去 [豆包大模型](https://www.volcengine.com/product/doubao) 点击“控制台” -\u003e “开通管理”，勾选 `Seedream` 模型完成开通。\n\n**ModelScope 特点**：\n- 有免费额度，适合测试\n- 国内服务，访问稳定\n- 默认模型 `Tongyi-MAI/Z-Image-Turbo` 生成速度快\n- 使用异步 API（task_id + 轮询），约 10-30 秒完成\n\n#### Markdown 中生成图片\n\n在 Markdown 中使用特殊语法生成图片：\n\n```markdown\n![产品概念图](__generate:现代智能家居设备，白色简约设计，LED指示灯__)\n```\n\n**语法格式：** `![描述](__generate:提示词__)`\n\n- 支持中文和英文提示词\n- 生成的图片会自动上传到微信素材库\n- 需要配置图片生成服务（详见 [图片服务配置文档](docs/IMAGE_PROVISIONERS.md)）\n\n**在 Claude Code 中使用自然语言：**\n```\n\"帮我在文章开头生成一张产品概念图\"\n\"在第三段后添加一张对比图\"\n\"生成一张可爱的猫\"（独立生成，不关联文章）\n```\n\n---\n\n## AI 模式详解\n\n### 什么是 AI 模式？\n\n**AI 模式**当前会生成用于外部大模型继续处理的排版请求，而不是像 API 模式那样直接在本地返回最终 HTML。\n\n```\n┌─────────────────────────────────────────────────────────────┐\n│                     AI 模式工作流程                          │\n├─────────────────────────────────────────────────────────────┤\n│                                                             │\n│   1. 你用 Markdown 写文章                                    │\n│              ↓                                               │\n│   2. md2wechat 提取文章结构                                  │\n│              ↓                                               │\n│   3. 构建专业的排版提示词 (Prompt)                           │\n│              ↓                                               │\n│   4. 输出 AI request / Prompt                              │\n│              ↓                                               │\n│   5. 在 Claude Code 等环境中继续生成 HTML                    │\n│                                                             │\n└─────────────────────────────────────────────────────────────┘\n```\n\n### AI 模式的优势\n\n| 对比项 | API 模式 | AI 模式 |\n|--------|----------|----------|\n| 响应速度 | 秒级 | 需要额外 AI 步骤 |\n| 排版质量 | 👍 标准规范 | 🌟 精美多样 |\n| 样式选择 | 2-3 种 | 更灵活 |\n| 成本 | 低 | 取决于外部 AI |\n| 适合场景 | 日常文章 | 重要文章、品牌内容 |\n\n### 在 Claude Code 中使用 AI 模式\n\n如果你使用 **Claude Code**，AI 模式生成的 request / prompt 可以继续由 Claude 自动接力处理：\n\n```bash\n# 在 Claude Code 中直接运行\nmd2wechat convert article.md --mode ai --theme autumn-warm\n```\n\n---\n\n## 配置说明\n\n### 配置文件位置\n\n```\n~/.config/md2wechat/config.yaml    # 全局配置（推荐）\n```\n\n生成示例配置：\n\n```bash\nmd2wechat config init\n```\n\n查看当前实际生效配置：\n\n```bash\nmd2wechat config show --format json\n```\n\n### 配置项说明\n\n```yaml\n# 微信公众号配置（必需）\nwechat:\n  appid: \"你的AppID\"\n  secret: \"你的Secret\"\n\n# API 配置\napi:\n  md2wechat_key: \"md2wechat.cn 的 API Key\"  # API 模式需要\n  md2wechat_base_url: \"https://www.md2wechat.cn\"  # 可改成 https://md2wechat.app\n  convert_mode: \"api\"                       # 配置展示/兼容字段；不传 --mode 时 CLI 仍默认 api\n  default_theme: \"default\"                  # 默认主题\n  http_timeout: 30                          # 超时时间（秒）\n\n# 图片处理配置\nimage:\n  compress: true           # 自动压缩大图\n  max_width: 1920         # 最大宽度\n  max_size_mb: 5          # 最大文件大小（MB）\n```\n\n如果你不知道 API 域名在哪里改，就改这里：\n\n- 配置文件：`api.md2wechat_base_url`\n- 环境变量：`MD2WECHAT_BASE_URL`\n\n默认主题和默认写作风格已经内置在二进制里。\n如果你要覆盖它们，优先级从高到低是：\n\n- `MD2WECHAT_THEMES_DIR` / `MD2WECHAT_WRITERS_DIR`\n- 当前项目目录下的 `themes/` / `writers/`\n- `~/.config/md2wechat/themes/` / `~/.config/md2wechat/writers/`\n- 二进制内置默认资产\n\n更完整的保姆级说明见：\n\n- [配置指南](docs/CONFIG.md)\n- [示例配置](docs/examples/config.yaml.example)\n- [真实烟雾测试记录](docs/SMOKE.md)\n\n需要明确一点：\n\n- `md2wechat convert article.md` 在未显式传 `--mode` 时，始终默认走 `api`\n- 只有显式传 `--mode ai` 才会走 AI 模式\n\n---\n\n## 📁 项目结构\n\n```\nmd2wechat-skill/\n├── cmd/                    # 命令行工具\n│   └── md2wechat/         # 主程序\n├── internal/              # 核心功能模块\n│   ├── converter/        # 转换器（API/AI）\n│   ├── draft/            # 草稿服务\n│   ├── image/            # 图片处理\n│   ├── wechat/           # 微信 API 封装\n│   ├── writer/           # 写作助手\n│   ├── humanizer/        # AI 去痕\n│   └── config/           # 配置管理\n├── writers/              # 写作风格配置\n│   ├── dan-koe.yaml      # Dan Koe 风格\n│   └── README.md         # 自定义风格指南\n├── docs/                 # 详细文档\n│   ├── USAGE.md          # 使用教程\n│   ├── FAQ.md            # 常见问题\n│   └── TROUBLESHOOTING.md # 故障排查\n├── examples/             # 示例文章\n├── scripts/              # 安装脚本\n└── bin/                  # 编译好的二进制文件\n```\n\n---\n\n## 高级安装\n\n### 方式一：Homebrew（macOS 优先推荐）\n\n如果你在 macOS 上，并且已经装了 Homebrew，优先执行：\n\n```bash\nbrew install geekjourneyx/tap/md2wechat\n```\n\n升级：\n\n```bash\nbrew upgrade geekjourneyx/tap/md2wechat\n```\n\n### 方式二：一键安装脚本（其他环境推荐）\n\n**Mac/Linux：**\n```bash\ncurl -fsSL https://github.com/geekjourneyx/md2wechat-skill/releases/download/v2.0.7/install.sh | bash\n```\n\n**Windows PowerShell：**\n```powershell\n$env:MD2WECHAT_RELEASE_BASE_URL = \"https://github.com/geekjourneyx/md2wechat-skill/releases/download/v2.0.7\"\niex ((New-Object System.Net.WebClient).DownloadString(\"$env:MD2WECHAT_RELEASE_BASE_URL/install.ps1\"))\n```\n\n\u003e 脚本会下载 release 资产并验证 `checksums.txt`，这是当前推荐路径。\n\n### 方式二：手动下载 release 资产\n\n如果你需要固定版本或离线安装，请按 [安装指南](docs/INSTALL.md) 的 release + checksum 步骤操作。\n\n### 方式三：从源码编译\n\n```bash\ngit clone https://github.com/geekjourneyx/md2wechat-skill.git\ncd md2wechat-skill\nmake build\n```\n\n---\n\n\u003ca id=\"coding-agent\"\u003e\u003c/a\u003e\n\n## Coding Agent 集成\n\nmd2wechat 提供了面向 **Claude Code / Codex / OpenCode** 的 skill 和仓库安装方式，让你在 Coding Agent 中直接使用自然语言完成排版、图片生成和草稿推送。\n\n### 安装方式\n\n#### 方式一：`npx skills add`（推荐，通用）\n\n适合 Claude Code / Codex / OpenCode 等支持 `skills` 安装协议的环境：\n\n```bash\nnpx skills add https://github.com/geekjourneyx/md2wechat-skill --skill md2wechat\n```\n\n安装后，直接在 Agent 中调用 `md2wechat` skill 即可。`npx skills add` 只安装 skill，不会替你自动安装 CLI runtime。\n\n当前 coding-agent skill 的 runtime 逻辑是：\n\n- 直接依赖 `PATH` 里已安装好的 `md2wechat`\n- skill 本身不再承担 runtime 查找、缓存 bootstrap 或执行时下载\n- 如果 `md2wechat` 不在 `PATH` 里，先安装 CLI，再继续使用 skill\n\nskill 不再在正常执行路径中自动下载并执行远程二进制。\n\n推荐直接发给 Coding Agent 的对话脚本：\n\n```text\n请先安装 md2wechat CLI，再安装 md2wechat skill，并验证版本和能力发现都正常。\n执行：\n1. 如果我是 mac 用户，先运行：brew install geekjourneyx/tap/md2wechat\n2. 如果我已经有稳定可用的 Go 环境，也可以改成：go install github.com/geekjourneyx/md2wechat-skill/cmd/md2wechat@v2.0.7\n3. 如果以上两种都不适合，再运行：curl -fsSL https://github.com/geekjourneyx/md2wechat-skill/releases/download/v2.0.7/install.sh | bash\n4. 运行：npx skills add https://github.com/geekjourneyx/md2wechat-skill --skill md2wechat\n5. 如果我是通过 install.sh 安装的，再运行：export PATH=\"$HOME/.local/bin:$PATH\"\n6. 运行：md2wechat version --json\n7. 运行：md2wechat capabilities --json\n8. 运行：md2wechat config init\n如果失败，请继续排查，不要只停止在报错信息。\n```\n\n#### 方式二：Claude Code / Codex 兼容路径\n\n如果你所在的 Agent 环境仍然暴露 Plugin Marketplace 或旧插件入口，也建议继续沿用同一条主路径：\n\n1. 先把 `md2wechat` CLI 安装到 `PATH`\n2. 再通过 `npx skills add https://github.com/geekjourneyx/md2wechat-skill --skill md2wechat` 安装 skill\n\n不要把旧的 plugin 安装入口当成新的主契约；当前仓库文档、skill 和 release 检查都以 `CLI + npx skills add` 为准。\n\n#### 方式三：Claudian / Obsidian\n\n如果你在 Obsidian 里使用 [Claudian](https://github.com/YishenTu/claudian)，也可以直接复用同一套 skill。\n\nClaudian 官方说明里已经明确：\n- 它兼容 Claude Code skill 格式\n- 会从 `~/.claude/skills/` 或 `{vault}/.claude/skills/` 发现 skill\n- 支持 slash commands 和 skills\n\n所以对 `md2wechat` 来说，最稳的路径是：\n\n```bash\nbrew install geekjourneyx/tap/md2wechat\nmd2wechat version --json\nnpx skills add https://github.com/geekjourneyx/md2wechat-skill --skill md2wechat\n```\n\n如果你不用 Homebrew，再改用固定版本安装脚本：\n\n```bash\ncurl -fsSL https://github.com/geekjourneyx/md2wechat-skill/releases/download/v2.0.7/install.sh | bash\nexport PATH=\"$HOME/.local/bin:$PATH\"\nmd2wechat version --json\nnpx skills add https://github.com/geekjourneyx/md2wechat-skill --skill md2wechat\n```\n\n然后在 Claudian 里：\n- 直接输入 `/md2wechat`\n- 或直接让 Agent 调用 `md2wechat` skill\n\n如果 Obsidian 图形界面里仍然找不到 `md2wechat`，优先去 Claudian：\n- `Settings -\u003e Environment -\u003e Custom variables`\n- 添加：\n  - `PATH=/Users/你的用户名/.local/bin:...`\n\n保姆级说明见：\n- [Obsidian / Claudian 指南](docs/OBSIDIAN.md)\n\n#### 方式四：项目内使用\n\n克隆项目后，Skill 自动可用：\n\n```bash\ngit clone https://github.com/geekjourneyx/md2wechat-skill.git\ncd md2wechat-skill\n# 在 Claude Code 中直接使用\n```\n\n#### 方式五：全局安装\n\n将 Skill 复制到全局目录：\n\n```bash\n# 复制到全局技能目录\ncp -r skills/md2wechat ~/.claude/skills/\n```\n\n#### 方式六：创建符号链接\n\n```bash\nln -s /path/to/md2wechat-skill/skills/md2wechat ~/.claude/skills/md2wechat\n```\n\n### 项目结构\n\n```\nmd2wechat-skill/\n├── .claude-plugin/        # 插件清单\n│   └── marketplace.json   # Plugin Marketplace 配置\n├── skills/                # coding-agent skill 目录（Claude Code / Codex / OpenCode）\n│   └── md2wechat/\n│       └── SKILL.md       # 技能定义\n├── platforms/             # 平台适配层\n│   └── openclaw/\n│       └── md2wechat/     # OpenClaw 专用 skill 包\n│           └── SKILL.md\n├── scripts/               # 安装脚本\n│   ├── install.sh         # CLI 安装脚本\n│   └── install-openclaw.sh # OpenClaw 安装脚本\n└── themes/                # AI 主题配置\n    ├── autumn-warm.yaml\n    ├── spring-fresh.yaml\n    └── ocean-calm.yaml\n```\n\n---\n\n\u003ca id=\"obsidian-claudian\"\u003e\u003c/a\u003e\n\n## Obsidian / Claudian 支持\n\n如果你在 Obsidian 里使用 [Claudian](https://github.com/YishenTu/claudian)，`md2wechat` 现在也能直接接进去。\n\nClaudian 官方 README 说明它：\n- 是一个把 Claude Code 嵌入 Obsidian 的插件\n- 兼容 Claude Code skill 格式\n- 会从 `~/.claude/skills/` 或 `{vault}/.claude/skills/` 发现 skills\n- 支持 slash commands\n\n这意味着：\n- 先安装 `md2wechat` CLI\n- 再执行 `npx skills add ...`\n- 之后你可以在 Claudian 里直接用 `/md2wechat` 或自然语言调用 skill\n\n推荐直接发给 Claudian / Obsidian 用户的脚本：\n\n```text\n请帮我在当前电脑上安装 md2wechat，并让 Claudian 可以在 Obsidian 里通过 /md2wechat 使用它。按这个顺序执行：\n1. 如果我是 mac 用户，先运行：brew install geekjourneyx/tap/md2wechat\n2. 如果我已经有稳定可用的 Go 环境，也可以改成：go install github.com/geekjourneyx/md2wechat-skill/cmd/md2wechat@v2.0.7\n3. 如果以上两种都不适合，再运行：curl -fsSL https://github.com/geekjourneyx/md2wechat-skill/releases/download/v2.0.7/install.sh | bash\n4. 如果我是通过 install.sh 安装的，再运行：export PATH=\"$HOME/.local/bin:$PATH\"\n5. 运行：md2wechat version --json\n6. 运行：npx skills add https://github.com/geekjourneyx/md2wechat-skill --skill md2wechat\n7. 如果我在 Obsidian 里仍然找不到 md2wechat，请提醒我去 Claudian 的 Settings -\u003e Environment -\u003e Custom variables，把 PATH 补上 ~/.local/bin\n8. 最后告诉我如何在 Claudian 里输入 /md2wechat 或直接调用 md2wechat skill\n如果某一步失败，请继续排查，不要只返回报错原文。\n```\n\n适合谁：\n- 已经在 Obsidian 里用 Claudian 写作\n- 想在笔记库里直接把 Markdown 转公众号格式\n- 想在 Obsidian 里直接生成封面图、信息图或推送草稿\n\n单独文档：\n- [Obsidian / Claudian 指南](docs/OBSIDIAN.md)\n\n---\n\n\u003ca id=\"openclaw\"\u003e\u003c/a\u003e\n\n## OpenClaw 支持\n\nmd2wechat 现已支持 [OpenClaw](https://openclaw.ai/) 平台！\n\nOpenClaw 使用独立的 `platforms/openclaw/md2wechat/` skill 包，和面向 Claude Code / Codex / OpenCode 的 `skills/md2wechat/` 分开维护。OpenClaw 现在也直接依赖已安装到环境路径里的 `md2wechat` CLI，不再保留 skill 内部 runtime wrapper。\n\nOpenClaw 用户也可以直接从技能页面进入：\n\n- [ClawHub 页面：clawhub.ai/geekjourneyx/md2wechat](https://clawhub.ai/geekjourneyx/md2wechat)\n\n### 什么是 OpenClaw？\n\n[OpenClaw](https://openclaw.ai/) 是一个开源的 AI Agent 平台，**在你的设备上运行**，通过你已经在用的聊天应用（WhatsApp、Telegram、Discord、Slack）来操控 AI 助手。\n\n\u003e **The AI that actually does things.** — 你的助手，你的设备，你的规则。\n\n### 安装方式\n\n#### 方式一：ClawHub 安装（仅安装 skill 壳）\n\n```bash\n# 安装 OpenClaw 专用 md2wechat skill 包\nnpx clawhub@latest install md2wechat\n```\n\n当前 ClawHub 路径只会安装 skill 壳到 OpenClaw workspace，**不保证自动安装 `md2wechat` CLI**。完整、可验证的安装主线仍建议使用下一种固定版本 installer。\n\n如果你更习惯先从网页进入，再决定是否安装，可以直接打开：\n\n- [ClawHub 页面：clawhub.ai/geekjourneyx/md2wechat](https://clawhub.ai/geekjourneyx/md2wechat)\n\n#### 方式二：先安装 CLI（优先 Homebrew）\n\n如果你已经装好了 OpenClaw skill 壳，或者只需要先把 CLI 装到环境里，可以先执行：\n\n```bash\nbrew install geekjourneyx/tap/md2wechat\n```\n\n这个方式只安装 `md2wechat` CLI，不会自动写入 `~/.openclaw/skills/md2wechat/`。如果你还没装 skill 壳，请继续执行 `npx clawhub@latest install md2wechat`，或者直接用下一种一键脚本。\n\n如果你已经有 Go 环境，也可以执行：\n\n```bash\ngo install github.com/geekjourneyx/md2wechat-skill/cmd/md2wechat@v2.0.7\n```\n\n它同样只安装 CLI，不会自动写入 `~/.openclaw/skills/md2wechat/`。\n\n#### 方式三：一键脚本安装\n\n```bash\ncurl -fsSL https://github.com/geekjourneyx/md2wechat-skill/releases/download/v2.0.7/install-openclaw.sh | bash\n```\n\n脚本会按固定版本安装 OpenClaw skill 包与 `md2wechat` CLI，并校验 `checksums.txt`。这是当前最完整、最可验证的 OpenClaw 安装路径。\n\n推荐直接发给 OpenClaw / 通用大模型的对话脚本：\n\n```text\n请帮我安装 OpenClaw 版 md2wechat，并验证 skill 和 CLI 都可用。\n执行：\n1. curl -fsSL https://github.com/geekjourneyx/md2wechat-skill/releases/download/v2.0.7/install-openclaw.sh | bash\n2. 先执行：export PATH=\"$HOME/.local/bin:$PATH\"\n3. md2wechat version --json\n4. md2wechat config init\n5. md2wechat config validate\n6. md2wechat capabilities --json\n如果失败，请继续排查 ~/.openclaw/skills/md2wechat/ 和 `command -v md2wechat`，不要只返回错误原文。\n```\n\n#### 方式四：手动安装\n\n```bash\nVERSION=2.0.7\n# 按你的平台选择对应二进制，这里以 Linux amd64 为例\ncurl -LO https://github.com/geekjourneyx/md2wechat-skill/releases/download/v${VERSION}/md2wechat-openclaw-skill.tar.gz\ncurl -LO https://github.com/geekjourneyx/md2wechat-skill/releases/download/v${VERSION}/md2wechat-linux-amd64\ncurl -LO https://github.com/geekjourneyx/md2wechat-skill/releases/download/v${VERSION}/checksums.txt\nsha256sum -c checksums.txt --ignore-missing\nmkdir -p ~/.openclaw/skills\nmkdir -p ~/.local/bin\nmkdir -p /tmp/md2wechat-openclaw\ntar -xzf md2wechat-openclaw-skill.tar.gz -C /tmp/md2wechat-openclaw\ncp -r /tmp/md2wechat-openclaw/skills/md2wechat ~/.openclaw/skills/\ninstall -m 0755 md2wechat-linux-amd64 ~/.local/bin/md2wechat\nexport PATH=\"$HOME/.local/bin:$PATH\"\n```\n\n手动安装时，请以同一版本 release 提供的 OpenClaw 资产为准，确保 skill 包与 `md2wechat` CLI 同版本安装。\n\n### 配置\n\n安装完成后直接初始化 `md2wechat` 配置：\n\n```bash\nmd2wechat config init\nmd2wechat config validate\n```\n\n默认配置文件：\n\n```text\n~/.config/md2wechat/config.yaml\n```\n\n### Claude Code vs OpenClaw\n\n| 方面 | Claude Code | OpenClaw |\n|------|-------------|----------|\n| **定位** | 终端 AI 编程助手 | 聊天应用 AI 助手 |\n| **仓库内 skill 路径** | `skills/md2wechat/` | `platforms/openclaw/md2wechat/` |\n| **技能目录** | `~/.claude/skills/` | `~/.openclaw/skills/` |\n| **安装方式** | `/plugin` 命令 | `clawhub` CLI + `brew/go install`，或 OpenClaw installer |\n| **配置方式** | 环境变量 / `config.yaml` | `~/.config/md2wechat/config.yaml` |\n| **LLM 支持** | Claude | Claude、GPT、DeepSeek 等 |\n\n\u003e **详细文档**：[OpenClaw 安装指南](docs/OPENCLAW.md)\n\n---\n\n## 使用示例\n\n### 示例 1：技术博主\n\n```bash\n# 写好技术文章\nvim my-tech-post.md\n\n# 使用简洁的 API 模式转换\nmd2wechat convert my-tech-post.md --preview\n\n# 满意后发送草稿\nmd2wechat convert my-tech-post.md --draft --cover cover.jpg\n```\n\n### 示例 2：产品经理发公告\n\n```bash\n# 生成 AI 排版请求，再交给 Claude Code 等环境继续处理\nmd2wechat convert announcement.md --mode ai --theme ocean-calm\n```\n\n### 示例 3：生活方式博主\n\n```bash\n# 使用春日清新主题\nmd2wechat convert travel-diary.md --mode ai --theme spring-fresh --preview\n```\n\n### 示例 4：写作小白用观点生成文章\n\n```bash\n# 交互模式：输入观点，AI 生成文章\nmd2wechat write\n\n# 指定风格生成\nmd2wechat write --style dan-koe\n\n# 生成封面提示词\nmd2wechat write --style dan-koe --cover-only\n```\n\n---\n\n\u003ca id=\"faq\"\u003e\u003c/a\u003e\n\n## ❓ 常见问题\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eQ: 必须要会编程才能用吗？\u003c/b\u003e\u003c/summary\u003e\n\n**A: 不需要！** 只要会用命令行（终端）就可以。如果是 Windows 用户，下载 .exe 文件后，在 CMD 或 PowerShell 中运行命令即可。\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eQ: AI 模式需要付费吗？\u003c/b\u003e\u003c/summary\u003e\n\n**A:** AI 模式使用 Claude 能力：\n- 如果你在 **Claude Code** 中使用，直接调用内置 AI\n- 如果你想自己接入，需要配置 OpenAI 兼容的 API\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eQ: 支持哪些 Markdown 语法？\u003c/b\u003e\u003c/summary\u003e\n\n**A:** 支持常用语法：\n- 标题（# ## ###）\n- 列表（无序、有序）\n- 粗体、斜体、行内代码\n- 代码块（带语法高亮）\n- 引用块\n- 分割线\n- 图片、链接\n- 表格\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eQ: 生成的文章可以直接在微信编辑器中编辑吗？\u003c/b\u003e\u003c/summary\u003e\n\n**A:** 可以！草稿发送后，你可以登录微信公众平台，在草稿箱中继续编辑。\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eQ: 如何知道应该下载哪个版本？下载错了怎么办？\u003c/b\u003e\u003c/summary\u003e\n\n**A:**\n\n**Mac 用户：**\n- 点击屏幕左上角苹果图标 → 「关于本机」\n- 看到 `Apple M1/M2/M3/M4` → 下载 **Apple Silicon (arm64)** 版本\n- 看到 `Intel` → 下载 **Intel (amd64)** 版本\n\n**Linux 用户：**\n- 运行 `uname -m` 命令\n- 输出 `x86_64` → 下载 **amd64** 版本\n- 输出 `aarch64` → 下载 **arm64** 版本\n\n**如果下载错了：**\n- 删除错误的文件，重新下载正确版本即可\n- 也可以使用一键安装脚本，会自动检测系统架构\n\n```bash\ncurl -fsSL https://github.com/geekjourneyx/md2wechat-skill/releases/download/v2.0.7/install.sh | bash\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eQ: 写作功能是什么？怎么用？\u003c/b\u003e\u003c/summary\u003e\n\n**A:** 写作功能可以帮你用特定创作者风格生成文章：\n\n```bash\n# 查看所有可用风格\nmd2wechat write --list\n\n# 交互式写作\nmd2wechat write\n\n# 指定风格写作\nmd2wechat write --style dan-koe\n```\n\n只需输入你的观点或想法，AI 会自动生成符合该风格的文章。\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eQ: 我是写作小白，不会写文章能用吗？\u003c/b\u003e\u003c/summary\u003e\n\n**A:** 完全可以！写作功能专为小白设计：\n\n1. **只需要输入观点**：比如\"我觉得自律是个伪命题\"\n2. **AI 自动扩展**：会自动生成结构完整的文章\n3. **多种风格可选**：内置 Dan Koe 等风格，也可以自定义\n\n不需要你会写作技巧，只需要有想法就行。\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eQ: 如何添加我喜欢的作家风格？\u003c/b\u003e\u003c/summary\u003e\n\n**A:** 在 `writers/` 目录下创建 YAML 文件：\n\n```bash\n# 参考内置风格\ncat writers/dan-koe.yaml\n\n# 创建自己的风格\nvim writers/my-style.yaml\n```\n\n详细格式参考 `writers/README.md`。\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eQ: AI 去痕是什么？怎么用？\u003c/b\u003e\u003c/summary\u003e\n\n**A:** AI 去痕功能可以去除 AI 生成文章的\"AI 味\"，让文章听起来更像真人写的：\n\n```bash\n# 基本用法\nmd2wechat humanize article.md\n\n# 指定强度（gentle/medium/aggressive）\nmd2wechat humanize article.md --intensity aggressive\n\n# 显示修改对比和质量评分\nmd2wechat humanize article.md --show-changes\n```\n\n**与写作风格组合使用：**\n\n```bash\n# 写作 + 去痕\nmd2wechat write --style dan-koe --humanize\n```\n\n\u003e **致谢**：AI 去痕功能基于 [Humanizer-zh](https://github.com/op7418/Humanizer-zh) 项目。\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eQ: AI 去痕会改变文章意思吗？\u003c/b\u003e\u003c/summary\u003e\n\n**A:** 不会。AI 去痕只修改表达方式，不改变核心信息。\n\n它会：\n- 删除填充短语和过度强调\n- 打破公式化结构\n- 变化句子节奏\n- 注入真实观点\n\n但会保留原文的核心观点和信息。\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eQ: AI 去痕和写作风格会冲突吗？\u003c/b\u003e\u003c/summary\u003e\n\n**A:** 不会。当两者组合使用时，遵循**风格优先原则**：\n\n- 保留写作风格的核心特征（如 Dan Koe 的破折号停顿）\n- 只去除无意的 AI 痕迹\n- 保持风格的一致性\n\n```bash\n# 风格优先：保留 Dan Koe 风格，去除 AI 痕迹\nmd2wechat write --style dan-koe --humanize\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eQ: 发送草稿时报错 \"content size out of limit (errcode=45002)\"？\u003c/b\u003e\u003c/summary\u003e\n\n**A:** 这是微信 API 的内容大小限制错误。\n\n**微信草稿 API 限制：**\n- **字符数**：\u003c 20,000 字符（中文算 1 个字符）\n- **大小**：\u003c 1 MB\n\n**解决方案：**\n1. 缩短文章内容\n2. 减少不必要的格式（API 模式的 inline CSS 会增加内容体积）\n3. 拆分为多篇文章发布\n4. 使用更简洁的排版主题\n\n**注意：** API 模式生成的 HTML 包含大量 inline CSS，会使内容体积膨胀约 5-10 倍。长文章建议：\n- 使用更简洁的 Markdown 写作\n- 删除部分图片或使用外部图片链接\n- 手动在微信编辑器中复制粘贴（绕过 API 限制）\n\n**来源：** [微信公众号 API 文档](https://developers.weixin.qq.com/doc/subscription/api/draftbox/draftmanage/api_draft_add.html)\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eQ: ModelScope 图片生成需要多久？\u003c/b\u003e\u003c/summary\u003e\n\n**A:** ModelScope 使用异步 API 模式，通常需要 10-30 秒。\n\n**流程：**\n1. 发起请求 → 获取 task_id\n2. 轮询任务状态（每 5 秒一次）\n3. 任务完成 → 返回图片 URL\n\n**超时设置：**\n- 默认最大轮询时间：120 秒\n- 超时后会返回错误，建议：\n  - 简化提示词\n  - 重试一次\n  - 检查 ModelScope 服务状态\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eQ: 如何配置 ModelScope 图片生成？\u003c/b\u003e\u003c/summary\u003e\n\n**A:** ModelScope 是推荐的图片生成服务，有免费额度。\n\n**配置步骤：**\n\n1. **获取 API Key**\n   - 访问 [modelscope.cn](https://modelscope.cn/my/myaccesstoken)\n   - 登录后创建 Access Token\n   - 格式类似：`ms-your-token-here`\n\n2. **配置环境变量**\n   ```bash\n   export IMAGE_PROVIDER=modelscope\n   export IMAGE_API_KEY=ms-your-token-here\n   export IMAGE_API_BASE=https://api-inference.modelscope.cn\n   export IMAGE_MODEL=Tongyi-MAI/Z-Image-Turbo\n   ```\n\n3. **或在配置文件中设置**\n   ```yaml\n   # ~/.config/md2wechat/config.yaml\n   api:\n     image_provider: modelscope\n     image_key: ms-your-token-here\n     image_base_url: https://api-inference.modelscope.cn\n     image_model: Tongyi-MAI/Z-Image-Turbo\n     image_size: 1024x1024\n   ```\n\n4. **测试**\n   ```bash\n   md2wechat generate_image \"A golden cat\"\n   md2wechat generate_cover --title \"AI 文章封面测试\" --summary \"测试封面 preset\"\n   ```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eQ: write 命令支持管道输入吗？\u003c/b\u003e\u003c/summary\u003e\n\n**A:** 支持！可以通过管道或 heredoc 传递内容。\n\n**使用方式：**\n\n```bash\n# 管道输入\necho \"你的想法或内容\" | md2wechat write --style dan-koe\n\n# heredoc 输入（适合多行内容）\nmd2wechat write --style dan-koe --title \"文章标题\" \u003c\u003cEOF\n第一段内容\n第二段内容\n更多观点...\nEOF\n```\n\n**适用场景：**\n- 脚本自动化\n- 从其他命令输出传递内容\n- 在 CI/CD 流程中使用\n\u003c/details\u003e\n\n---\n\n## 更多文档\n\n| 文档 | 说明 |\n|------|------|\n| [文档索引](docs/README.md) | `docs/` 目录导航 |\n| [新手入门指南](docs/QUICKSTART.md) | **强烈推荐！** 详细的图文教程 |\n| [完整使用说明](docs/USAGE.md) | 所有命令和选项 |\n| [架构说明](docs/ARCHITECTURE.md) | 当前代码边界与主线 |\n| [OpenClaw 安装指南](docs/OPENCLAW.md) | OpenClaw 平台安装配置指南 |\n| [图片服务配置](docs/IMAGE_PROVISIONERS.md) | AI 图片生成服务完整配置指南 |\n| [写作功能指南](writers/README.md) | 如何使用和自定义写作风格 |\n| [写作功能问答](docs/WRITING_FAQ.md) | 写作小白完整指南 |\n| [AI 去痕指南](docs/WRITING_FAQ.md) | AI 写作去痕完整指南 |\n| [常见问题](docs/FAQ.md) | 20+ 常见问题解答 |\n| [故障排查](docs/TROUBLESHOOTING.md) | 遇到问题看这里 |\n\n---\n\n## 贡献\n\n欢迎提交 Issue 和 Pull Request！\n\n如果你有好的想法或发现了 bug，请随时提 issue。\n\n---\n\n## 许可证\n\n[MIT License](LICENSE)\n\n---\n\n## 打赏 Buy Me A Coffee\n\n如果该项目帮助了您，请作者喝杯咖啡吧。\n\n### WeChat\n\n\u003cimg src=\"https://raw.githubusercontent.com/geekjourneyx/awesome-developer-go-sail/main/docs/assets/wechat-reward-code.jpg\" alt=\"微信打赏码\" width=\"200\" /\u003e\n\n---\n\n## 作者\n\n- 作者：**geekjourneyx**\n- X（Twitter）：https://x.com/seekjourney\n- 公众号：极客杰尼\n\n如需咨询，扫描公众号二维码联系，备注「API咨询」：\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/geekjourneyx/awesome-developer-go-sail/main/docs/assets/qrcode.jpg\" alt=\"公众号：极客杰尼\" width=\"180\" /\u003e\n\u003c/p\u003e\n\n## Star History\n\n\u003ca href=\"https://www.star-history.com/?repos=geekjourneyx%2Fmd2wechat-skill\u0026type=date\u0026legend=top-left\"\u003e\n \u003cpicture\u003e\n   \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://api.star-history.com/image?repos=geekjourneyx/md2wechat-skill\u0026type=date\u0026theme=dark\u0026legend=top-left\" /\u003e\n   \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://api.star-history.com/image?repos=geekjourneyx/md2wechat-skill\u0026type=date\u0026legend=top-left\" /\u003e\n   \u003cimg alt=\"Star History Chart\" src=\"https://api.star-history.com/image?repos=geekjourneyx/md2wechat-skill\u0026type=date\u0026legend=top-left\" /\u003e\n \u003c/picture\u003e\n\u003c/a\u003e\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n**让公众号写作更简单**\n\n[主页](https://github.com/geekjourneyx/md2wechat-skill) • [文档](docs) • [反馈](https://github.com/geekjourneyx/md2wechat-skill/issues)\n\nMade by [geekjourneyx](https://geekjourney.dev)\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgeekjourneyx%2Fmd2wechat-skill","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgeekjourneyx%2Fmd2wechat-skill","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgeekjourneyx%2Fmd2wechat-skill/lists"}