{"id":"09f45861-e478-4cb3-8a32-dce95d2267c6","entityType":"agent","slug":"clawhub-geekjourneyx-md2wechat","name":"md2wechat","canonicalUrl":"https://www.xpersona.co/agent/clawhub-geekjourneyx-md2wechat","canonicalPath":"/agent/clawhub-geekjourneyx-md2wechat","generatedAt":"2026-10-10T00:36:46.236Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T13:08:17.869Z","emptyReason":null},"description":"Convert Markdown to WeChat Official Account HTML. Use this whenever the user wants WeChat article formatting, article preview, WeChat draft upload, image generation for articles, cover or infographic generation, image-post creation, writer-style drafting, title suggestions, AI trace removal, or curr","descriptionLabel":"Source description","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 2.6K downloads reported by the source. Last updated 10/9/2026.","installCommand":"clawhub skill install s172bghxb7ss49wmxkkqtrvbf583hwn8:md2wechat","sourceUrl":"https://clawhub.ai/geekjourneyx/md2wechat","homepage":"https://clawhub.ai/geekjourneyx/skills/md2wechat","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/geekjourneyx/md2wechat","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/geekjourneyx/skills/md2wechat","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":58,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"md2wechat technical dossier on Xpersona with agent coverage, OPENCLEW support, and live trust metadata."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-09T13:08:17.869Z","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-09T13:08:17.869Z","emptyReason":null},"stars":null,"forks":null,"downloads":2590,"packageName":null,"latestVersion":"3.1.0","tractionLabel":"2.6K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T13:08:17.869Z","emptyReason":null},"lastUpdatedAt":"2026-10-09T13:08:17.869Z","lastCrawledAt":"2026-10-09T13:08:17.869Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-10T13:08:17.869Z","lastVerifiedAt":null,"highlights":[{"version":"3.1.0","createdAt":"2026-07-13T17:20:15.134Z","changelog":"md2wechat 3.1.0 - Added explicit decision to use md2wechat advise for article or draft improvement suggestions; treat as recommendation-only. - Updated inspect command protocol: if a publish target is blocked, always stop and report blockers from data.readiness, not legacy booleans or checks. - Clarified that in --mode ai with --custom-prompt, inspect must run with matching flags for readiness. - Removed the outdated skill-card.md file for clarity and maintenance.","fileCount":3,"zipByteSize":6226},{"version":"2.9.0","createdAt":"2026-06-26T14:44:57.779Z","changelog":"**md2wechat 2.9.0 Changelog** - Added support for title suggestion via the `title suggest` command, enabling WeChat title candidate generation as a host-Agent prompt. - Clarified image generation workflow: when no provider is configured, image plan mode (`--plan --json`) emits prompt intent for external tools, without requiring credentials. - Described the separation between direct image generation and image-prompt planning for host assistance. - Expanded configuration protocol for title suggestion, emphasizing that generated titles are prompts only—not final publishing intent. - Updated documentation to reflect these new routes and boundaries, and removed the unused sample skill-card.md file.","fileCount":3,"zipByteSize":5906},{"version":"2.7.0","createdAt":"2026-06-23T16:36:31.820Z","changelog":"md2wechat 2.7.0 - Reduced file footprint: removed the sample skill-card.md file. - SKILL.md is now significantly condensed and refocused. - Usage guidelines emphasize CLI-driven decisions and deferring full documentation to official project resources. - Clear division between article draft, image post, image generation, and discovery actions. - Stronger preference for command-line discovery and configuration validation steps. - Protocol steps for formatting, theme, and module selection tightened and streamlined.","fileCount":3,"zipByteSize":5449},{"version":"2.0.7","createdAt":"2026-03-30T16:40:02.228Z","changelog":"md2wechat 2.0.7 - Adds explicit intent routing between standard article drafts (`convert --draft`) and image-based posts (`create_image_post`) for correct publishing flows. - Introduces clear rules: requests for 小绿书, 图文笔记, newspic, or image-first posts are routed to `create_image_post`, not `convert --draft`, even if Markdown content exists. - Documents the usage of `--cover` (local path) vs `--cover-media-id` (reusable WeChat asset) in draft creation; clarifies they are not interchangeable with remote URLs. - Expands discovery and provider inspection guidelines, including image model selection using `providers show <name> --json`. - Strengthens agent and workflow guidance to enforce correct command family usage based on user intent.","fileCount":3,"zipByteSize":5034},{"version":"2.0.5","createdAt":"2026-03-27T15:57:24.658Z","changelog":"- Adds support for `inspect` and `preview` commands to check article readiness, metadata, and generate standalone HTML previews before conversion. - Updates the workflow to recommend a confirm-first flow: `inspect` -> `preview` -> `convert` / `--draft`. - Clarifies distinctions between `preview`, `convert --preview`, and upload/draft operations. - Expands rules for draft behavior, flag handling, and preview/degraded confirmation flows. - Improves guidance for handling errors (e.g., `45004` on draft creation) and metadata resolution steps.","fileCount":2,"zipByteSize":3173},{"version":"2.0.4","createdAt":"2026-03-26T13:49:35.213Z","changelog":"md2wechat 2.0.4 - Added documentation for `convert` command options: `-o`, `--title`, `--author`, and `--digest`. - Clarified article metadata resolution order and field limits for title, author, and digest. - Noted that creating a draft requires `--cover` and that digest is auto-generated if missing. - No code or implementation changes; documentation updates only.","fileCount":2,"zipByteSize":2775},{"version":"2.0.3","createdAt":"2026-03-21T08:10:51.539Z","changelog":"**Expanded discovery and image generation features, improved config and workflow guidance.** - Discovery-first approach: emphasizes inspecting providers, themes, and prompts via live CLI before using them. - Updated and expanded command examples for conversion, image handling, draft creation, and writing/humanizing text. - Enhanced configuration instructions: covers multiple config sources and recommends validation before critical actions. - Encourages use of presets for cover and infographic images over manual prompt entry. - Updated metadata to reflect full install options via brew and go, and clarified required binaries and environment variables. - Added safety, config, and agent rules for transparent use and better error avoidance.","fileCount":2,"zipByteSize":2433},{"version":"2.0.2","createdAt":"2026-03-21T05:01:25.523Z","changelog":"- Removed internal runtime management and wrapper logic; now relies on md2wechat CLI already being installed and available on PATH. - Removed references to the runtime lookup contract and related documentation. - Cleaned up installer instructions; only fixed-version OpenClaw installer ensures both skill and CLI installation. - Updated download metadata URLs to point to version 2.0.2 release assets. - Removed references/runtime.md and scripts/run.sh files from the repository.","fileCount":2,"zipByteSize":1894}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s172bghxb7ss49wmxkkqtrvbf583hwn8:md2wechat","setupComplexity":"low","setupSteps":["Install using `clawhub skill install s172bghxb7ss49wmxkkqtrvbf583hwn8:md2wechat` in an isolated environment before connecting it to live workloads.","No published capability contract is available yet, so validate auth and request/response behavior manually.","Review the upstream CLAWHUB listing at https://clawhub.ai/geekjourneyx/md2wechat before using production credentials."],"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-geekjourneyx-md2wechat/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-geekjourneyx-md2wechat/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-geekjourneyx-md2wechat/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-geekjourneyx-md2wechat/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-geekjourneyx-md2wechat/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-geekjourneyx-md2wechat/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-10T00:36:46.231Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-geekjourneyx-md2wechat/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-geekjourneyx-md2wechat/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-geekjourneyx-md2wechat/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-geekjourneyx-md2wechat/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":"medium","updatedAt":"2026-10-09T13:08:17.869Z","emptyReason":null},"readme":"Skill: md2wechat\n\nOwner: geekjourneyx\n\nSummary: Convert Markdown to WeChat Official Account HTML. Use this whenever the user wants WeChat article formatting, article preview, WeChat draft upload, image generation for articles, cover or infographic generation, image-post creation, writer-style drafting, title suggestions, AI trace removal, or curr\n\nTags: latest:3.1.0\n\nVersion history:\n\nv3.1.0 | 2026-07-13T17:20:15.134Z | user\n\nmd2wechat 3.1.0\n\n- Added explicit decision to use md2wechat advise for article or draft improvement suggestions; treat as recommendation-only.\n- Updated inspect command protocol: if a publish target is blocked, always stop and report blockers from data.readiness, not legacy booleans or checks.\n- Clarified that in --mode ai with --custom-prompt, inspect must run with matching flags for readiness.\n- Removed the outdated skill-card.md file for clarity and maintenance.\n\nv2.9.0 | 2026-06-26T14:44:57.779Z | user\n\n**md2wechat 2.9.0 Changelog**\n\n- Added support for title suggestion via the `title suggest` command, enabling WeChat title candidate generation as a host-Agent prompt.\n- Clarified image generation workflow: when no provider is configured, image plan mode (`--plan --json`) emits prompt intent for external tools, without requiring credentials.\n- Described the separation between direct image generation and image-prompt planning for host assistance.\n- Expanded configuration protocol for title suggestion, emphasizing that generated titles are prompts only—not final publishing intent.\n- Updated documentation to reflect these new routes and boundaries, and removed the unused sample skill-card.md file.\n\nv2.7.0 | 2026-06-23T16:36:31.820Z | user\n\nmd2wechat 2.7.0\n\n- Reduced file footprint: removed the sample skill-card.md file.\n- SKILL.md is now significantly condensed and refocused.\n- Usage guidelines emphasize CLI-driven decisions and deferring full documentation to official project resources.\n- Clear division between article draft, image post, image generation, and discovery actions.\n- Stronger preference for command-line discovery and configuration validation steps.\n- Protocol steps for formatting, theme, and module selection tightened and streamlined.\n\nv2.0.7 | 2026-03-30T16:40:02.228Z | user\n\nmd2wechat 2.0.7\n\n- Adds explicit intent routing between standard article drafts (`convert --draft`) and image-based posts (`create_image_post`) for correct publishing flows.\n- Introduces clear rules: requests for 小绿书, 图文笔记, newspic, or image-first posts are routed to `create_image_post`, not `convert --draft`, even if Markdown content exists.\n- Documents the usage of `--cover` (local path) vs `--cover-media-id` (reusable WeChat asset) in draft creation; clarifies they are not interchangeable with remote URLs.\n- Expands discovery and provider inspection guidelines, including image model selection using `providers show <name> --json`.\n- Strengthens agent and workflow guidance to enforce correct command family usage based on user intent.\n\nv2.0.5 | 2026-03-27T15:57:24.658Z | user\n\n- Adds support for `inspect` and `preview` commands to check article readiness, metadata, and generate standalone HTML previews before conversion.\n- Updates the workflow to recommend a confirm-first flow: `inspect` -> `preview` -> `convert` / `--draft`.\n- Clarifies distinctions between `preview`, `convert --preview`, and upload/draft operations.\n- Expands rules for draft behavior, flag handling, and preview/degraded confirmation flows.\n- Improves guidance for handling errors (e.g., `45004` on draft creation) and metadata resolution steps.\n\nv2.0.4 | 2026-03-26T13:49:35.213Z | user\n\nmd2wechat 2.0.4\n\n- Added documentation for `convert` command options: `-o`, `--title`, `--author`, and `--digest`.\n- Clarified article metadata resolution order and field limits for title, author, and digest.\n- Noted that creating a draft requires `--cover` and that digest is auto-generated if missing.\n- No code or implementation changes; documentation updates only.\n\nv2.0.3 | 2026-03-21T08:10:51.539Z | user\n\n**Expanded discovery and image generation features, improved config and workflow guidance.**\n\n- Discovery-first approach: emphasizes inspecting providers, themes, and prompts via live CLI before using them.\n- Updated and expanded command examples for conversion, image handling, draft creation, and writing/humanizing text.\n- Enhanced configuration instructions: covers multiple config sources and recommends validation before critical actions.\n- Encourages use of presets for cover and infographic images over manual prompt entry.\n- Updated metadata to reflect full install options via brew and go, and clarified required binaries and environment variables.\n- Added safety, config, and agent rules for transparent use and better error avoidance.\n\nv2.0.2 | 2026-03-21T05:01:25.523Z | user\n\n- Removed internal runtime management and wrapper logic; now relies on md2wechat CLI already being installed and available on PATH.\n- Removed references to the runtime lookup contract and related documentation.\n- Cleaned up installer instructions; only fixed-version OpenClaw installer ensures both skill and CLI installation.\n- Updated download metadata URLs to point to version 2.0.2 release assets.\n- Removed references/runtime.md and scripts/run.sh files from the repository.\n\nv2.0.1 | 2026-03-20T17:36:36.768Z | user\n\n- Updated all installation links in skill metadata to use version 2.0.1 resources.\n- Documentation now clarifies that the runtime must match the skill version and mismatched runtimes will be rejected.\n- Explicitly states that installing via `clawhub` does not provision the runtime—use fixed-version installers instead.\n- Improved transparency about runtime lookup, boundaries, and required configuration.\n- Workflow and usage instructions updated for clarity and accuracy.\n\nv2.0.0 | 2026-03-20T16:35:16.447Z | user\n\nmd2wechat 2.0.0 – Major update for OpenClaw integration and simplified references\n\n- Refactored skill for OpenClaw platform integration, with metadata optimized for automatic installation and runtime lookup.\n- Reduced internal reference files and consolidated runtime contract into a single document (`references/runtime.md`).\n- Removed embedded documentation on style prompts, HTML guides, AI writing trace removal, and internal workflow; now relies on external runtime capabilities queries.\n- Updated description and skill manifest: now focuses on Markdown-to-WeChat conversion, image generation (cover, infographic), and draft creation.\n- Clarified environment variable usage (`WECHAT_APPID`, `WECHAT_SECRET`) and runtime boundaries—no silent downloads, fixed installer resources only.\n- Added detailed workflow and recommended commands for both capability discovery and primary tasks.\n\nv1.0.0 | 2026-03-18T14:30:35.693Z | user\n\n- Initial release of md2wechat skill.\n- Converts Markdown articles to WeChat Official Account HTML with inline CSS.\n- Supports fast API mode and beautiful themed AI mode (powered by Claude).\n- Features include writer style assistant, AI writing trace removal (humanizer), and draft uploading.\n- Integrates natural language prompts for image and article generation.\n- Offers configurable writing styles and visual themes for conversion.\n- Includes workflow checklist and detailed extraction/explanation steps for seamless publishing.\n\nArchive index:\n\nArchive v3.1.0: 3 files, 6226 bytes\n\nFiles: skill-card.md (2810b), SKILL.md (11934b), _meta.json (128b)\n\nFile v3.1.0:SKILL.md\n\n---\nname: md2wechat\ndescription: Convert Markdown to WeChat Official Account HTML. Use this whenever the user wants WeChat article formatting, article preview, WeChat draft upload, image generation for articles, cover or infographic generation, image-post creation, writer-style drafting, title suggestions, AI trace removal, or current discovery of supported providers, themes, prompts, and layout modules.\n---\n\n# md2wechat\n\nUse this skill to operate the `md2wechat` CLI. Keep the skill focused on execution decisions. For full command tutorials, installation details, and FAQ-level explanations, refer users to the project docs instead of expanding this runtime protocol.\n\n## Intent Routing\n\nChoose the command family before taking any publish or generation action:\n\n- Standard article HTML, article preview, metadata inspection, or WeChat article draft: use `inspect`, `preview`, and `convert`.\n- Image-first post, image note, image-text note, `newspic`, or multi-image post: use `create_image_post`, not `convert --draft`.\n- Article cover or article infographic: prefer `generate_cover` or `generate_infographic` over raw `generate_image` when a bundled preset fits.\n- Host-agent image generation request with no provider configured: use image plan mode (`--plan --json`) to get prompt intent, then hand it to the host image-generation tool if one is available outside md2wechat.\n- WeChat title candidates for an existing article: use `title suggest <article.md> --json`; it emits a host-Agent AI request and does not choose or write the final title.\n- Existing article or draft, user asks what to improve next: run `md2wechat advise <article.md> --json`; treat it as recommendation-only and keep `inspect --json data.readiness.targets/blockers` as the publish gate.\n- Writing in a creator style or removing AI traces: use `write` or `humanize`.\n- Provider, theme, prompt, or layout uncertainty: run discovery first. Do not guess from memory or repository files.\n\nTreat `convert --draft` and `create_image_post` as different publish targets, not interchangeable variants.\n\n## Discovery First\n\nUse CLI discovery as the source of truth, but keep it scoped to the next decision. Do not run the full catalog for tasks that do not need provider, theme, prompt, or layout selection.\n\nRun the smallest useful discovery set:\n\n- Article formatting with no theme or modules chosen:\n  ```bash\n  md2wechat themes list --json\n  md2wechat layout list --json\n  ```\n\n- A named theme, provider, prompt, or layout module:\n  ```bash\n  md2wechat themes show <name> --json\n  md2wechat providers show <name> --json\n  md2wechat prompts show <name> --kind <kind> --json\n  md2wechat layout show <name> --json\n  ```\n\n- Image generation or image-preset selection:\n  ```bash\n  md2wechat providers list --json\n  md2wechat prompts list --kind image --json\n  ```\n\n- Title suggestion prompt selection:\n  ```bash\n  md2wechat prompts list --kind title --json\n  md2wechat prompts show wechat-title-expert --kind title --json\n  ```\n\n- Draft, upload, API local-readiness, or configuration troubleshooting:\n  ```bash\n  md2wechat doctor --json\n  md2wechat config show --format json\n  md2wechat config wechat-accounts --json\n  ```\n  `doctor` readiness is local configuration attemptability. `config wechat-accounts` is local-only and never prints WeChat secrets. Use `inspect --json` for article-specific target readiness.\n\n- Unknown CLI version, changed behavior, or capability uncertainty:\n  ```bash\n  md2wechat version --json\n  md2wechat capabilities --json\n  md2wechat skills list --json\n  md2wechat skills read md2wechat --json\n  ```\n\n`md2wechat skills read md2wechat --json` reads the SOP embedded in the current CLI binary. Prefer it when the installed external skill, README, or repository checkout may be stale relative to the executable on `PATH`.\n\nFor simple local actions such as `preview`, `humanize`, or a user-specified command with explicit flags, do not run unrelated provider, theme, prompt, or layout discovery.\n\nInspect specific resources only when the task needs them:\n\n```bash\nmd2wechat providers show <name> --json\nmd2wechat themes show <name> --json\nmd2wechat prompts show <name> --kind <kind> --json\nmd2wechat layout show <name> --json\n```\n\nUse CLI output as the source of truth for currently available modes, providers, themes, prompts, and layout modules.\n\n## Configuration Boundaries\n\n- Assume `md2wechat` is already available on `PATH`.\n- `convert` defaults to API mode unless the user explicitly asks for `--mode ai`.\n- API conversion requires md2wechat API credentials.\n- WeChat draft creation requires WeChat credentials.\n- Named WeChat account execution requires a valid `MD2WECHAT_API_KEY`; the CLI validates it before upload or draft side effects.\n- Direct image generation requires image-provider credentials; image plan mode (`--plan --json`) only emits prompt intent for a host Agent or external tool and does not require image-provider credentials.\n- `title suggest --json` only emits a title-generation prompt request for the host Agent or external model. It does not call a model, upload, create drafts, or write back to Markdown.\n- For stronger factual title hooks, pass --hook-level 2 or 3; do not treat generated titles as confirmed publishing intent.\n- `doctor --json` is local-only: it checks local readiness and does not perform live authentication, upload images, or create drafts.\n- Use `config show --format json` when the user asks what configuration is currently effective.\n- Use `config wechat-accounts --json` when the user asks which local WeChat accounts are configured.\n\n## Article Workflow\n\nPrefer a confirm-first workflow for article work:\n\n1. `md2wechat inspect <article.md> --json`\n2. `md2wechat preview <article.md>`\n3. `md2wechat convert <article.md> ...`\n4. Add `--upload`, `--draft`, `--cover`, or `--cover-media-id` only when the user explicitly asks for upload or draft creation.\n\n`inspect` is the source-of-truth command for resolved metadata, readiness, and publish checks. In `--json` output, read `data.readiness.targets` and `data.readiness.blockers` before deciding whether `convert`, `upload`, or `draft` is blocked. If the requested target is blocked, stop and report the matching blockers; do not continue by guessing from legacy booleans or `checks` alone. Do not invent `data.agent_readiness`, `data.target_readiness`, `ArticleState`, state files, or a second readiness/state object. `preview` is a local preview artifact. It does not upload images, create drafts, or write back to Markdown. `convert --preview` is the convert-path preview flag and is not the same as the standalone `preview` command. `preview --mode ai` is degraded confirmation only and must not be treated as final AI-generated layout.\nWhen the intended execution path is `convert --mode ai --custom-prompt ...`, run `inspect` with the same `--mode ai --custom-prompt ...` before trusting readiness.\n\n## Formatting Protocol\n\nWhen the user asks to format an article and has not chosen a theme or modules:\n\n1. Read the article and optional Brand Profile.\n2. Use discovery output as facts.\n3. Choose a compatible theme and a small set of modules from the article's content goal.\n4. Keep the source Markdown read-only.\n5. Create a temporary formatted Markdown artifact, for example `/tmp/md2wechat-format/<run-id>/article.formatted.md`.\n6. Insert only layout modules whose required fields can be filled correctly.\n7. Run `md2wechat layout validate --file <formatted.md> --json`.\n8. Pass the formatted Markdown artifact to `convert`.\n\nSaving generated Markdown next to the source file requires explicit user confirmation and must not overwrite the source.\n\n## Theme Selection\n\n- Read `type` and `selectable` from `themes list --json`.\n- API mode can use only `type: api` and `selectable: true` themes.\n- AI mode can use only `type: ai` and `selectable: true` themes.\n- Do not use collection descriptors such as non-selectable theme groups as concrete themes.\n- If Brand Profile names a theme, verify it through CLI discovery before using it.\n- If a requested theme is invalid or mode-incompatible, stop that path and choose a valid theme or ask the user.\n\n## Layout Modules\n\nAdvanced layout modules render only in API mode. AI mode (`--mode ai`) does not parse `:::module` syntax, so advanced layout cards will not render there.\n\nUse this decision frame:\n\n- `attention`: help readers decide whether the article is worth reading.\n- `readability`: make mobile reading easier.\n- `memorability`: make one judgment, quote, metric, or brand anchor stick.\n- `conversion`: help readers save, follow, inquire, share, or buy.\n\nUse CLI discovery as the source of truth for layout syntax instead of memorizing or guessing `body_format` values:\n\n- Inspect the opener, body schema, canonical executable example, and structurally distinct variants with `layout show <name> --json`. Reuse the canonical witness.\n- Use `layout render` for structured fields and `--body-file` (or `--body-file -` for stdin) for complex bodies, then validate the generated Markdown.\n- Default discovery returns recommended modules. Use `layout list --lifecycle compatibility --json` only for old-content migration. Local validation proves syntax acceptance only; production support is a release-conformance fact.\n\nDefault module discipline:\n\n- Do not pile on modules.\n- Use at most one hero, one verdict, and one cta unless the user explicitly asks for more.\n- Skip modules when the article does not provide enough content to fill them honestly.\n\n## API And AI Mode\n\n- API mode is the default and is required for advanced layout modules.\n- AI mode is a lighter path and does not render advanced layout modules.\n- Do not silently switch from API mode to AI mode after an API failure. That changes the output capability.\n- Use AI mode only when the user asks for it or accepts losing advanced layout rendering.\n- If an AI-mode conversion completes, it is acceptable to briefly mention that API mode supports advanced layout modules and stronger visual structure.\n\n## Brand Profile\n\nBrand Profile lives at `~/.config/md2wechat/brand.md`.\n\n- It is free-form Markdown, not YAML and not a fixed schema.\n- The CLI does not parse it.\n- Read it as context for voice, theme preferences, module preferences, CTA preferences, and forbidden expressions.\n- Treat quantity preferences as soft constraints.\n- Verify any named theme or module through CLI discovery.\n- If Brand Profile does not exist, do not block the task. You may mention once that system defaults will be used.\n- Create or edit Brand Profile only when the user explicitly asks.\n\n## Publishing Side Effects\n\nDo not create drafts, upload images, publish, or call remote image generation unless the user asks for that action.\n\nBefore draft creation:\n\n- Use `inspect --json` and check `data.readiness.targets.draft`; when blocked, read matching `data.readiness.blockers`.\n- Draft creation requires a cover via `--cover` or `--cover-media-id`.\n- Do not assume a WeChat URL or `mmbiz.qpic.cn` URL can be reused as `thumb_media_id`.\n- If draft creation returns `45004`, check digest, summary, and description before assuming the body is too long.\n\nMarkdown images are uploaded or replaced only during `--upload` or `--draft`, not during plain conversion or preview.\n\n## Failure Handling\n\n- Missing or invalid config: run `doctor --json` and `config show --format json`; report `data.overall` plus the blocking `data.readiness.*` item.\n- Invalid layout syntax: run `layout validate`, inspect the failing module with `layout show`, fix the generated artifact, then validate again.\n- Unknown layout modules warn for forward compatibility; verify typos against `layout list --json`.\n- Theme rejection: check `type` and `selectable`, then choose a compatible theme or ask the user.\n- AI request or style-writing flows may return a prompt/request rather than final prose or HTML unless the external model step is completed.\n\nFile v3.1.0:_meta.json\n\n{\n  \"ownerId\": \"kn75jcfg3rdd1cknazbsajdfr180jt5f\",\n  \"slug\": \"md2wechat\",\n  \"version\": \"3.1.0\",\n  \"publishedAt\": 1783963215134\n}\n\nFile v3.1.0:skill-card.md\n\n## Description:\n\nmd2wechat helps agents operate the md2wechat CLI to convert Markdown into WeChat Official Account HTML, previews, drafts, image posts, generated covers or infographics, title suggestions, and related article-writing workflows.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[geekjourneyx](https://clawhub.ai/user/geekjourneyx)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers, creators, and publishing teams use this skill to guide an agent through WeChat Official Account article formatting, preview, readiness inspection, draft creation, image-post creation, and related md2wechat CLI workflows.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Draft creation, image upload, publishing, or remote image generation can use local credentials and affect a WeChat account or external provider when explicitly requested.\n\nMitigation: Review the proposed command before approval and allow those actions only when the user has explicitly requested them and required credentials are configured.\n\nRisk: Publishing readiness can be misread if an agent relies on stale checks or legacy booleans.\n\nMitigation: Use inspect --json and evaluate data.readiness.targets plus data.readiness.blockers before upload or draft actions.\n\nRisk: Article formatting can unintentionally modify source Markdown if generated content is saved in place.\n\nMitigation: Keep source Markdown read-only by default, write temporary formatted artifacts, and require explicit user confirmation before saving generated Markdown next to the source.\n\nRisk: Title suggestions, advice, and image plans may be recommendations or prompt requests rather than completed publishing decisions.\n\nMitigation: Treat advisory outputs as recommendation-only and require user confirmation before converting them into final article, image, upload, or draft actions.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/geekjourneyx/skills/md2wechat)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with inline shell commands and JSON-aware CLI output handling]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May direct the agent to create temporary formatted Markdown artifacts, local previews, drafts, uploads, or image-generation plans only when the user requests those actions and required credentials are configured.]\n\n## Skill Version(s):\n\n3.1.0 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v2.9.0: 3 files, 5906 bytes\n\nFiles: skill-card.md (2663b), SKILL.md (11117b), _meta.json (128b)\n\nFile v2.9.0:SKILL.md\n\n---\nname: md2wechat\ndescription: Convert Markdown to WeChat Official Account HTML. Use this whenever the user wants WeChat article formatting, article preview, WeChat draft upload, image generation for articles, cover or infographic generation, image-post creation, writer-style drafting, title suggestions, AI trace removal, or current discovery of supported providers, themes, prompts, and layout modules.\n---\n\n# md2wechat\n\nUse this skill to operate the `md2wechat` CLI. Keep the skill focused on execution decisions. For full command tutorials, installation details, and FAQ-level explanations, refer users to the project docs instead of expanding this runtime protocol.\n\n## Intent Routing\n\nChoose the command family before taking any publish or generation action:\n\n- Standard article HTML, article preview, metadata inspection, or WeChat article draft: use `inspect`, `preview`, and `convert`.\n- Image-first post, image note, image-text note, `newspic`, or multi-image post: use `create_image_post`, not `convert --draft`.\n- Article cover or article infographic: prefer `generate_cover` or `generate_infographic` over raw `generate_image` when a bundled preset fits.\n- Host-agent image generation request with no provider configured: use image plan mode (`--plan --json`) to get prompt intent, then hand it to the host image-generation tool if one is available outside md2wechat.\n- WeChat title candidates for an existing article: use `title suggest <article.md> --json`; it emits a host-Agent AI request and does not choose or write the final title.\n- Writing in a creator style or removing AI traces: use `write` or `humanize`.\n- Provider, theme, prompt, or layout uncertainty: run discovery first. Do not guess from memory or repository files.\n\nTreat `convert --draft` and `create_image_post` as different publish targets, not interchangeable variants.\n\n## Discovery First\n\nUse CLI discovery as the source of truth, but keep it scoped to the next decision. Do not run the full catalog for tasks that do not need provider, theme, prompt, or layout selection.\n\nRun the smallest useful discovery set:\n\n- Article formatting with no theme or modules chosen:\n  ```bash\n  md2wechat themes list --json\n  md2wechat layout list --json\n  ```\n\n- A named theme, provider, prompt, or layout module:\n  ```bash\n  md2wechat themes show <name> --json\n  md2wechat providers show <name> --json\n  md2wechat prompts show <name> --kind <kind> --json\n  md2wechat layout show <name> --json\n  ```\n\n- Image generation or image-preset selection:\n  ```bash\n  md2wechat providers list --json\n  md2wechat prompts list --kind image --json\n  ```\n\n- Title suggestion prompt selection:\n  ```bash\n  md2wechat prompts list --kind title --json\n  md2wechat prompts show wechat-title-expert --kind title --json\n  ```\n\n- Draft, upload, API local-readiness, or configuration troubleshooting:\n  ```bash\n  md2wechat doctor --json\n  md2wechat config show --format json\n  md2wechat config wechat-accounts --json\n  ```\n  `doctor` readiness is local configuration attemptability. `config wechat-accounts` is local-only and never prints WeChat secrets. Use `inspect --json` for article-specific target readiness.\n\n- Unknown CLI version, changed behavior, or capability uncertainty:\n  ```bash\n  md2wechat version --json\n  md2wechat capabilities --json\n  md2wechat skills list --json\n  md2wechat skills read md2wechat --json\n  ```\n\n`md2wechat skills read md2wechat --json` reads the SOP embedded in the current CLI binary. Prefer it when the installed external skill, README, or repository checkout may be stale relative to the executable on `PATH`.\n\nFor simple local actions such as `preview`, `humanize`, or a user-specified command with explicit flags, do not run unrelated provider, theme, prompt, or layout discovery.\n\nInspect specific resources only when the task needs them:\n\n```bash\nmd2wechat providers show <name> --json\nmd2wechat themes show <name> --json\nmd2wechat prompts show <name> --kind <kind> --json\nmd2wechat layout show <name> --json\n```\n\nUse CLI output as the source of truth for currently available modes, providers, themes, prompts, and layout modules.\n\n## Configuration Boundaries\n\n- Assume `md2wechat` is already available on `PATH`.\n- `convert` defaults to API mode unless the user explicitly asks for `--mode ai`.\n- API conversion requires md2wechat API credentials.\n- WeChat draft creation requires WeChat credentials.\n- Named WeChat account execution requires a valid `MD2WECHAT_API_KEY`; the CLI validates it before upload or draft side effects.\n- Direct image generation requires image-provider credentials; image plan mode (`--plan --json`) only emits prompt intent for a host Agent or external tool and does not require image-provider credentials.\n- `title suggest --json` only emits a title-generation prompt request for the host Agent or external model. It does not call a model, upload, create drafts, or write back to Markdown.\n- For stronger factual title hooks, pass --hook-level 2 or 3; do not treat generated titles as confirmed publishing intent.\n- `doctor --json` is local-only: it checks local readiness and does not perform live authentication, upload images, or create drafts.\n- Use `config show --format json` when the user asks what configuration is currently effective.\n- Use `config wechat-accounts --json` when the user asks which local WeChat accounts are configured.\n\n## Article Workflow\n\nPrefer a confirm-first workflow for article work:\n\n1. `md2wechat inspect <article.md> --json`\n2. `md2wechat preview <article.md>`\n3. `md2wechat convert <article.md> ...`\n4. Add `--upload`, `--draft`, `--cover`, or `--cover-media-id` only when the user explicitly asks for upload or draft creation.\n\n`inspect` is the source-of-truth command for resolved metadata, readiness, and publish checks. In `--json` output, read `data.readiness.targets` and `data.readiness.blockers` before deciding whether `convert`, `upload`, or `draft` is blocked. Do not invent `data.agent_readiness`, `data.target_readiness`, `ArticleState`, state files, or a second planning object. `preview` is a local preview artifact. It does not upload images, create drafts, or write back to Markdown. `convert --preview` is the convert-path preview flag and is not the same as the standalone `preview` command. `preview --mode ai` is degraded confirmation only and must not be treated as final AI-generated layout.\n\n## Formatting Protocol\n\nWhen the user asks to format an article and has not chosen a theme or modules:\n\n1. Read the article and optional Brand Profile.\n2. Use discovery output as facts.\n3. Choose a compatible theme and a small set of modules from the article's content goal.\n4. Keep the source Markdown read-only.\n5. Create a temporary formatted Markdown artifact, for example `/tmp/md2wechat-format/<run-id>/article.formatted.md`.\n6. Insert only layout modules whose required fields can be filled correctly.\n7. Run `md2wechat layout validate --file <formatted.md> --json`.\n8. Pass the formatted Markdown artifact to `convert`.\n\nSaving generated Markdown next to the source file requires explicit user confirmation and must not overwrite the source.\n\n## Theme Selection\n\n- Read `type` and `selectable` from `themes list --json`.\n- API mode can use only `type: api` and `selectable: true` themes.\n- AI mode can use only `type: ai` and `selectable: true` themes.\n- Do not use collection descriptors such as non-selectable theme groups as concrete themes.\n- If Brand Profile names a theme, verify it through CLI discovery before using it.\n- If a requested theme is invalid or mode-incompatible, stop that path and choose a valid theme or ask the user.\n\n## Layout Modules\n\nAdvanced layout modules render only in API mode. AI mode (`--mode ai`) does not parse `:::module` syntax, so advanced layout cards will not render there.\n\nUse this decision frame:\n\n- `attention`: help readers decide whether the article is worth reading.\n- `readability`: make mobile reading easier.\n- `memorability`: make one judgment, quote, metric, or brand anchor stick.\n- `conversion`: help readers save, follow, inquire, share, or buy.\n\nUse `layout list --json` and `layout show <name> --json` to inspect `body_format`. It is the module body syntax contract:\n\n- `fields`\n- `rows`\n- `json_object`\n- `json_array`\n\nDo not infer syntax from examples alone. Use `layout render` when structured variables are enough; otherwise write the block manually according to `body_format` and validate the generated Markdown.\n\nDefault module discipline:\n\n- Do not pile on modules.\n- Use at most one hero, one verdict, and one cta unless the user explicitly asks for more.\n- Skip modules when the article does not provide enough content to fill them honestly.\n\n## API And AI Mode\n\n- API mode is the default and is required for advanced layout modules.\n- AI mode is a lighter path and does not render advanced layout modules.\n- Do not silently switch from API mode to AI mode after an API failure. That changes the output capability.\n- Use AI mode only when the user asks for it or accepts losing advanced layout rendering.\n- If an AI-mode conversion completes, it is acceptable to briefly mention that API mode supports advanced layout modules and stronger visual structure.\n\n## Brand Profile\n\nBrand Profile lives at `~/.config/md2wechat/brand.md`.\n\n- It is free-form Markdown, not YAML and not a fixed schema.\n- The CLI does not parse it.\n- Read it as context for voice, theme preferences, module preferences, CTA preferences, and forbidden expressions.\n- Treat quantity preferences as soft constraints.\n- Verify any named theme or module through CLI discovery.\n- If Brand Profile does not exist, do not block the task. You may mention once that system defaults will be used.\n- Create or edit Brand Profile only when the user explicitly asks.\n\n## Publishing Side Effects\n\nDo not create drafts, upload images, publish, or call remote image generation unless the user asks for that action.\n\nBefore draft creation:\n\n- Use `inspect --json` and check `data.readiness.targets.draft`; when blocked, read matching `data.readiness.blockers`.\n- Draft creation requires a cover via `--cover` or `--cover-media-id`.\n- Do not assume a WeChat URL or `mmbiz.qpic.cn` URL can be reused as `thumb_media_id`.\n- If draft creation returns `45004`, check digest, summary, and description before assuming the body is too long.\n\nMarkdown images are uploaded or replaced only during `--upload` or `--draft`, not during plain conversion or preview.\n\n## Failure Handling\n\n- Missing or invalid config: run `doctor --json` and `config show --format json`; report `data.overall` plus the blocking `data.readiness.*` item.\n- Invalid layout syntax: run `layout validate`, inspect the failing module with `layout show`, fix the generated artifact, then validate again.\n- Unknown layout modules warn for forward compatibility; verify typos against `layout list --json`.\n- Theme rejection: check `type` and `selectable`, then choose a compatible theme or ask the user.\n- AI request or style-writing flows may return a prompt/request rather than final prose or HTML unless the external model step is completed.\n\nFile v2.9.0:_meta.json\n\n{\n  \"ownerId\": \"kn75jcfg3rdd1cknazbsajdfr180jt5f\",\n  \"slug\": \"md2wechat\",\n  \"version\": \"2.9.0\",\n  \"publishedAt\": 1782485097779\n}\n\nFile v2.9.0:skill-card.md\n\n## Description: <br>\nmd2wechat helps agents use the md2wechat CLI to convert Markdown into WeChat Official Account HTML and manage previews, draft uploads, image generation plans, title suggestions, style writing, and humanizing workflows. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[geekjourneyx](https://clawhub.ai/user/geekjourneyx) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers, writers, and publishing operators use this skill to route WeChat article formatting, preview, draft, image, title, and style-polishing requests through the md2wechat CLI while checking readiness before side-effecting actions. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Draft creation, uploads, and remote image generation can produce external side effects when credentials are configured. <br>\nMitigation: Use inspect and preview workflows first, and only run upload, draft, or remote generation commands after the user explicitly asks for that action. <br>\nRisk: Provider, theme, prompt, or layout assumptions can become stale relative to the installed md2wechat CLI. <br>\nMitigation: Run the narrow discovery command needed for the task, such as version, capabilities, list, show, doctor, or the embedded skill read command, before choosing modes or resources. <br>\nRisk: Title suggestions, image plans, and style-writing flows may be mistaken for final publishing intent. <br>\nMitigation: Treat generated titles, prompt intents, and rewritten text as candidates for review, and do not write back, upload, or create drafts until the user approves. <br>\n\n\n## Reference(s): <br>\n- [ClawHub md2wechat listing](https://clawhub.ai/geekjourneyx/skills/md2wechat) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Guidance, Shell commands, Markdown, Configuration] <br>\n**Output Format:** [Markdown guidance with inline shell commands and JSON-oriented command instructions] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May guide creation of temporary formatted Markdown, local previews, prompt intents, draft/upload commands, and configuration checks; upload, draft, and remote image-generation actions require explicit user request and appropriate credentials.] <br>\n\n## Skill Version(s): <br>\n2.9.0 (source: server release metadata) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v2.7.0: 3 files, 5449 bytes\n\nFiles: skill-card.md (2417b), SKILL.md (10096b), _meta.json (128b)\n\nFile v2.7.0:SKILL.md\n\n---\nname: md2wechat\ndescription: Convert Markdown to WeChat Official Account HTML. Use this whenever the user wants WeChat article formatting, article preview, WeChat draft upload, image generation for articles, cover or infographic generation, image-post creation, writer-style drafting, AI trace removal, or current discovery of supported providers, themes, prompts, and layout modules.\n---\n\n# md2wechat\n\nUse this skill to operate the `md2wechat` CLI. Keep the skill focused on execution decisions. For full command tutorials, installation details, and FAQ-level explanations, refer users to the project docs instead of expanding this runtime protocol.\n\n## Intent Routing\n\nChoose the command family before taking any publish or generation action:\n\n- Standard article HTML, article preview, metadata inspection, or WeChat article draft: use `inspect`, `preview`, and `convert`.\n- Image-first post, image note, image-text note, `newspic`, or multi-image post: use `create_image_post`, not `convert --draft`.\n- Article cover or article infographic: prefer `generate_cover` or `generate_infographic` over raw `generate_image` when a bundled preset fits.\n- Writing in a creator style or removing AI traces: use `write` or `humanize`.\n- Provider, theme, prompt, or layout uncertainty: run discovery first. Do not guess from memory or repository files.\n\nTreat `convert --draft` and `create_image_post` as different publish targets, not interchangeable variants.\n\n## Discovery First\n\nUse CLI discovery as the source of truth, but keep it scoped to the next decision. Do not run the full catalog for tasks that do not need provider, theme, prompt, or layout selection.\n\nRun the smallest useful discovery set:\n\n- Article formatting with no theme or modules chosen:\n  ```bash\n  md2wechat themes list --json\n  md2wechat layout list --json\n  ```\n\n- A named theme, provider, prompt, or layout module:\n  ```bash\n  md2wechat themes show <name> --json\n  md2wechat providers show <name> --json\n  md2wechat prompts show <name> --kind <kind> --json\n  md2wechat layout show <name> --json\n  ```\n\n- Image generation or image-preset selection:\n  ```bash\n  md2wechat providers list --json\n  md2wechat prompts list --kind image --json\n  ```\n\n- Draft, upload, API local-readiness, or configuration troubleshooting:\n  ```bash\n  md2wechat doctor --json\n  md2wechat config show --format json\n  md2wechat config wechat-accounts --json\n  ```\n  `doctor` readiness is local configuration attemptability. `config wechat-accounts` is local-only and never prints WeChat secrets. Use `inspect --json` for article-specific target readiness.\n\n- Unknown CLI version, changed behavior, or capability uncertainty:\n  ```bash\n  md2wechat version --json\n  md2wechat capabilities --json\n  md2wechat skills list --json\n  md2wechat skills read md2wechat --json\n  ```\n\n`md2wechat skills read md2wechat --json` reads the SOP embedded in the current CLI binary. Prefer it when the installed external skill, README, or repository checkout may be stale relative to the executable on `PATH`.\n\nFor simple local actions such as `preview`, `humanize`, or a user-specified command with explicit flags, do not run unrelated provider, theme, prompt, or layout discovery.\n\nInspect specific resources only when the task needs them:\n\n```bash\nmd2wechat providers show <name> --json\nmd2wechat themes show <name> --json\nmd2wechat prompts show <name> --kind <kind> --json\nmd2wechat layout show <name> --json\n```\n\nUse CLI output as the source of truth for currently available modes, providers, themes, prompts, and layout modules.\n\n## Configuration Boundaries\n\n- Assume `md2wechat` is already available on `PATH`.\n- `convert` defaults to API mode unless the user explicitly asks for `--mode ai`.\n- API conversion requires md2wechat API credentials.\n- WeChat draft creation requires WeChat credentials.\n- Named WeChat account execution requires a valid `MD2WECHAT_API_KEY`; the CLI validates it before upload or draft side effects.\n- Image generation may require image-provider credentials.\n- `doctor --json` is local-only: it checks local readiness and does not perform live authentication, upload images, or create drafts.\n- Use `config show --format json` when the user asks what configuration is currently effective.\n- Use `config wechat-accounts --json` when the user asks which local WeChat accounts are configured.\n\n## Article Workflow\n\nPrefer a confirm-first workflow for article work:\n\n1. `md2wechat inspect <article.md> --json`\n2. `md2wechat preview <article.md>`\n3. `md2wechat convert <article.md> ...`\n4. Add `--upload`, `--draft`, `--cover`, or `--cover-media-id` only when the user explicitly asks for upload or draft creation.\n\n`inspect` is the source-of-truth command for resolved metadata, readiness, and publish checks. In `--json` output, read `data.readiness.targets` and `data.readiness.blockers` before deciding whether `convert`, `upload`, or `draft` is blocked. Do not invent `data.agent_readiness`, `data.target_readiness`, `ArticleState`, state files, or a second planning object. `preview` is a local preview artifact. It does not upload images, create drafts, or write back to Markdown. `convert --preview` is the convert-path preview flag and is not the same as the standalone `preview` command. `preview --mode ai` is degraded confirmation only and must not be treated as final AI-generated layout.\n\n## Formatting Protocol\n\nWhen the user asks to format an article and has not chosen a theme or modules:\n\n1. Read the article and optional Brand Profile.\n2. Use discovery output as facts.\n3. Choose a compatible theme and a small set of modules from the article's content goal.\n4. Keep the source Markdown read-only.\n5. Create a temporary formatted Markdown artifact, for example `/tmp/md2wechat-format/<run-id>/article.formatted.md`.\n6. Insert only layout modules whose required fields can be filled correctly.\n7. Run `md2wechat layout validate --file <formatted.md> --json`.\n8. Pass the formatted Markdown artifact to `convert`.\n\nSaving generated Markdown next to the source file requires explicit user confirmation and must not overwrite the source.\n\n## Theme Selection\n\n- Read `type` and `selectable` from `themes list --json`.\n- API mode can use only `type: api` and `selectable: true` themes.\n- AI mode can use only `type: ai` and `selectable: true` themes.\n- Do not use collection descriptors such as non-selectable theme groups as concrete themes.\n- If Brand Profile names a theme, verify it through CLI discovery before using it.\n- If a requested theme is invalid or mode-incompatible, stop that path and choose a valid theme or ask the user.\n\n## Layout Modules\n\nAdvanced layout modules render only in API mode. AI mode (`--mode ai`) does not parse `:::module` syntax, so advanced layout cards will not render there.\n\nUse this decision frame:\n\n- `attention`: help readers decide whether the article is worth reading.\n- `readability`: make mobile reading easier.\n- `memorability`: make one judgment, quote, metric, or brand anchor stick.\n- `conversion`: help readers save, follow, inquire, share, or buy.\n\nUse `layout list --json` and `layout show <name> --json` to inspect `body_format`. It is the module body syntax contract:\n\n- `fields`\n- `rows`\n- `json_object`\n- `json_array`\n\nDo not infer syntax from examples alone. Use `layout render` when structured variables are enough; otherwise write the block manually according to `body_format` and validate the generated Markdown.\n\nDefault module discipline:\n\n- Do not pile on modules.\n- Use at most one hero, one verdict, and one cta unless the user explicitly asks for more.\n- Skip modules when the article does not provide enough content to fill them honestly.\n\n## API And AI Mode\n\n- API mode is the default and is required for advanced layout modules.\n- AI mode is a lighter path and does not render advanced layout modules.\n- Do not silently switch from API mode to AI mode after an API failure. That changes the output capability.\n- Use AI mode only when the user asks for it or accepts losing advanced layout rendering.\n- If an AI-mode conversion completes, it is acceptable to briefly mention that API mode supports advanced layout modules and stronger visual structure.\n\n## Brand Profile\n\nBrand Profile lives at `~/.config/md2wechat/brand.md`.\n\n- It is free-form Markdown, not YAML and not a fixed schema.\n- The CLI does not parse it.\n- Read it as context for voice, theme preferences, module preferences, CTA preferences, and forbidden expressions.\n- Treat quantity preferences as soft constraints.\n- Verify any named theme or module through CLI discovery.\n- If Brand Profile does not exist, do not block the task. You may mention once that system defaults will be used.\n- Create or edit Brand Profile only when the user explicitly asks.\n\n## Publishing Side Effects\n\nDo not create drafts, upload images, publish, or call remote image generation unless the user asks for that action.\n\nBefore draft creation:\n\n- Use `inspect --json` and check `data.readiness.targets.draft`; when blocked, read matching `data.readiness.blockers`.\n- Draft creation requires a cover via `--cover` or `--cover-media-id`.\n- Do not assume a WeChat URL or `mmbiz.qpic.cn` URL can be reused as `thumb_media_id`.\n- If draft creation returns `45004`, check digest, summary, and description before assuming the body is too long.\n\nMarkdown images are uploaded or replaced only during `--upload` or `--draft`, not during plain conversion or preview.\n\n## Failure Handling\n\n- Missing or invalid config: run `doctor --json` and `config show --format json`; report `data.overall` plus the blocking `data.readiness.*` item.\n- Invalid layout syntax: run `layout validate`, inspect the failing module with `layout show`, fix the generated artifact, then validate again.\n- Unknown layout modules warn for forward compatibility; verify typos against `layout list --json`.\n- Theme rejection: check `type` and `selectable`, then choose a compatible theme or ask the user.\n- AI request or style-writing flows may return a prompt/request rather than final prose or HTML unless the external model step is completed.\n\nFile v2.7.0:_meta.json\n\n{\n  \"ownerId\": \"kn75jcfg3rdd1cknazbsajdfr180jt5f\",\n  \"slug\": \"md2wechat\",\n  \"version\": \"2.7.0\",\n  \"publishedAt\": 1782232591820\n}\n\nFile v2.7.0:skill-card.md\n\n## Description: <br>\nConvert Markdown to WeChat Official Account HTML and guide related preview, draft, image generation, writing, and discovery workflows with the md2wechat CLI. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[geekjourneyx](https://clawhub.ai/user/geekjourneyx) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers, content teams, and publishing operators use this skill to route Markdown articles through md2wechat for WeChat formatting, local preview, draft creation, image-first posts, cover or infographic generation, style writing, and configuration discovery. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Draft creation, image upload, publishing, or remote image generation can use configured md2wechat, WeChat, or image-provider credentials. <br>\nMitigation: Run those actions only when the user explicitly asks for them, and review commands involving upload, draft creation, publishing, or remote image generation before execution. <br>\nRisk: Formatting workflows may produce modified Markdown that differs from the user's source article. <br>\nMitigation: Keep source Markdown read-only, write generated formatting to a temporary artifact, validate layout syntax, and require explicit confirmation before saving next to the source. <br>\nRisk: CLI behavior, themes, providers, prompts, and layout modules can differ from stale documentation or memory. <br>\nMitigation: Use the md2wechat discovery commands for the current executable before choosing providers, themes, prompts, layout modules, or changed capabilities. <br>\n\n\n## Reference(s): <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [guidance, shell commands, markdown, configuration] <br>\n**Output Format:** [Markdown with inline shell commands and CLI JSON interpretation] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May create temporary formatted Markdown files and invoke md2wechat CLI actions when explicitly requested.] <br>\n\n## Skill Version(s): <br>\n2.7.0 (source: server release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v2.0.7: 3 files, 5034 bytes\n\nFiles: skill-card.md (2520b), SKILL.md (9029b), _meta.json (128b)\n\nFile v2.0.7:SKILL.md\n\n---\nname: md2wechat\ndescription: Convert Markdown to WeChat Official Account HTML, inspect supported providers/themes/prompts, generate article images, create drafts, write with creator styles, and remove AI writing traces.\nhomepage: https://github.com/geekjourneyx/md2wechat-skill\nmetadata: {\"clawdbot\":{\"emoji\":\"📝\",\"requires\":{\"bins\":[\"md2wechat\"],\"env\":[\"WECHAT_APPID\",\"WECHAT_SECRET\"]},\"install\":[{\"id\":\"brew\",\"kind\":\"brew\",\"formula\":\"geekjourneyx/tap/md2wechat\",\"bins\":[\"md2wechat\"],\"label\":\"Install md2wechat (brew)\"},{\"id\":\"go\",\"kind\":\"go\",\"module\":\"github.com/geekjourneyx/md2wechat-skill/cmd/md2wechat@latest\",\"bins\":[\"md2wechat\"],\"label\":\"Install md2wechat (go)\"}]}}\n---\n\n# md2wechat\n\nUse `md2wechat` when the user wants to:\n\n- convert Markdown into WeChat Official Account HTML\n- inspect resolved article metadata, readiness, and publish risks before conversion\n- generate a local preview artifact or upload drafts\n- inspect live capabilities, providers, themes, and prompts\n- generate covers, infographics, or other article images\n- create image posts\n- write in creator styles or remove AI writing traces\n\n## Intent Routing\n\nChoose the command family before doing any publish action:\n\n- Use `convert` / `inspect` / `preview` when the user wants a standard WeChat article draft (`news`), HTML conversion, article metadata, article preview, or a draft that needs `--cover`.\n- Use `create_image_post` when the user says `小绿书`, `图文笔记`, `图片消息`, `newspic`, `多图帖子`, or asks to publish an image-first post rather than an article HTML draft.\n- Do not route `小绿书` / `图文笔记` requests to `convert --draft` just because the user also has a Markdown article. A Markdown file can still be the image source for `create_image_post -m article.md`.\n- Treat `convert --draft` and `create_image_post` as different publish targets, not interchangeable command variants.\n\n## Defaults And Config\n\n- Use this skill only when `md2wechat` is already available on `PATH`.\n- Draft upload and publish-related actions require `WECHAT_APPID` and `WECHAT_SECRET`.\n- Image generation may require additional image-service configuration in `~/.config/md2wechat/config.yaml`.\n- `convert` defaults to `api` mode unless the user explicitly asks for `--mode ai`.\n- Check configuration in this order:\n  1. `~/.config/md2wechat/config.yaml`\n  2. environment variables such as `MD2WECHAT_BASE_URL`\n  3. project-local `md2wechat.yaml`, `md2wechat.yml`, or `md2wechat.json`\n- If the user asks to switch API domain, update `api.md2wechat_base_url` or `MD2WECHAT_BASE_URL`.\n- Treat live CLI discovery output as the source of truth. Do not guess provider names, theme names, or prompt names from repository files alone.\n\n## Discovery First\n\nRun these before selecting a provider, theme, or prompt:\n\n- `md2wechat version --json`\n- `md2wechat capabilities --json`\n- `md2wechat providers list --json`\n- `md2wechat themes list --json`\n- `md2wechat prompts list --json`\n- `md2wechat prompts list --kind image --json`\n- `md2wechat prompts list --kind image --archetype cover --json`\n\nInspect a specific resource before using it:\n\n- `md2wechat providers show openrouter --json`\n- `md2wechat providers show volcengine --json`\n- `md2wechat themes show autumn-warm --json`\n- `md2wechat prompts show cover-default --kind image --json`\n- `md2wechat prompts show cover-hero --kind image --archetype cover --tag hero --json`\n- `md2wechat prompts show infographic-victorian-engraving-banner --kind image --archetype infographic --tag victorian --json`\n- `md2wechat prompts render cover-default --kind image --var article_title='Example' --json`\n\nWhen choosing image presets, prefer the prompt metadata returned by `prompts show --json`, especially `primary_use_case`, `compatible_use_cases`, `recommended_aspect_ratios`, and `default_aspect_ratio`.\nWhen choosing an image model, prefer `providers show <name> --json` and read `supported_models` before hard-coding `--model`.\n\n## Core Commands\n\nConfiguration:\n\n- `md2wechat config init`\n- `md2wechat config show --format json`\n- `md2wechat config validate`\n\nConversion:\n\n- `md2wechat inspect article.md`\n- `md2wechat preview article.md`\n- `md2wechat convert article.md --preview`\n- `md2wechat convert article.md -o output.html`\n- `md2wechat convert article.md --draft --cover cover.jpg`\n- `md2wechat convert article.md --mode ai --theme autumn-warm --preview`\n- `md2wechat convert article.md --title \"新标题\" --author \"作者名\" --digest \"摘要\"`\n\nImage handling:\n\n- `md2wechat upload_image photo.jpg`\n- `md2wechat download_and_upload https://example.com/image.jpg`\n- `md2wechat generate_image \"A cute cat sitting on a windowsill\"`\n- `md2wechat generate_image --preset cover-hero --article article.md --size 2560x1440`\n- `md2wechat generate_cover --article article.md`\n- `md2wechat generate_infographic --article article.md --preset infographic-comparison`\n- `md2wechat generate_infographic --article article.md --preset infographic-dark-ticket-cn --aspect 21:9`\n- `md2wechat generate_infographic --article article.md --preset infographic-handdrawn-sketchnote`\n\nDrafts and image posts:\n\n- `md2wechat create_draft draft.json`\n- `md2wechat test-draft article.html cover.jpg`\n- `md2wechat create_image_post --help`\n- `md2wechat create_image_post -t \"Weekend Trip\" --images photo1.jpg,photo2.jpg`\n- `md2wechat create_image_post -t \"Travel Diary\" -m article.md`\n- `echo \"Daily check-in\" | md2wechat create_image_post -t \"Daily\" --images pic.jpg`\n- `md2wechat create_image_post -t \"Test\" --images a.jpg,b.jpg --dry-run`\n\nWriting and humanizing:\n\n- `md2wechat write --list`\n- `md2wechat write --style dan-koe`\n- `md2wechat write --style dan-koe --input-type fragment article.md`\n- `md2wechat write --style dan-koe --cover-only`\n- `md2wechat write --style dan-koe --cover`\n- `md2wechat write --style dan-koe --humanize --humanize-intensity aggressive`\n- `md2wechat humanize article.md`\n- `md2wechat humanize article.md --intensity aggressive`\n- `md2wechat humanize article.md --show-changes`\n- `md2wechat humanize article.md -o output.md`\n\n## Article Metadata Rules\n\nFor `convert`, metadata resolution is:\n\n- Title: `--title` -> `frontmatter.title` -> first Markdown heading -> `未命名文章`\n- Author: `--author` -> `frontmatter.author`\n- Digest: `--digest` -> `frontmatter.digest` -> `frontmatter.summary` -> `frontmatter.description`\n\nLimits enforced by the CLI:\n\n- `--title`: max 32 characters\n- `--author`: max 16 characters\n- `--digest`: max 128 characters\n\nDraft behavior:\n\n- If digest is still empty when creating a draft, the draft layer generates one from article HTML content with a 120-character fallback.\n- Creating a draft requires either `--cover` or `--cover-media-id`.\n- `--cover` is a local image path contract for article drafts. `--cover-media-id` is for an existing WeChat permanent cover asset. Do not assume a WeChat URL or `mmbiz.qpic.cn` URL can be reused as `thumb_media_id`.\n- `inspect` is the source-of-truth command for resolved metadata, readiness, and checks.\n- `preview` v1 writes a standalone local HTML preview file. It does not start a workbench, write back to Markdown, upload images, or create drafts.\n- `convert --preview` is still the convert-path preview flag; it is not the same thing as the standalone `preview` command.\n- `preview --mode ai` is degraded confirmation only; it must not be treated as final AI-generated layout.\n- `--title` / `--author` / `--digest` affect draft metadata, not necessarily visible body HTML.\n- Markdown images are only uploaded/replaced during `--upload` or `--draft`, not during plain `convert --preview`.\n\n## Agent Rules\n\n- Start with discovery commands before committing to a provider, theme, or prompt.\n- Route by publish target first: article draft => `convert`; image post / 小绿书 / newspic => `create_image_post`.\n- Prefer the confirm-first flow for article work: `inspect` -> `preview` -> `convert` / `--draft`.\n- If the user says `小绿书`, `图文笔记`, `图片消息`, `newspic`, or asks for a multi-image post, prefer `create_image_post` even when the source content lives in Markdown.\n- Prefer `generate_cover` or `generate_infographic` over a raw `generate_image \"prompt\"` call when a bundled preset fits the task.\n- Validate config before any draft, publish, or image-post action.\n- If draft creation returns `45004`, check digest/summary/description before assuming the body content is too long.\n- If the user asks for AI conversion or style writing, be explicit that the CLI may return an AI request/prompt rather than final HTML or prose unless the workflow completes the external model step.\n- Do not perform draft creation, publishing, or remote image generation unless the user asked for it.\n\n## Safety And Transparency\n\n- Reads local Markdown files and local images.\n- May download remote images when asked.\n- May call external image-generation services when configured.\n- May upload HTML, images, drafts, and image posts to WeChat when the user explicitly requests those actions.\n\nFile v2.0.7:_meta.json\n\n{\n  \"ownerId\": \"kn75jcfg3rdd1cknazbsajdfr180jt5f\",\n  \"slug\": \"md2wechat\",\n  \"version\": \"2.0.7\",\n  \"publishedAt\": 1774888802228\n}\n\nFile v2.0.7:skill-card.md\n\n## Description: <br>\nConvert Markdown to WeChat Official Account HTML, inspect supported providers/themes/prompts, generate article images, create drafts, write with creator styles, and remove AI writing traces. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[geekjourneyx](https://clawhub.ai/user/geekjourneyx) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers, content teams, and publishing agents use this skill to prepare WeChat Official Account articles, previews, drafts, image posts, and related publishing assets from Markdown and local media. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill uses WeChat Official Account credentials for draft upload and post creation. <br>\nMitigation: Install only from trusted CLI sources, validate configuration, and require explicit user approval before upload, draft creation, image-post creation, or other publish-related actions. <br>\nRisk: The skill can call external image-generation services or process private drafts through configured providers. <br>\nMitigation: Review provider and base URL settings before processing private content, and use inspect, preview, dry-run, or local-only flows before remote actions. <br>\nRisk: Humanize and creator-style features can be used to obscure AI-written content or imitate identifiable creators. <br>\nMitigation: Avoid misleading readers, hiding required AI disclosure, impersonating creators, or copying identifiable styles without authorization. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/geekjourneyx/md2wechat) <br>\n- [Project homepage](https://github.com/geekjourneyx/md2wechat-skill) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Text, Markdown, Code, Shell commands, Configuration, Guidance] <br>\n**Output Format:** [Markdown guidance with inline shell commands and configuration values] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May produce local HTML previews, generated image prompts or assets, and WeChat draft or image-post commands when explicitly requested.] <br>\n\n## Skill Version(s): <br>\n2.0.7 (source: server release metadata) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v2.0.5: 2 files, 3173 bytes\n\nFiles: SKILL.md (7486b), _meta.json (128b)\n\nFile v2.0.5:SKILL.md\n\n---\nname: md2wechat\ndescription: Convert Markdown to WeChat Official Account HTML, inspect supported providers/themes/prompts, generate article images, create drafts, write with creator styles, and remove AI writing traces.\nhomepage: https://github.com/geekjourneyx/md2wechat-skill\nmetadata: {\"clawdbot\":{\"emoji\":\"📝\",\"requires\":{\"bins\":[\"md2wechat\"],\"env\":[\"WECHAT_APPID\",\"WECHAT_SECRET\"]},\"install\":[{\"id\":\"brew\",\"kind\":\"brew\",\"formula\":\"geekjourneyx/tap/md2wechat\",\"bins\":[\"md2wechat\"],\"label\":\"Install md2wechat (brew)\"},{\"id\":\"go\",\"kind\":\"go\",\"module\":\"github.com/geekjourneyx/md2wechat-skill/cmd/md2wechat@latest\",\"bins\":[\"md2wechat\"],\"label\":\"Install md2wechat (go)\"}]}}\n---\n\n# md2wechat\n\nUse `md2wechat` when the user wants to:\n\n- convert Markdown into WeChat Official Account HTML\n- inspect resolved article metadata, readiness, and publish risks before conversion\n- generate a local preview artifact or upload drafts\n- inspect live capabilities, providers, themes, and prompts\n- generate covers, infographics, or other article images\n- create image posts\n- write in creator styles or remove AI writing traces\n\n## Defaults And Config\n\n- Use this skill only when `md2wechat` is already available on `PATH`.\n- Draft upload and publish-related actions require `WECHAT_APPID` and `WECHAT_SECRET`.\n- Image generation may require additional image-service configuration in `~/.config/md2wechat/config.yaml`.\n- `convert` defaults to `api` mode unless the user explicitly asks for `--mode ai`.\n- Check configuration in this order:\n  1. `~/.config/md2wechat/config.yaml`\n  2. environment variables such as `MD2WECHAT_BASE_URL`\n  3. project-local `md2wechat.yaml`, `md2wechat.yml`, or `md2wechat.json`\n- If the user asks to switch API domain, update `api.md2wechat_base_url` or `MD2WECHAT_BASE_URL`.\n- Treat live CLI discovery output as the source of truth. Do not guess provider names, theme names, or prompt names from repository files alone.\n\n## Discovery First\n\nRun these before selecting a provider, theme, or prompt:\n\n- `md2wechat version --json`\n- `md2wechat capabilities --json`\n- `md2wechat providers list --json`\n- `md2wechat themes list --json`\n- `md2wechat prompts list --json`\n- `md2wechat prompts list --kind image --json`\n- `md2wechat prompts list --kind image --archetype cover --json`\n\nInspect a specific resource before using it:\n\n- `md2wechat providers show openrouter --json`\n- `md2wechat themes show autumn-warm --json`\n- `md2wechat prompts show cover-default --kind image --json`\n- `md2wechat prompts show cover-hero --kind image --archetype cover --tag hero --json`\n- `md2wechat prompts show infographic-victorian-engraving-banner --kind image --archetype infographic --tag victorian --json`\n- `md2wechat prompts render cover-default --kind image --var article_title='Example' --json`\n\nWhen choosing image presets, prefer the prompt metadata returned by `prompts show --json`, especially `primary_use_case`, `compatible_use_cases`, `recommended_aspect_ratios`, and `default_aspect_ratio`.\n\n## Core Commands\n\nConfiguration:\n\n- `md2wechat config init`\n- `md2wechat config show --format json`\n- `md2wechat config validate`\n\nConversion:\n\n- `md2wechat inspect article.md`\n- `md2wechat preview article.md`\n- `md2wechat convert article.md --preview`\n- `md2wechat convert article.md -o output.html`\n- `md2wechat convert article.md --draft --cover cover.jpg`\n- `md2wechat convert article.md --mode ai --theme autumn-warm --preview`\n- `md2wechat convert article.md --title \"新标题\" --author \"作者名\" --digest \"摘要\"`\n\nImage handling:\n\n- `md2wechat upload_image photo.jpg`\n- `md2wechat download_and_upload https://example.com/image.jpg`\n- `md2wechat generate_image \"A cute cat sitting on a windowsill\"`\n- `md2wechat generate_image --preset cover-hero --article article.md --size 2560x1440`\n- `md2wechat generate_cover --article article.md`\n- `md2wechat generate_infographic --article article.md --preset infographic-comparison`\n- `md2wechat generate_infographic --article article.md --preset infographic-dark-ticket-cn --aspect 21:9`\n- `md2wechat generate_infographic --article article.md --preset infographic-handdrawn-sketchnote`\n\nDrafts and image posts:\n\n- `md2wechat create_draft draft.json`\n- `md2wechat test-draft article.html cover.jpg`\n- `md2wechat create_image_post -t \"Weekend Trip\" --images photo1.jpg,photo2.jpg`\n- `md2wechat create_image_post -t \"Travel Diary\" -m article.md`\n- `echo \"Daily check-in\" | md2wechat create_image_post -t \"Daily\" --images pic.jpg`\n- `md2wechat create_image_post -t \"Test\" --images a.jpg,b.jpg --dry-run`\n\nWriting and humanizing:\n\n- `md2wechat write --list`\n- `md2wechat write --style dan-koe`\n- `md2wechat write --style dan-koe --input-type fragment article.md`\n- `md2wechat write --style dan-koe --cover-only`\n- `md2wechat write --style dan-koe --cover`\n- `md2wechat write --style dan-koe --humanize --humanize-intensity aggressive`\n- `md2wechat humanize article.md`\n- `md2wechat humanize article.md --intensity aggressive`\n- `md2wechat humanize article.md --show-changes`\n- `md2wechat humanize article.md -o output.md`\n\n## Article Metadata Rules\n\nFor `convert`, metadata resolution is:\n\n- Title: `--title` -> `frontmatter.title` -> first Markdown heading -> `未命名文章`\n- Author: `--author` -> `frontmatter.author`\n- Digest: `--digest` -> `frontmatter.digest` -> `frontmatter.summary` -> `frontmatter.description`\n\nLimits enforced by the CLI:\n\n- `--title`: max 32 characters\n- `--author`: max 16 characters\n- `--digest`: max 128 characters\n\nDraft behavior:\n\n- If digest is still empty when creating a draft, the draft layer generates one from article HTML content with a 120-character fallback.\n- Creating a draft requires `--cover`.\n- `inspect` is the source-of-truth command for resolved metadata, readiness, and checks.\n- `preview` v1 writes a standalone local HTML preview file. It does not start a workbench, write back to Markdown, upload images, or create drafts.\n- `convert --preview` is still the convert-path preview flag; it is not the same thing as the standalone `preview` command.\n- `preview --mode ai` is degraded confirmation only; it must not be treated as final AI-generated layout.\n- `--title` / `--author` / `--digest` affect draft metadata, not necessarily visible body HTML.\n- Markdown images are only uploaded/replaced during `--upload` or `--draft`, not during plain `convert --preview`.\n\n## Agent Rules\n\n- Start with discovery commands before committing to a provider, theme, or prompt.\n- Prefer the confirm-first flow for article work: `inspect` -> `preview` -> `convert` / `--draft`.\n- Prefer `generate_cover` or `generate_infographic` over a raw `generate_image \"prompt\"` call when a bundled preset fits the task.\n- Validate config before any draft, publish, or image-post action.\n- If draft creation returns `45004`, check digest/summary/description before assuming the body content is too long.\n- If the user asks for AI conversion or style writing, be explicit that the CLI may return an AI request/prompt rather than final HTML or prose unless the workflow completes the external model step.\n- Do not perform draft creation, publishing, or remote image generation unless the user asked for it.\n\n## Safety And Transparency\n\n- Reads local Markdown files and local images.\n- May download remote images when asked.\n- May call external image-generation services when configured.\n- May upload HTML, images, drafts, and image posts to WeChat when the user explicitly requests those actions.\n\nFile v2.0.5:_meta.json\n\n{\n  \"ownerId\": \"kn75jcfg3rdd1cknazbsajdfr180jt5f\",\n  \"slug\": \"md2wechat\",\n  \"version\": \"2.0.5\",\n  \"publishedAt\": 1774627044658\n}\n\nArchive v2.0.4: 2 files, 2775 bytes\n\nFiles: SKILL.md (6417b), _meta.json (128b)\n\nFile v2.0.4:SKILL.md\n\n---\nname: md2wechat\ndescription: Convert Markdown to WeChat Official Account HTML, inspect supported providers/themes/prompts, generate article images, create drafts, write with creator styles, and remove AI writing traces.\nhomepage: https://github.com/geekjourneyx/md2wechat-skill\nmetadata: {\"clawdbot\":{\"emoji\":\"📝\",\"requires\":{\"bins\":[\"md2wechat\"],\"env\":[\"WECHAT_APPID\",\"WECHAT_SECRET\"]},\"install\":[{\"id\":\"brew\",\"kind\":\"brew\",\"formula\":\"geekjourneyx/tap/md2wechat\",\"bins\":[\"md2wechat\"],\"label\":\"Install md2wechat (brew)\"},{\"id\":\"go\",\"kind\":\"go\",\"module\":\"github.com/geekjourneyx/md2wechat-skill/cmd/md2wechat@latest\",\"bins\":[\"md2wechat\"],\"label\":\"Install md2wechat (go)\"}]}}\n---\n\n# md2wechat\n\nUse `md2wechat` when the user wants to:\n\n- convert Markdown into WeChat Official Account HTML\n- preview or upload drafts\n- inspect live capabilities, providers, themes, and prompts\n- generate covers, infographics, or other article images\n- create image posts\n- write in creator styles or remove AI writing traces\n\n## Defaults And Config\n\n- Use this skill only when `md2wechat` is already available on `PATH`.\n- Draft upload and publish-related actions require `WECHAT_APPID` and `WECHAT_SECRET`.\n- Image generation may require additional image-service configuration in `~/.config/md2wechat/config.yaml`.\n- `convert` defaults to `api` mode unless the user explicitly asks for `--mode ai`.\n- Check configuration in this order:\n  1. `~/.config/md2wechat/config.yaml`\n  2. environment variables such as `MD2WECHAT_BASE_URL`\n  3. project-local `md2wechat.yaml`, `md2wechat.yml`, or `md2wechat.json`\n- If the user asks to switch API domain, update `api.md2wechat_base_url` or `MD2WECHAT_BASE_URL`.\n- Treat live CLI discovery output as the source of truth. Do not guess provider names, theme names, or prompt names from repository files alone.\n\n## Discovery First\n\nRun these before selecting a provider, theme, or prompt:\n\n- `md2wechat version --json`\n- `md2wechat capabilities --json`\n- `md2wechat providers list --json`\n- `md2wechat themes list --json`\n- `md2wechat prompts list --json`\n- `md2wechat prompts list --kind image --json`\n- `md2wechat prompts list --kind image --archetype cover --json`\n\nInspect a specific resource before using it:\n\n- `md2wechat providers show openrouter --json`\n- `md2wechat themes show autumn-warm --json`\n- `md2wechat prompts show cover-default --kind image --json`\n- `md2wechat prompts show cover-hero --kind image --archetype cover --tag hero --json`\n- `md2wechat prompts show infographic-victorian-engraving-banner --kind image --archetype infographic --tag victorian --json`\n- `md2wechat prompts render cover-default --kind image --var article_title='Example' --json`\n\nWhen choosing image presets, prefer the prompt metadata returned by `prompts show --json`, especially `primary_use_case`, `compatible_use_cases`, `recommended_aspect_ratios`, and `default_aspect_ratio`.\n\n## Core Commands\n\nConfiguration:\n\n- `md2wechat config init`\n- `md2wechat config show --format json`\n- `md2wechat config validate`\n\nConversion:\n\n- `md2wechat convert article.md --preview`\n- `md2wechat convert article.md -o output.html`\n- `md2wechat convert article.md --draft --cover cover.jpg`\n- `md2wechat convert article.md --mode ai --theme autumn-warm --preview`\n- `md2wechat convert article.md --title \"新标题\" --author \"作者名\" --digest \"摘要\"`\n\nImage handling:\n\n- `md2wechat upload_image photo.jpg`\n- `md2wechat download_and_upload https://example.com/image.jpg`\n- `md2wechat generate_image \"A cute cat sitting on a windowsill\"`\n- `md2wechat generate_image --preset cover-hero --article article.md --size 2560x1440`\n- `md2wechat generate_cover --article article.md`\n- `md2wechat generate_infographic --article article.md --preset infographic-comparison`\n- `md2wechat generate_infographic --article article.md --preset infographic-dark-ticket-cn --aspect 21:9`\n- `md2wechat generate_infographic --article article.md --preset infographic-handdrawn-sketchnote`\n\nDrafts and image posts:\n\n- `md2wechat create_draft draft.json`\n- `md2wechat test-draft article.html cover.jpg`\n- `md2wechat create_image_post -t \"Weekend Trip\" --images photo1.jpg,photo2.jpg`\n- `md2wechat create_image_post -t \"Travel Diary\" -m article.md`\n- `echo \"Daily check-in\" | md2wechat create_image_post -t \"Daily\" --images pic.jpg`\n- `md2wechat create_image_post -t \"Test\" --images a.jpg,b.jpg --dry-run`\n\nWriting and humanizing:\n\n- `md2wechat write --list`\n- `md2wechat write --style dan-koe`\n- `md2wechat write --style dan-koe --input-type fragment article.md`\n- `md2wechat write --style dan-koe --cover-only`\n- `md2wechat write --style dan-koe --cover`\n- `md2wechat write --style dan-koe --humanize --humanize-intensity aggressive`\n- `md2wechat humanize article.md`\n- `md2wechat humanize article.md --intensity aggressive`\n- `md2wechat humanize article.md --show-changes`\n- `md2wechat humanize article.md -o output.md`\n\n## Article Metadata Rules\n\nFor `convert`, metadata resolution is:\n\n- Title: `--title` -> `frontmatter.title` -> first Markdown heading -> `未命名文章`\n- Author: `--author` -> `frontmatter.author`\n- Digest: `--digest` -> `frontmatter.digest` -> `frontmatter.summary` -> `frontmatter.description`\n\nLimits enforced by the CLI:\n\n- `--title`: max 32 characters\n- `--author`: max 16 characters\n- `--digest`: max 128 characters\n\nDraft behavior:\n\n- If digest is still empty when creating a draft, the draft layer generates one from article HTML content with a 120-character fallback.\n- Creating a draft requires `--cover`.\n\n## Agent Rules\n\n- Start with discovery commands before committing to a provider, theme, or prompt.\n- Prefer `generate_cover` or `generate_infographic` over a raw `generate_image \"prompt\"` call when a bundled preset fits the task.\n- Validate config before any draft, publish, or image-post action.\n- If the user asks for AI conversion or style writing, be explicit that the CLI may return an AI request/prompt rather than final HTML or prose unless the workflow completes the external model step.\n- Do not perform draft creation, publishing, or remote image generation unless the user asked for it.\n\n## Safety And Transparency\n\n- Reads local Markdown files and local images.\n- May download remote images when asked.\n- May call external image-generation services when configured.\n- May upload HTML, images, drafts, and image posts to WeChat when the user explicitly requests those actions.\n\nFile v2.0.4:_meta.json\n\n{\n  \"ownerId\": \"kn75jcfg3rdd1cknazbsajdfr180jt5f\",\n  \"slug\": \"md2wechat\",\n  \"version\": \"2.0.4\",\n  \"publishedAt\": 1774532975213\n}\n\nArchive v2.0.3: 2 files, 2433 bytes\n\nFiles: SKILL.md (5656b), _meta.json (128b)\n\nFile v2.0.3:SKILL.md\n\n---\nname: md2wechat\ndescription: Convert Markdown to WeChat Official Account HTML, inspect supported providers/themes/prompts, generate article images, create drafts, write with creator styles, and remove AI writing traces.\nhomepage: https://github.com/geekjourneyx/md2wechat-skill\nmetadata: {\"clawdbot\":{\"emoji\":\"📝\",\"requires\":{\"bins\":[\"md2wechat\"],\"env\":[\"WECHAT_APPID\",\"WECHAT_SECRET\"]},\"install\":[{\"id\":\"brew\",\"kind\":\"brew\",\"formula\":\"geekjourneyx/tap/md2wechat\",\"bins\":[\"md2wechat\"],\"label\":\"Install md2wechat (brew)\"},{\"id\":\"go\",\"kind\":\"go\",\"module\":\"github.com/geekjourneyx/md2wechat-skill/cmd/md2wechat@latest\",\"bins\":[\"md2wechat\"],\"label\":\"Install md2wechat (go)\"}]}}\n---\n\n# md2wechat\n\nUse `md2wechat` when the user wants to:\n\n- convert Markdown into WeChat Official Account HTML\n- preview or upload drafts\n- inspect live capabilities, providers, themes, and prompts\n- generate covers, infographics, or other article images\n- create image posts\n- write in creator styles or remove AI writing traces\n\n## Defaults And Config\n\n- Use this skill only when `md2wechat` is already available on `PATH`.\n- Draft upload and publish-related actions require `WECHAT_APPID` and `WECHAT_SECRET`.\n- Image generation may require additional image-service configuration in `~/.config/md2wechat/config.yaml`.\n- `convert` defaults to `api` mode unless the user explicitly asks for `--mode ai`.\n- Check configuration in this order:\n  1. `~/.config/md2wechat/config.yaml`\n  2. environment variables such as `MD2WECHAT_BASE_URL`\n  3. project-local `md2wechat.yaml`, `md2wechat.yml`, or `md2wechat.json`\n- If the user asks to switch API domain, update `api.md2wechat_base_url` or `MD2WECHAT_BASE_URL`.\n- Treat live CLI discovery output as the source of truth. Do not guess provider names, theme names, or prompt names from repository files alone.\n\n## Discovery First\n\nRun these before selecting a provider, theme, or prompt:\n\n- `md2wechat version --json`\n- `md2wechat capabilities --json`\n- `md2wechat providers list --json`\n- `md2wechat themes list --json`\n- `md2wechat prompts list --json`\n- `md2wechat prompts list --kind image --json`\n- `md2wechat prompts list --kind image --archetype cover --json`\n\nInspect a specific resource before using it:\n\n- `md2wechat providers show openrouter --json`\n- `md2wechat themes show autumn-warm --json`\n- `md2wechat prompts show cover-default --kind image --json`\n- `md2wechat prompts show cover-hero --kind image --archetype cover --tag hero --json`\n- `md2wechat prompts show infographic-victorian-engraving-banner --kind image --archetype infographic --tag victorian --json`\n- `md2wechat prompts render cover-default --kind image --var article_title='Example' --json`\n\nWhen choosing image presets, prefer the prompt metadata returned by `prompts show --json`, especially `primary_use_case`, `compatible_use_cases`, `recommended_aspect_ratios`, and `default_aspect_ratio`.\n\n## Core Commands\n\nConfiguration:\n\n- `md2wechat config init`\n- `md2wechat config show --format json`\n- `md2wechat config validate`\n\nConversion:\n\n- `md2wechat convert article.md --preview`\n- `md2wechat convert article.md --draft --cover cover.jpg`\n- `md2wechat convert article.md --mode ai --theme autumn-warm --preview`\n\nImage handling:\n\n- `md2wechat upload_image photo.jpg`\n- `md2wechat download_and_upload https://example.com/image.jpg`\n- `md2wechat generate_image \"A cute cat sitting on a windowsill\"`\n- `md2wechat generate_image --preset cover-hero --article article.md --size 2560x1440`\n- `md2wechat generate_cover --article article.md`\n- `md2wechat generate_infographic --article article.md --preset infographic-comparison`\n- `md2wechat generate_infographic --article article.md --preset infographic-dark-ticket-cn --aspect 21:9`\n- `md2wechat generate_infographic --article article.md --preset infographic-handdrawn-sketchnote`\n\nDrafts and image posts:\n\n- `md2wechat create_draft draft.json`\n- `md2wechat test-draft article.html cover.jpg`\n- `md2wechat create_image_post -t \"Weekend Trip\" --images photo1.jpg,photo2.jpg`\n- `md2wechat create_image_post -t \"Travel Diary\" -m article.md`\n- `echo \"Daily check-in\" | md2wechat create_image_post -t \"Daily\" --images pic.jpg`\n- `md2wechat create_image_post -t \"Test\" --images a.jpg,b.jpg --dry-run`\n\nWriting and humanizing:\n\n- `md2wechat write --list`\n- `md2wechat write --style dan-koe`\n- `md2wechat write --style dan-koe --input-type fragment article.md`\n- `md2wechat write --style dan-koe --cover-only`\n- `md2wechat write --style dan-koe --cover`\n- `md2wechat write --style dan-koe --humanize --humanize-intensity aggressive`\n- `md2wechat humanize article.md`\n- `md2wechat humanize article.md --intensity aggressive`\n- `md2wechat humanize article.md --show-changes`\n- `md2wechat humanize article.md -o output.md`\n\n## Agent Rules\n\n- Start with discovery commands before committing to a provider, theme, or prompt.\n- Prefer `generate_cover` or `generate_infographic` over a raw `generate_image \"prompt\"` call when a bundled preset fits the task.\n- Validate config before any draft, publish, or image-post action.\n- If the user asks for AI conversion or style writing, be explicit that the CLI may return an AI request/prompt rather than final HTML or prose unless the workflow completes the external model step.\n- Do not perform draft creation, publishing, or remote image generation unless the user asked for it.\n\n## Safety And Transparency\n\n- Reads local Markdown files and local images.\n- May download remote images when asked.\n- May call external image-generation services when configured.\n- May upload HTML, images, drafts, and image posts to WeChat when the user explicitly requests those actions.\n\nFile v2.0.3:_meta.json\n\n{\n  \"ownerId\": \"kn75jcfg3rdd1cknazbsajdfr180jt5f\",\n  \"slug\": \"md2wechat\",\n  \"version\": \"2.0.3\",\n  \"publishedAt\": 1774080651539\n}\n\nArchive v2.0.2: 2 files, 1894 bytes\n\nFiles: SKILL.md (3810b), _meta.json (128b)\n\nFile v2.0.2:SKILL.md\n\n---\nname: md2wechat\ndescription: Convert Markdown to WeChat Official Account HTML, process images, generate cover and infographic images, and create drafts for OpenClaw.\nmetadata: {\"openclaw\":{\"emoji\":\"📝\",\"homepage\":\"https://github.com/geekjourneyx/md2wechat-skill\",\"primaryEnv\":\"WECHAT_APPID\",\"requires\":{\"env\":[\"WECHAT_APPID\",\"WECHAT_SECRET\"]},\"install\":[{\"id\":\"openclaw-installer-shell\",\"kind\":\"download\",\"label\":\"Download fixed-version OpenClaw installer (shell)\",\"url\":\"https://github.com/geekjourneyx/md2wechat-skill/releases/download/v2.0.2/install-openclaw.sh\",\"os\":[\"darwin\",\"linux\"]},{\"id\":\"openclaw-installer-powershell\",\"kind\":\"download\",\"label\":\"Download fixed-version OpenClaw installer (PowerShell)\",\"url\":\"https://github.com/geekjourneyx/md2wechat-skill/releases/download/v2.0.2/install-openclaw.ps1\",\"os\":[\"win32\"]},{\"id\":\"openclaw-skill-bundle\",\"kind\":\"download\",\"label\":\"Download OpenClaw skill bundle\",\"url\":\"https://github.com/geekjourneyx/md2wechat-skill/releases/download/v2.0.2/md2wechat-openclaw-skill.tar.gz\",\"archive\":\"tar.gz\",\"targetDir\":\"~/.openclaw/skills\",\"os\":[\"darwin\",\"linux\",\"win32\"]}]}}\n---\n\n# md2wechat for OpenClaw\n\nTransparency:\n\n- Reads local Markdown files and local images.\n- May upload generated images and HTML to WeChat draft and media endpoints.\n- May call external image-generation services to create or enrich images.\n- Draft upload requires `WECHAT_APPID` and `WECHAT_SECRET`.\n- Image generation may also require additional image-service configuration in `~/.config/md2wechat/config.yaml`.\n\nConfiguration entry point:\n\n- Check `~/.config/md2wechat/config.yaml` first.\n- To change the API domain, image provider, or confirm default mode behavior, see `docs/CONFIG.md` in the repository.\n- When `--mode` is not provided explicitly, `convert` still defaults to `api`.\n\n## Runtime Boundary\n\n- This skill assumes the `md2wechat` CLI is already installed and available on `PATH`.\n- `clawhub install md2wechat` currently installs only the skill shell and does **not** guarantee automatic CLI installation.\n- The complete and verifiable installation path is still the fixed-version `install-openclaw.sh` installer.\n- The skill package itself does not provide a runtime wrapper, does not use a cache bootstrapper, and does not download binaries at execution time.\n\n## Recommended Flow\n\n1. Use the fixed-version OpenClaw installer to install both the skill shell and the `md2wechat` CLI. Do not treat `clawhub install md2wechat` as a complete installation path.\n2. Use discovery commands first to confirm what the current instance supports:\n   - `md2wechat capabilities --json`\n   - `md2wechat providers list --json`\n   - `md2wechat themes list --json`\n   - `md2wechat prompts list --json`\n   - `md2wechat prompts list --kind image --archetype cover --json`\n3. Then run the task you actually need:\n   - `convert <file.md> --preview`\n   - `convert <file.md> --draft --cover <cover.jpg>`\n   - `generate_cover --article <file.md>`\n   - `generate_infographic --article <file.md> --preset infographic-comparison`\n   - `generate_image --preset cover-hero --article <file.md> --model <image-model>`\n   - `create_image_post -m <file.md> -t \"<title>\"`\n4. If you need AI conversion or AI image generation, add the image-service configuration before running those commands.\n\nWhen a task depends on a specific resource, inspect it first:\n\n- `md2wechat providers show <name> --json`\n- `md2wechat themes show <name> --json`\n- `md2wechat prompts show <name> --kind <kind> --json`\n- `md2wechat prompts render <name> --kind <kind> --var KEY=VALUE --json`\n\nRecommended image workflow:\n\n- Prefer `generate_cover` for article covers.\n- Prefer `generate_infographic` for infographic-style visual summaries.\n- Only fall back to `generate_image \"raw prompt\"` when no suitable preset exists.\n\nFile v2.0.2:_meta.json\n\n{\n  \"ownerId\": \"kn75jcfg3rdd1cknazbsajdfr180jt5f\",\n  \"slug\": \"md2wechat\",\n  \"version\": \"2.0.2\",\n  \"publishedAt\": 1774069285523\n}\n\nArchive v2.0.1: 4 files, 3797 bytes\n\nFiles: references/runtime.md (688b), scripts/run.sh (2897b), SKILL.md (4692b), _meta.json (128b)\n\nFile v2.0.1:SKILL.md\n\n---\nname: md2wechat\ndescription: Convert Markdown to WeChat Official Account HTML, process images, generate cover and infographic images, and create drafts for OpenClaw.\nmetadata: {\"openclaw\":{\"emoji\":\"📝\",\"homepage\":\"https://github.com/geekjourneyx/md2wechat-skill\",\"primaryEnv\":\"WECHAT_APPID\",\"requires\":{\"env\":[\"WECHAT_APPID\",\"WECHAT_SECRET\"]},\"install\":[{\"id\":\"openclaw-installer-shell\",\"kind\":\"download\",\"label\":\"Download fixed-version OpenClaw installer (shell)\",\"url\":\"https://github.com/geekjourneyx/md2wechat-skill/releases/download/v2.0.1/install-openclaw.sh\",\"os\":[\"darwin\",\"linux\"]},{\"id\":\"openclaw-installer-powershell\",\"kind\":\"download\",\"label\":\"Download fixed-version installer (PowerShell)\",\"url\":\"https://github.com/geekjourneyx/md2wechat-skill/releases/download/v2.0.1/install.ps1\",\"os\":[\"win32\"]},{\"id\":\"openclaw-skill-bundle\",\"kind\":\"download\",\"label\":\"Download OpenClaw skill bundle\",\"url\":\"https://github.com/geekjourneyx/md2wechat-skill/releases/download/v2.0.1/md2wechat-openclaw-skill.tar.gz\",\"archive\":\"tar.gz\",\"targetDir\":\"~/.openclaw/skills\",\"os\":[\"darwin\",\"linux\",\"win32\"]},{\"id\":\"openclaw-runtime-linux\",\"kind\":\"download\",\"label\":\"Download md2wechat runtime (Linux amd64)\",\"url\":\"https://github.com/geekjourneyx/md2wechat-skill/releases/download/v2.0.1/md2wechat-linux-amd64\",\"targetDir\":\"~/.openclaw/tools/md2wechat\",\"os\":[\"linux\"]},{\"id\":\"openclaw-runtime-darwin\",\"kind\":\"download\",\"label\":\"Download md2wechat runtime (macOS amd64)\",\"url\":\"https://github.com/geekjourneyx/md2wechat-skill/releases/download/v2.0.1/md2wechat-darwin-amd64\",\"targetDir\":\"~/.openclaw/tools/md2wechat\",\"os\":[\"darwin\"]}]}}\n---\n\n# md2wechat for OpenClaw\n\nTransparency:\n\n- Reads local Markdown files and local images.\n- May upload generated images and HTML to WeChat draft and media endpoints.\n- May call external image-generation services to create or enrich images.\n- Draft upload requires `WECHAT_APPID` and `WECHAT_SECRET`.\n- Image generation usually also requires `IMAGE_API_KEY`, plus optional `IMAGE_PROVIDER` / `IMAGE_API_BASE`.\n\nConfiguration entry point:\n\n- Check `~/.config/md2wechat/config.yaml` first.\n- To change the API domain, image provider, or confirm default mode behavior, see `docs/CONFIG.md` in the repository.\n- When `--mode` is not provided explicitly, `convert` still defaults to `api`.\n\n## Runtime Boundary\n\n- This skill only executes an already-installed `md2wechat` runtime.\n- It looks for the runtime under `~/.openclaw/tools/md2wechat` first, then falls back to `PATH`.\n- The runtime must also match the current skill version. A mismatched runtime is rejected instead of being executed silently.\n- It does not download binaries at execution time, does not use a cache bootstrapper, and does not silently fall back to remote downloads.\n- `clawhub install md2wechat` currently installs only the skill shell and does **not** guarantee automatic `md2wechat` runtime provisioning.\n- `metadata.openclaw.install` exposes fixed-version install resources and installer entry points; the complete and verifiable installation path is still the fixed-version `install-openclaw.sh` installer.\n\n## Recommended Flow\n\n1. Use the fixed-version OpenClaw installer to install both the skill and the runtime. Do not treat `clawhub install md2wechat` as a complete installation path.\n2. Use discovery commands first to confirm what the current instance supports:\n   - `md2wechat capabilities --json`\n   - `md2wechat providers list --json`\n   - `md2wechat themes list --json`\n   - `md2wechat prompts list --json`\n   - `md2wechat prompts list --kind image --archetype cover --json`\n3. Then run the task you actually need:\n   - `convert <file.md> --preview`\n   - `convert <file.md> --draft --cover <cover.jpg>`\n   - `generate_cover --article <file.md>`\n   - `generate_infographic --article <file.md> --preset infographic-comparison`\n   - `generate_image --preset cover-hero --article <file.md> --model <image-model>`\n   - `create_image_post -m <file.md> -t \"<title>\"`\n4. If you need AI conversion or AI image generation, add the image-service configuration before running those commands.\n\nWhen a task depends on a specific resource, inspect it first:\n\n- `md2wechat providers show <name> --json`\n- `md2wechat themes show <name> --json`\n- `md2wechat prompts show <name> --kind <kind> --json`\n- `md2wechat prompts render <name> --kind <kind> --var KEY=VALUE --json`\n\nRecommended image workflow:\n\n- Prefer `generate_cover` for article covers.\n- Prefer `generate_infographic` for infographic-style visual summaries.\n- Only fall back to `generate_image \"raw prompt\"` when no suitable preset exists.\n\nSee [references/runtime.md](references/runtime.md) for the runtime lookup contract.\n\nFile v2.0.1:_meta.json\n\n{\n  \"ownerId\": \"kn75jcfg3rdd1cknazbsajdfr180jt5f\",\n  \"slug\": \"md2wechat\",\n  \"version\": \"2.0.1\",\n  \"publishedAt\": 1774028196768\n}\n\nFile v2.0.1:references/runtime.md\n\n# md2wechat OpenClaw runtime contract\n\nThis OpenClaw skill package is intentionally thin:\n\n- it declares the OpenClaw metadata needed for discovery and install gating\n- it documents the external credential surface explicitly\n- it delegates execution to an already-installed `md2wechat` runtime\n\nRuntime lookup order:\n\n1. `~/.openclaw/tools/md2wechat/md2wechat`\n2. `~/.openclaw/tools/md2wechat/bin/md2wechat`\n3. `md2wechat` on `PATH`\n\nRuntime behavior:\n\n- no network download at execution time\n- no cache-based bootstrapper\n- no fallback to a GitHub release fetch from `run.sh`\n\nWhen the runtime is missing, the wrapper exits with a clear install hint instead of trying to self-provision.\n\nArchive v2.0.0: 4 files, 3351 bytes\n\nFiles: references/runtime.md (688b), scripts/run.sh (1357b), SKILL.md (4084b), _meta.json (128b)\n\nFile v2.0.0:SKILL.md\n\n---\nname: md2wechat\ndescription: Convert Markdown to WeChat Official Account HTML, process images, generate cover and infographic images, and create drafts for OpenClaw.\nmetadata: {\"openclaw\":{\"emoji\":\"📝\",\"homepage\":\"https://github.com/geekjourneyx/md2wechat-skill\",\"primaryEnv\":\"WECHAT_APPID\",\"requires\":{\"env\":[\"WECHAT_APPID\",\"WECHAT_SECRET\"]},\"install\":[{\"id\":\"openclaw-installer-shell\",\"kind\":\"download\",\"label\":\"Download fixed-version OpenClaw installer (shell)\",\"url\":\"https://github.com/geekjourneyx/md2wechat-skill/releases/download/v2.0.0/install-openclaw.sh\",\"os\":[\"darwin\",\"linux\"]},{\"id\":\"openclaw-installer-powershell\",\"kind\":\"download\",\"label\":\"Download fixed-version installer (PowerShell)\",\"url\":\"https://github.com/geekjourneyx/md2wechat-skill/releases/download/v2.0.0/install.ps1\",\"os\":[\"win32\"]},{\"id\":\"openclaw-skill-bundle\",\"kind\":\"download\",\"label\":\"Download OpenClaw skill bundle\",\"url\":\"https://github.com/geekjourneyx/md2wechat-skill/releases/download/v2.0.0/md2wechat-openclaw-skill.tar.gz\",\"archive\":\"tar.gz\",\"targetDir\":\"~/.openclaw/skills\",\"os\":[\"darwin\",\"linux\",\"win32\"]},{\"id\":\"openclaw-runtime-linux\",\"kind\":\"download\",\"label\":\"Download md2wechat runtime (Linux amd64)\",\"url\":\"https://github.com/geekjourneyx/md2wechat-skill/releases/download/v2.0.0/md2wechat-linux-amd64\",\"targetDir\":\"~/.openclaw/tools/md2wechat\",\"os\":[\"linux\"]},{\"id\":\"openclaw-runtime-darwin\",\"kind\":\"download\",\"label\":\"Download md2wechat runtime (macOS amd64)\",\"url\":\"https://github.com/geekjourneyx/md2wechat-skill/releases/download/v2.0.0/md2wechat-darwin-amd64\",\"targetDir\":\"~/.openclaw/tools/md2wechat\",\"os\":[\"darwin\"]}]}}\n---\n\n# md2wechat for OpenClaw\n\n透明披露：\n\n- 会读取本地 Markdown 文件和本地图片。\n- 可能把处理后的图片和 HTML 上传到微信草稿箱或素材接口。\n- 可能调用外部图像服务来生成图片或补图。\n- 草稿上传需要 `WECHAT_APPID` 和 `WECHAT_SECRET`。\n- 图片生成通常还需要 `IMAGE_API_KEY`，以及可选的 `IMAGE_PROVIDER` / `IMAGE_API_BASE`。\n\n配置入口：\n\n- 默认先检查 `~/.config/md2wechat/config.yaml`\n- 如需切换 API 域名、图片 provider 或确认默认模式，先看仓库文档 `docs/CONFIG.md`\n- 未显式传 `--mode` 时，`convert` 默认仍走 `api`\n\n## 运行边界\n\n- 本 skill 只执行已经安装好的 `md2wechat` runtime。\n- 优先查找 `~/.openclaw/tools/md2wechat` 下的 runtime，然后查找 `PATH`。\n- 运行时不会下载二进制，不会写入缓存下载器，也不会静默回退到远程拉取。\n- `metadata.openclaw.install` 当前提供的是固定版本安装资源与 installer 入口，真正完整的自动安装主线仍以 `install-openclaw.sh` 为准。\n\n## 推荐流程\n\n1. 先通过固定版本 OpenClaw installer 完成 skill 和 runtime 安装。\n2. 先用发现命令确认当前实例支持的能力和资源：\n   - `md2wechat capabilities --json`\n   - `md2wechat providers list --json`\n   - `md2wechat themes list --json`\n   - `md2wechat prompts list --json`\n   - `md2wechat prompts list --kind image --archetype cover --json`\n3. 再执行以下任务：\n   - `convert <file.md> --preview`\n   - `convert <file.md> --draft --cover <cover.jpg>`\n   - `generate_cover --article <file.md>`\n   - `generate_infographic --article <file.md> --preset infographic-comparison`\n   - `generate_image --preset cover-hero --article <file.md> --model <image-model>`\n   - `create_image_post -m <file.md> -t \"<title>\"`\n4. 如果要使用 AI 转换或 AI 图片，再补齐图像服务配置。\n\n当任务依赖具体资源时，先检查再执行：\n\n- `md2wechat providers show <name> --json`\n- `md2wechat themes show <name> --json`\n- `md2wechat prompts show <name> --kind <kind> --json`\n- `md2wechat prompts render <name> --kind <kind> --var KEY=VALUE --json`\n\n高频图片工作流建议：\n\n- 封面图优先用 `generate_cover`\n- 信息图优先用 `generate_infographic`\n- 只有在没有合适 preset 时，再直接用 `generate_image \"raw prompt\"`\n\nSee [references/runtime.md](references/runtime.md) for the runtime lookup contract.\n\nFile v2.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn75jcfg3rdd1cknazbsajdfr180jt5f\",\n  \"slug\": \"md2wechat\",\n  \"version\": \"2.0.0\",\n  \"publishedAt\": 1774024516447\n}\n\nFile v2.0.0:references/runtime.md\n\n# md2wechat OpenClaw runtime contract\n\nThis OpenClaw skill package is intentionally thin:\n\n- it declares the OpenClaw metadata needed for discovery and install gating\n- it documents the external credential surface explicitly\n- it delegates execution to an already-installed `md2wechat` runtime\n\nRuntime lookup order:\n\n1. `~/.openclaw/tools/md2wechat/md2wechat`\n2. `~/.openclaw/tools/md2wechat/bin/md2wechat`\n3. `md2wechat` on `PATH`\n\nRuntime behavior:\n\n- no network download at execution time\n- no cache-based bootstrapper\n- no fallback to a GitHub release fetch from `run.sh`\n\nWhen the runtime is missing, the wrapper exits with a clear install hint instead of trying to self-provision.","readmeExcerpt":"Skill: md2wechat Owner: geekjourneyx Summary: Convert Markdown to WeChat Official Account HTML. Use this whenever the user wants WeChat article formatting, article preview, WeChat draft upload, image generation for articles, cover or infographic generation, image-post creation, writer-style drafting, title suggestions, AI trace removal, or curr Tags: latest:3.1.0 Version history: v3.1.0 | 2026-07-13T17:20:15.134Z | u","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"md2wechat themes list --json\n  md2wechat layout list --json"},{"language":"bash","snippet":"md2wechat themes show <name> --json\n  md2wechat providers show <name> --json\n  md2wechat prompts show <name> --kind <kind> --json\n  md2wechat layout show <name> --json"},{"language":"bash","snippet":"md2wechat providers list --json\n  md2wechat prompts list --kind image --json"},{"language":"bash","snippet":"md2wechat prompts list --kind title --json\n  md2wechat prompts show wechat-title-expert --kind title --json"},{"language":"bash","snippet":"md2wechat doctor --json\n  md2wechat config show --format json\n  md2wechat config wechat-accounts --json"},{"language":"bash","snippet":"md2wechat version --json\n  md2wechat capabilities --json\n  md2wechat skills list --json\n  md2wechat skills read md2wechat --json"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: md2wechat\ndescription: Convert Markdown to WeChat Official Account HTML. Use this whenever the user wants WeChat article formatting, article preview, WeChat draft upload, image generation for articles, cover or infographic generation, image-post creation, writer-style drafting, title suggestions, AI trace removal, or current discovery of supported providers, themes, prompts, and layout modules.\n---\n\n# md2wechat\n\nUse this skill to operate the `md2wechat` CLI. Keep the skill focused on execution decisions. For full command tutorials, installation details, and FAQ-level explanations, refer users to the project docs instead of expanding this runtime protocol.\n\n## Intent Routing\n\nChoose the command family before taking any publish or generation action:\n\n- Standard article HTML, article preview, metadata inspection, or WeChat article draft: use `inspect`, `preview`, and `convert`.\n- Image-first post, image note, image-text note, `newspic`, or multi-image post: use `create_image_post`, not `convert --draft`.\n- Article cover or article infographic: prefer `generate_cover` or `generate_infographic` over raw `generate_image` when a bundled preset fits.\n- Host-agent image generation request with no provider configured: use image plan mode (`--plan --json`) to get prompt intent, then hand it to the host image-generation tool if one is available outside md2wechat.\n- WeChat title candidates for an existing article: use `title suggest <article.md> --json`; it emits a host-Agent AI request and does not choose or write the final title.\n- Existing article or draft, user asks what to improve next: run `md2wechat advise <article.md> --json`; treat it as recommendation-only and keep `inspect --json data.readiness.targets/blockers` as the publish gate.\n- Writing in a creator style or removing AI traces: use `write` or `humanize`.\n- Provider, theme, prompt, or layout uncertainty: run discovery first. Do not guess from memory or repository files.\n\nTreat `convert --draft` and `create_image_post` as different publish targets, not interchangeable variants.\n\n## Discovery First\n\nUse CLI discovery as the source of truth, but keep it scoped to the next decision. Do not run the full catalog for tasks that do not need provider, theme, prompt, or layout selection.\n\nRun the smallest useful discovery set:\n\n- Article formatting with no theme or modules chosen:\n  ```bash\n  md2wechat themes list --json\n  md2wechat layout list --json\n  ```\n\n- A named theme, provider, prompt, or layout module:\n  ```bash\n  md2wechat themes show <name> --json\n  md2wechat providers show <name> --json\n  md2wechat prompts show <name> --kind <kind> --json\n  md2wechat layout show <name> --json\n  ```\n\n- Image generation or image-preset selection:\n  ```bash\n  md2wechat providers list --json\n  md2wechat prompts list --kind image --json\n  ```\n\n- Title suggestion prompt selection:\n  ```bash\n  md2wechat prompts list --kind title --json\n  md2wechat prompts show wechat-title-expert --kind title --json\n  ```\n"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn75jcfg3rdd1cknazbsajdfr180jt5f\",\n  \"slug\": \"md2wechat\",\n  \"version\": \"3.1.0\",\n  \"publishedAt\": 1783963215134\n}"},{"path":"skill-card.md","content":"## Description:\n\nmd2wechat helps agents operate the md2wechat CLI to convert Markdown into WeChat Official Account HTML, previews, drafts, image posts, generated covers or infographics, title suggestions, and related article-writing workflows.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[geekjourneyx](https://clawhub.ai/user/geekjourneyx)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers, creators, and publishing teams use this skill to guide an agent through WeChat Official Account article formatting, preview, readiness inspection, draft creation, image-post creation, and related md2wechat CLI workflows.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Draft creation, image upload, publishing, or remote image generation can use local credentials and affect a WeChat account or external provider when explicitly requested.\n\nMitigation: Review the proposed command before approval and allow those actions only when the user has explicitly requested them and required credentials are configured.\n\nRisk: Publishing readiness can be misread if an agent relies on stale checks or legacy booleans.\n\nMitigation: Use inspect --json and evaluate data.readiness.targets plus data.readiness.blockers before upload or draft actions.\n\nRisk: Article formatting can unintentionally modify source Markdown if generated content is saved in place.\n\nMitigation: Keep source Markdown read-only by default, write temporary formatted artifacts, and require explicit user confirmation before saving generated Markdown next to the source.\n\nRisk: Title suggestions, advice, and image plans may be recommendations or prompt requests rather than completed publishing decisions.\n\nMitigation: Treat advisory outputs as recommendation-only and require user confirmation before converting them into final article, image, upload, or draft actions.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/geekjourneyx/skills/md2wechat)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with inline shell commands and JSON-aware CLI output handling]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May direct the agent to create temporary formatted Markdown artifacts, local previews, drafts, uploads, or image-generation plans only when the user requests those actions and required credentials are configured.]\n\n## Skill Version(s):\n\n3.1.0 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":null,"editorialQuality":{"score":100,"threshold":65,"status":"thin","wordCount":1734,"uniquenessScore":41,"reasons":["uniqueness-below-45"]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-09T13:08:17.869Z","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-09T13:08:17.869Z","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-10T00:36:46.236Z","emptyReason":null},"items":[{"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-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"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":"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"}]}}}