# doocs/md: A WeChat Markdown Editor That Renders to WeChat Articles

> doocs/md converts Markdown into WeChat article HTML, with themes, image hosting integrations and an AI assistant. It is built for people who publish to WeChat Official Accounts and want to stop hand-tuning layout.

**doocs/md** — ✍ WeChat Markdown Editor | 一款高度简洁的微信 Markdown 编辑器：支持 Markdown 语法、自定义主题样式、内容管理、多图床、AI 助手等特性

- Repository: https://github.com/doocs/md
- Website: https://md.doocs.org
- Stars: 13,387 · Forks: 2,231
- Language: TypeScript
- License: WTFPL
- Published: 2026-09-09 · Updated: 2026-09-09 · Language: en
- Canonical page: https://hysenlabs.com/projects/doocs-md

## What doocs/md Is For

doocs/md is a Markdown editor whose output target is WeChat Official Account articles, not generic HTML. The README states the goal directly: Markdown documents are rendered immediately into WeChat article layout, so that writers "no longer worry about typesetting" and can generate clean, presentable WeChat articles after learning basic Markdown syntax. That framing matters. Most Markdown editors treat a platform's HTML as an export format; here the platform is the product.

The project's own explanation of why it exists is that existing open source WeChat Markdown editors suffered from cluttered styles and repeated manual layout adjustments. So the design intent is restraint: fewer knobs, less fiddling, writing first. If your workflow involves pasting rich text into the WeChat backend and then fighting the editor's default spacing, this tool is aimed at you.

The repository is TypeScript, organised as a pnpm workspace with apps/ and packages/ directories, and the default branch is main. The last push was on 2026-09-08. The most recent release listed is v2.1.0 on 2025-10-17, following v2.0.4 and v2.0.3. The licence is WTFPL, which is permissive in an unusual way; more on that below.

## How the Editor Turns Markdown into WeChat HTML

The mechanism visible in the repository is a web application that parses Markdown and applies theme CSS before producing the HTML you paste into WeChat. The feature list names the parsing extensions explicitly: standard Markdown, KaTeX math, Mermaid diagrams, PlantUML, GFM alert blocks, and a Ruby annotation extension that accepts both `[文字]{注音}` and `[文字]^(注音)` forms. Code blocks get multiple highlighting themes, and the theme colour and CSS can be customised.

Around that core sit three supporting systems. Drafts are stored locally and content is auto-saved. Once you sign in, editor preferences can be synced, which the README documents in docs/cloud-sync.md. And images are handled by a pluggable uploader with a long list of backends: GitHub, Aliyun OSS, Tencent COS, Qiniu Kodo, MinIO, S3-compatible storage, the WeChat Official Account itself, Cloudflare R2, Upyun, Telegram, Cloudinary, plus a custom upload path.

The workspace layout confirms this is more than a single page. The root package.json exposes separate filters for @md/web, @md/api, @md/mcp-server, @doocs/md-cli, and an apps/vscode directory with its own test script. So the same rendering core is reachable from a browser, a CLI, an MCP server and a VS Code extension. That is a meaningful architectural decision: the editor is the flagship, but the rendering logic is meant to be reused elsewhere.

## Installing doocs/md and Rendering Your First Article

The fastest path is the hosted editor at https://md.doocs.org. The README recommends Chrome for the best experience. If you want to run it yourself, the repository ships a docker/ directory and the README links a Docker image at hub.docker.com/r/doocs/md, so a container is the intended self-hosted route. The exact image tag and port mapping are not spelled out in the README text, so check the docker/ directory in the repository before you write a compose file.

For local development, the root package.json declares pnpm@11.27.0 as the package manager and requires Node >=22.22.2. The .nvmrc file in the repository root is the authoritative version pin. After cloning and installing dependencies with pnpm, the start script runs the web app in dev mode:

```bash
pnpm install
pnpm start
```

The start script resolves to `pnpm web dev`, which in turn filters @md/web. There is also a CLI published as @doocs/md-cli, and the repository builds it with a dedicated script:

```bash
pnpm build:cli
```

That script builds the web app first, clears packages/md-cli/dist, copies the built assets in, and runs npm pack. So the CLI is a wrapper around the same web build rather than a separate renderer. If you want the CLI without building it, the README badge links to the npm package page for @doocs/md-cli.

Once the editor is open, the workflow is: paste Markdown on one side, pick a theme, and copy the rendered result into the WeChat backend. The README's demo section shows four operations as animated GIFs: theme switching, image upload, style extension, and one-click formatting. That last one is the part that replaces manual adjustment.

## Where doocs/md Gets in Your Way

The image hosting story is the clearest constraint. The README's table marks which hosts need configuration, and most of them do. GitHub needs a Repo and a Token. Aliyun needs AccessKey ID, AccessKey Secret, Bucket and Region. MinIO needs Endpoint, Port, UseSSL, Bucket, AccessKey and SecretKey. The WeChat Official Account option needs appID, appsecret and a proxy domain. Only the default host requires no configuration, and the README does not describe what that default host does with your images, how long they persist, or what happens when they disappear. If your article's images matter, that gap is worth resolving before you rely on it.

The AI assistant has the same shape of problem. The README lists DeepSeek, OpenAI, Tongyi Qianwen, Tencent Hunyuan, Volcano Ark and 302.AI as integrated models. It does not describe what the assistant does with your draft, whether content is sent to the provider, or how keys are stored. Those are the questions an editor that handles unpublished drafts should answer.

There is also a scope limit. This is not a general Markdown editor. If you write for a static site, a Git-based docs system, or a platform other than WeChat, the rendering pipeline is tuned for a target you do not have, and the theme system is oriented around WeChat's constraints rather than yours. The CLI exists, but the build script shows it packages the web app, so it inherits that orientation. And the README does not document rollback or migration for the cloud-synced preferences, which matters if you sign in and later want your settings out.

## doocs/md Compared with mdnice and Vditor

The closest comparison is mdnice, which appears in the related searches alongside doocs/md. Both render Markdown into WeChat-formatted HTML, and both offer themes. The difference the doocs/md README claims is stylistic: it says existing open source WeChat Markdown editors generally have cluttered styles and require repeated layout adjustments, and that this project is a reaction to that. Whether the claim holds is a matter of taste, but the design brief is narrower and more opinionated, which is the actual distinction.

Vditor is a different kind of project. It is a Markdown editor component rather than a publishing tool: you embed it in your own application and it gives you an editing surface. doocs/md is an application with an output target. If you are building a product and need an editor widget, Vditor is the shape you want; if you are writing articles and need them to look right in WeChat, doocs/md is the shape you want. The repository's own structure supports this reading: @md/core and @md/shared are reusable packages, but the primary artefact is the web app.

A third option is to skip the editor entirely and write HTML by hand, or use a general Markdown tool and paste the result. That works until you hit WeChat's inline-style requirements and the theme system becomes the thing you are rebuilding.

## Licence, Maintenance and Upgrade Cost

doocs/md is released under the WTFPL. That is a permissive licence with unusual wording, and it is worth reading the LICENSE file in the repository root rather than assuming it behaves like MIT. Because it is permissive, the practical implication is that you can use the code in your own projects; the caveat is that permissive licences typically come with no warranty, and this one is no exception. None of this is legal advice; if the licence terms matter to your organisation, have someone read the actual file.

The dependency and toolchain cost is real. Node >=22.22.2 is required, pnpm is the declared package manager at version 11.27.0, and the workspace spans multiple packages with separate type-check and test targets. Upgrading means upgrading the whole workspace, including the VS Code extension under apps/vscode and the MCP server package. The eslint config is @antfu/eslint-config, which is opinionated about formatting, so contributions will be shaped by it.

On maintenance: the last push was on 2026-09-08, and the most recent release listed is v2.1.0 from 2025-10-17. The repository is not archived. The gap between the last release and the last push suggests active work on main that has not been cut into a release, which is normal for this kind of project but means the released version and the repository head are not the same thing. If you deploy from a release, you are roughly eleven months behind main as of the release date.

## Conclusion

Adopt doocs/md if you publish regularly to a WeChat Official Account and want Markdown to carry the layout, or if you prefer a browser-based editor with local drafts and configurable image hosting. Do not adopt it if you need a general-purpose Markdown editor for arbitrary platforms, or if you cannot accept that image hosting and AI features require third-party credentials. Before committing, verify that your Node version is at least 22.22.2, that the image host you intend to use is supported in the current release, and that the WTFPL licence terms are acceptable to your organisation.

## FAQ

### What does a markdown editor do?

A Markdown editor lets you write in Markdown syntax and see the result rendered. doocs/md does this with a specific target: it renders Markdown documents immediately into WeChat article layout, so the output can be pasted into a WeChat Official Account.

### How do I install doocs/md?

You can use the hosted editor at https://md.doocs.org, run the Docker image linked from the README, or build from source with pnpm. Building requires Node >=22.22.2 and pnpm, after which `pnpm start` runs the web app in dev mode.

### What is the doocs/md CLI?

The CLI is published as @doocs/md-cli. The repository builds it with `pnpm build:cli`, which builds the web app, copies the output into packages/md-cli, and runs npm pack, so the CLI packages the same web build.

### Which image hosts does doocs/md support?

The README lists GitHub, Aliyun, Tencent Cloud, Qiniu, MinIO, S3-compatible storage, the WeChat Official Account, Cloudflare R2, Upyun, Telegram, Cloudinary, a default host and a custom upload option. Most require configuration such as access keys, bucket names and regions.

### Is doocs/md free to use?

The repository is licensed under the WTFPL, which is a permissive licence. It does not carry a warranty. If the terms matter to your organisation, read the LICENSE file in the repository root.

## Sources

- [doocs/md on GitHub](https://github.com/doocs/md)
- [License: WTFPL](https://github.com/doocs/md/blob/main/LICENSE)
- [Project website](https://md.doocs.org)
- [README](https://github.com/doocs/md/blob/main/README.md)
- [Releases](https://github.com/doocs/md/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/doocs-md
