More than a Markdown theme switcher
md2wechat packages most of a WeChat Official Account publishing workflow into one CLI. It can inspect a Markdown article, convert it to WeChat-oriented HTML, preview the exact result, upload local images, create a draft, generate a cover or infographic, and manage named account credentials. Content commands can also draft an article, rewrite machine-sounding prose, or prepare title suggestions for an external model.
The project is designed around AI agents as much as human terminal users. Commands such as capabilities, themes list, layout show, providers, and doctor return compact JSON so Codex, Claude Code, WorkBuddy, Kimi Work, Hermes Agent, and OpenClaw can discover what the installed binary actually supports. Embedded skills provide an operating procedure that matches that binary version. This is a better foundation for automation than asking a model to infer flags from an old blog post.
The audience is narrower than the feature list initially suggests. The README and practical guides are written in Chinese, the target platform is WeChat, and the professional rendering service is obtained by contacting the author through a WeChat account. An English speaker can read command names and the English license, but there is no English user manual to carry a team through setup or failures.
Safety boundaries are a genuine strength
Publishing tools become dangerous when preview, conversion, upload, and draft creation blur together. md2wechat separates them carefully. inspect returns metadata, checks, readiness targets, and blockers without publishing. preview writes the successful API renderer's HTML to a local file. convert performs conversion and only uploads images or creates a draft when those effects are explicitly requested. The README also tells agents to pass the same named WeChat account to inspection and conversion.
Release 3.2.0 tightened this model. It validates draft intent, local assets, cover requirements, and output destinations before authentication or remote effects. If an image-post draft succeeds but the requested result file cannot be saved, the tool reports that partial effect as non-retryable rather than encouraging a duplicate publish attempt. AI preview no longer creates a fallback file, and successful API preview writes the converter's exact bytes. These are small details with large operational value.
Local layout validation is similarly honest. The CLI can verify that a :::module name and its fields match the embedded catalog, but it cannot prove the remote renderer has deployed the same behavior. The documentation tells users to run a real API preview or conversion for that. Agent automation is safer when the tool states what each check cannot establish.
The free and professional modes are different products
The free AI mode provides three basic themes and turns conversion into a prompt that an external language model must finish. It does not parse advanced layout modules, and a preview returns PREVIEW_ACTION_REQUIRED without producing an HTML file. This is useful for experimentation, but it is not a deterministic local renderer.
The professional API returns final HTML, offers 48 tuned themes, and renders 53 recommended advanced layout syntax names covering 68 promoted scenarios. It also unlocks the workflow positioned for teams, client accounts, and batch publishing. Named WeChat accounts and the fixed-egress service are gated by an API key. There is no public price or self-serve purchase path in the README; prospective users are told to contact the author's WeChat account for an API consultation.
That service boundary should be evaluated like any vendor dependency. Teams need to understand what article content is sent remotely, expected availability, retention, support, pricing, and what happens if the API changes. Local catalog validation does not replace a renderer. The source repository provides the orchestration and catalogs, but the highest-fidelity result depends on infrastructure outside it.
Installation is simple, publishing is not
The recommended npm package downloads a version-matched release binary and verifies its checksum. Homebrew, fixed-version install scripts, direct binaries, and go install are also documented. Builds from source require Go 1.26.1 or newer. Common x86-64 and ARM64 systems are covered, with Windows limited to x86-64 in the listed binary matrix. No official Docker image or Dockerfile exists.
After installation, users initialize and validate configuration. Previewing through the API requires its key. Creating a WeChat draft additionally requires the account's AppID and AppSecret, a cover, and network access to WeChat. WeChat commonly rejects API calls unless the actual outbound public IP is registered in the account's whitelist. A laptop, office network, or hosted CI runner with a changing address can therefore work one day and fail the next. md2wechat offers a professional fixed-egress proxy, but that is another external dependency and paid feature.
Image generation has its own credentials. Providers include Volcengine, ModelScope, OpenRouter, OpenAI, and Gemini. Alternatively, plan mode returns a structured image request without calling a provider, allowing a host agent with an image-generation tool to complete the job. That separation is sensible, though it means the command alone does not deliver every advertised image workflow.
Public source, restrictive current license
The largest buying distinction is legal. New releases use a license based on Business Source License 1.1. Personal content creation without direct compensation, learning, research, evaluation, nonprofit use, and contributions are allowed. For-profit internal workflows, paid client delivery, SaaS, white-labeling, paid products, redistribution, and commercial AI training uses require written authorization. The stated change date is January 1, 2030, when affected versions move to Apache 2.0; older MIT versions retain their earlier terms.
That makes current md2wechat source available, not open source in the normal OSI sense. A freelancer formatting client articles and a company automating its own revenue-related account should not assume GitHub availability grants production rights. Get terms in writing before building a workflow around it.
The project itself is active. The last push was August 7, 2026, after the July 24 v3.2.0 release, and pull requests were updated on August 13. GitHub's open count is seven, six of which were pull requests in the retrieved queue. The lone open issue asks for Word files with embedded images and direct Obsidian connectivity, neither of which is presented as a current feature.
md2wechat is easy to like as a carefully designed WeChat automation product. Personal Chinese-language creators can get real value from its preflight checks and agent discovery. Commercial teams should compare it with Doocs Markdown or another local editor only after treating the API and license as procurement decisions, not incidental setup details.