md2wechat
v2.0.7Convert Markdown to WeChat Official Account HTML, inspect supported providers/themes/prompts, generate article images, create drafts, write with creator styl...
Like a lobster shell, security has layers — review code before you run it.
License
Runtime requirements
Install
brew install geekjourneyx/tap/md2wechatgo install github.com/geekjourneyx/md2wechat-skill/cmd/md2wechat@latestSKILL.md
md2wechat
Use md2wechat when the user wants to:
- convert Markdown into WeChat Official Account HTML
- inspect resolved article metadata, readiness, and publish risks before conversion
- generate a local preview artifact or upload drafts
- inspect live capabilities, providers, themes, and prompts
- generate covers, infographics, or other article images
- create image posts
- write in creator styles or remove AI writing traces
Intent Routing
Choose the command family before doing any publish action:
- Use
convert/inspect/previewwhen the user wants a standard WeChat article draft (news), HTML conversion, article metadata, article preview, or a draft that needs--cover. - Use
create_image_postwhen the user says小绿书,图文笔记,图片消息,newspic,多图帖子, or asks to publish an image-first post rather than an article HTML draft. - Do not route
小绿书/图文笔记requests toconvert --draftjust because the user also has a Markdown article. A Markdown file can still be the image source forcreate_image_post -m article.md. - Treat
convert --draftandcreate_image_postas different publish targets, not interchangeable command variants.
Defaults And Config
- Use this skill only when
md2wechatis already available onPATH. - Draft upload and publish-related actions require
WECHAT_APPIDandWECHAT_SECRET. - Image generation may require additional image-service configuration in
~/.config/md2wechat/config.yaml. convertdefaults toapimode unless the user explicitly asks for--mode ai.- Check configuration in this order:
~/.config/md2wechat/config.yaml- environment variables such as
MD2WECHAT_BASE_URL - project-local
md2wechat.yaml,md2wechat.yml, ormd2wechat.json
- If the user asks to switch API domain, update
api.md2wechat_base_urlorMD2WECHAT_BASE_URL. - Treat live CLI discovery output as the source of truth. Do not guess provider names, theme names, or prompt names from repository files alone.
Discovery First
Run these before selecting a provider, theme, or prompt:
md2wechat version --jsonmd2wechat capabilities --jsonmd2wechat providers list --jsonmd2wechat themes list --jsonmd2wechat prompts list --jsonmd2wechat prompts list --kind image --jsonmd2wechat prompts list --kind image --archetype cover --json
Inspect a specific resource before using it:
md2wechat providers show openrouter --jsonmd2wechat providers show volcengine --jsonmd2wechat themes show autumn-warm --jsonmd2wechat prompts show cover-default --kind image --jsonmd2wechat prompts show cover-hero --kind image --archetype cover --tag hero --jsonmd2wechat prompts show infographic-victorian-engraving-banner --kind image --archetype infographic --tag victorian --jsonmd2wechat prompts render cover-default --kind image --var article_title='Example' --json
When 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.
When choosing an image model, prefer providers show <name> --json and read supported_models before hard-coding --model.
Core Commands
Configuration:
md2wechat config initmd2wechat config show --format jsonmd2wechat config validate
Conversion:
md2wechat inspect article.mdmd2wechat preview article.mdmd2wechat convert article.md --previewmd2wechat convert article.md -o output.htmlmd2wechat convert article.md --draft --cover cover.jpgmd2wechat convert article.md --mode ai --theme autumn-warm --previewmd2wechat convert article.md --title "新标题" --author "作者名" --digest "摘要"
Image handling:
md2wechat upload_image photo.jpgmd2wechat download_and_upload https://example.com/image.jpgmd2wechat generate_image "A cute cat sitting on a windowsill"md2wechat generate_image --preset cover-hero --article article.md --size 2560x1440md2wechat generate_cover --article article.mdmd2wechat generate_infographic --article article.md --preset infographic-comparisonmd2wechat generate_infographic --article article.md --preset infographic-dark-ticket-cn --aspect 21:9md2wechat generate_infographic --article article.md --preset infographic-handdrawn-sketchnote
Drafts and image posts:
md2wechat create_draft draft.jsonmd2wechat test-draft article.html cover.jpgmd2wechat create_image_post --helpmd2wechat create_image_post -t "Weekend Trip" --images photo1.jpg,photo2.jpgmd2wechat create_image_post -t "Travel Diary" -m article.mdecho "Daily check-in" | md2wechat create_image_post -t "Daily" --images pic.jpgmd2wechat create_image_post -t "Test" --images a.jpg,b.jpg --dry-run
Writing and humanizing:
md2wechat write --listmd2wechat write --style dan-koemd2wechat write --style dan-koe --input-type fragment article.mdmd2wechat write --style dan-koe --cover-onlymd2wechat write --style dan-koe --covermd2wechat write --style dan-koe --humanize --humanize-intensity aggressivemd2wechat humanize article.mdmd2wechat humanize article.md --intensity aggressivemd2wechat humanize article.md --show-changesmd2wechat humanize article.md -o output.md
Article Metadata Rules
For convert, metadata resolution is:
- Title:
--title->frontmatter.title-> first Markdown heading ->未命名文章 - Author:
--author->frontmatter.author - Digest:
--digest->frontmatter.digest->frontmatter.summary->frontmatter.description
Limits enforced by the CLI:
--title: max 32 characters--author: max 16 characters--digest: max 128 characters
Draft behavior:
- If digest is still empty when creating a draft, the draft layer generates one from article HTML content with a 120-character fallback.
- Creating a draft requires either
--coveror--cover-media-id. --coveris a local image path contract for article drafts.--cover-media-idis for an existing WeChat permanent cover asset. Do not assume a WeChat URL ormmbiz.qpic.cnURL can be reused asthumb_media_id.inspectis the source-of-truth command for resolved metadata, readiness, and checks.previewv1 writes a standalone local HTML preview file. It does not start a workbench, write back to Markdown, upload images, or create drafts.convert --previewis still the convert-path preview flag; it is not the same thing as the standalonepreviewcommand.preview --mode aiis degraded confirmation only; it must not be treated as final AI-generated layout.--title/--author/--digestaffect draft metadata, not necessarily visible body HTML.- Markdown images are only uploaded/replaced during
--uploador--draft, not during plainconvert --preview.
Agent Rules
- Start with discovery commands before committing to a provider, theme, or prompt.
- Route by publish target first: article draft =>
convert; image post / 小绿书 / newspic =>create_image_post. - Prefer the confirm-first flow for article work:
inspect->preview->convert/--draft. - If the user says
小绿书,图文笔记,图片消息,newspic, or asks for a multi-image post, prefercreate_image_posteven when the source content lives in Markdown. - Prefer
generate_coverorgenerate_infographicover a rawgenerate_image "prompt"call when a bundled preset fits the task. - Validate config before any draft, publish, or image-post action.
- If draft creation returns
45004, check digest/summary/description before assuming the body content is too long. - 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.
- Do not perform draft creation, publishing, or remote image generation unless the user asked for it.
Safety And Transparency
- Reads local Markdown files and local images.
- May download remote images when asked.
- May call external image-generation services when configured.
- May upload HTML, images, drafts, and image posts to WeChat when the user explicitly requests those actions.
Files
1 totalComments
Loading comments…
