{"id":28779568,"url":"https://github.com/zillionare/marktwain","last_synced_at":"2026-01-20T16:51:52.701Z","repository":{"id":298668578,"uuid":"1000555951","full_name":"zillionare/marktwain","owner":"zillionare","description":"✍ MarkTwain | 一次编辑，到处发布","archived":false,"fork":false,"pushed_at":"2025-06-30T08:51:24.000Z","size":39186,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-30T09:41:16.026Z","etag":null,"topics":["admonition","commonmark","csdn","wechat","xq","zhihu"],"latest_commit_sha":null,"homepage":"https://md.doocs.org","language":"Vue","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"doocs/md","license":"wtfpl","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zillionare.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-12T01:17:03.000Z","updated_at":"2025-06-23T06:08:39.000Z","dependencies_parsed_at":"2025-06-30T09:32:38.995Z","dependency_job_id":"51e580ca-bbfa-4d61-a109-04abb64a750f","html_url":"https://github.com/zillionare/marktwain","commit_stats":null,"previous_names":["zillionare/md","zillionare/marktwain"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/zillionare/marktwain","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zillionare%2Fmarktwain","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zillionare%2Fmarktwain/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zillionare%2Fmarktwain/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zillionare%2Fmarktwain/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zillionare","download_url":"https://codeload.github.com/zillionare/marktwain/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zillionare%2Fmarktwain/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265252457,"owners_count":23735081,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["admonition","commonmark","csdn","wechat","xq","zhihu"],"created_at":"2025-06-17T17:08:07.394Z","updated_at":"2026-01-20T16:51:52.695Z","avatar_url":"https://github.com/zillionare.png","language":"Vue","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"https://fastly.jsdelivr.net/gh/zillionare/images@main/images/hot/logo/marktwain.png\" width=\"30%\"\u003e\n\n\u003c/div\u003e\n\n\u003ch1 align=\"center\"\u003eMarktwain\u003c/h1\u003e\n\n## 项目介绍\n\n本项目是 [Doocs/md](https://github.com/doocs/md) 的 fork。Doocs/md 解决了快速编辑公众号文章的问题，并提供了优雅的默认样式。\n\n但是，如何安全地把文章发到任意平台，而不丢失这些优雅的样式呢？**编辑一次，发遍宇宙**，这就是 MarkTwain 要做的事。\n\n我们的做法很简单，把平台可能不支持的特殊语法，比如代码高亮显示， Mermaid 图表（暂未实现），数学公式，警示语块事先转换成图片并上传到图床，并替换相应内容为图片链接。这样再复制粘贴到其它平台上，就能得到一致的视觉效果。实际上，这也是早期在编辑公众号标题、头条标题大家常做的事。\n\n**MarkTwain永久免费，并且一直可通过 [MarkTwain](https://md.quantide.cn) 在线使用**！\n\n## 在线使用地址\n\n**[MarkTwain](https://md.quantide.cn)**\n\n注：推荐使用 Chrome 浏览器，效果最佳。\n\n## 功能特性\n\n### Marktwain 独家功能\n\n作为一个 Markdown 编辑器（即将 Markdown 转换为 Html），Marktwain 支持以下独特功能：\n\n- [x] 支持 common mark 的 Admonition (类似 GFM Alerts)\n- [x] 分页功能，可以用来发小红书、公众号、知乎想法等需要多图平台。\n- [x] 模板功能。可以把一些可复用的内容和较为复杂的设计指定为模板，即可以此后的文章中插入使用。\n- [x] 支持将 admonition, fenced block, math block, mermaid, plantULM和标题 转换成图片，上传图床\n- [x] 将转图后的 markdown 替换为图片链接\n- [x] 将转图后的博文复制粘贴后，即可发表到多数网站，保持视觉效果基本不变。\n\n![](https://cdn.jsdelivr.net/gh/zillionare/imgbed2@main/images/2025/08/20250910213510.png)\n\n### doocs/md 支持的功能\n\n以下常用编辑功能，由 doocs/md 支持。我们将保持同步更新。\n\n- [x] 支持 Markdown 所有基础语法、数学公式\n- [x] 提供对 Mermaid 图表的渲染和 [GFM 警告块](https://github.com/orgs/community/discussions/16925)的支持\n- [x] 提供 PlantUML 渲染支持\n- [x] 提供 ruby 注音扩展支持，支持两种格式：[文字]{注音}、[文字]^(注音)，支持 `・`、`．`、`。`、`-` 分隔符\n- [x] 丰富的代码块高亮主题，提升代码可读性\n- [x] 允许自定义主题色和 CSS 样式，灵活定制展示效果\n- [x] 提供多图上传功能，并可自定义配置图床\n- [x] 便捷的文件导入、导出功能，提升工作效率\n- [x] 内置本地内容管理功能，支持草稿自动保存\n- [x] 集成主流 AI 模型（如 DeepSeek、OpenAI、通义千问、腾讯混元、火山方舟 等等），辅助内容创作\n\n## 转图功能\n\n转图功能是指将 Markdown 中的特殊块，比如 Admonition, code block, plantUML, mermaid 图，数学公式等转换成为图片，保持文字内容不变，只把上述内容转换成图片并替换成为图片链接。\n\n转图功能需要图床支持。\n\n转图生，可以通过 复制 \u003e 转图后 MD 设置复制的格式，再点击复制，此时图片和文字就被完全拷贝，可以几乎原样粘贴到知乎、知识星球上。\n\n在转图时，可以通过转图宽度来调整生成的图片最终显示的大小。如果图片只会发布在移动端，推荐宽度500px;如果要兼顾电脑和移动端，则可以使用650px的宽度。\n\n这些设置在 设置 \u003e 转图设置中。\n\n## 分页功能\n\n分页功能可以将长文章分页，每个分页可以单独保存为图片，特别适合发小红书、公众号图文、知乎想法等等平台。\n\n使用时，通过\"---\"来手动分页（尽管我们提供了自动分页，但是自动分页能力较弱）。然后就可以在右侧的分页预览中，检查分页效果。\n\n可以在设置 \u003e 分页预览 中，指定分页的宽高比和像素密度。\n\n注意，MarkTwain 目前使用绝对像素来作为字体大小的单位。一般情况下，在移动端显示时，每一行显示20个字符左右最佳。因此，我们推荐的宽度是480px。\n\n为保证截图效果，建议像素密度设置为2。这样一张3：4的图截图后，图片像素将会是 960px × 1280px。\n\n在分页模式下，我们给第一页加上了 page-cover (css)类，最后一页加上了 page-end (css)类。中间各页则对应的 page-2, page-3, ... page-n 等类。\n\n你可以通过 样式 \u003e 自定义 css 来修改这些类的样式，从而设计出封面效果。\n\n在分页模式下，通过 文件 \u003e 导出为 png 功能，即可导出多图。在普通模式下，该功能将导出长图。\n\n## 模板\n\n你很可能希望在 Markdown 中，添加 logo 等略为复杂的设计。你可以把它们转换成图片插入，也可以直接使用 html + css 来实现。\n\n但我们提供了更方便的模板功能。你可以一次设计好 logo 并保存，此后就可以在后续文章中直接插入使用。\n\n## 目前支持哪些图床\n\n| #   | 图床                                                   | 使用时是否需要配置                                                         | 备注                                                                                                                   |\n| --- | ------------------------------------------------------ | -------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |\n| 1   | gitee                                                  | 否，但Gitee 图床图片，一般很难在其它网站上使用。                           | -                                                                                                                      |\n| 2   | [GitHub](https://github.com)                           | 配置 `Repo`、`Token`、`仓库内路径`、`域名前缀` 参数                        | [如何获取 GitHub token？](https://docs.github.com/en/github/authenticating-to-github/creating-a-personal-access-token) |\n| 3   | [阿里云](https://www.aliyun.com/product/oss)           | 配置 `AccessKey ID`、`AccessKey Secret`、`Bucket`、`Region` 参数           | [如何使用阿里云 OSS？](https://help.aliyun.com/document_detail/31883.html)                                             |\n| 4   | [腾讯云](https://cloud.tencent.com/act/pro/cos)        | 配置 `SecretId`、`SecretKey`、`Bucket`、`Region` 参数                      | [如何使用腾讯云 COS？](https://cloud.tencent.com/document/product/436/38484)                                           |\n| 5   | [七牛云](https://www.qiniu.com/products/kodo)          | 配置 `AccessKey`、`SecretKey`、`Bucket`、`Domain`、`Region` 参数           | [如何使用七牛云 Kodo？](https://developer.qiniu.com/kodo)                                                              |\n| 6   | [MinIO](https://min.io/)                               | 配置 `Endpoint`、`Port`、`UseSSL`、`Bucket`、`AccessKey`、`SecretKey` 参数 | [如何使用 MinIO？](http://docs.minio.org.cn/docs/master/)                                                              |\n| 7   | [公众号](https://mp.weixin.qq.com/)                    | 配置 `appID`、`appsecret`、`代理域名` 参数                                 | [如何使用公众号图床？](https://md-pages.doocs.org/tutorial)                                                            |\n| 8   | [Cloudflare R2](https://developers.cloudflare.com/r2/) | 配置 `AccountId`、`AccessKey`、`SecretKey`、`Bucket`、`Domain` 参数        | [如何使用 S3 API 操作 R2？](https://developers.cloudflare.com/r2/api/s3/api/)                                          |\n| 9   | [又拍云](https://www.upyun.com/)                       | 配置 `Bucket`、`Operator`、`Password`、`Domain` 参数                       | [如何使用 又拍云？](https://help.upyun.com/)                                                                           |\n| 10  | [Telegram](https://core.telegram.org/api)              | 配置 `Bot Token`、`Chat ID` 参数                                           | [如何使用 Telegram 图床？](https://github.com/zillionare/marktwain/blob/main/docs/telegram-usage.md)                   |\n| 11  | [Cloudinary](https://cloudinary.com/)                  | 配置 `Cloud Name`、`API Key`、`API Secret` 参数                            | [如何使用 Cloudinary？](https://cloudinary.com/documentation/upload_images)                                            |\n| 12  | 自定义上传                                             | 是                                                                         | [如何自定义上传？](/docs/custom-upload.md)                                                                             |\n\n### GitHub 图床配置\n\nGitHub 图床支持以下配置选项：\n\n#### 基本配置\n\n- **仓库** (owner/repo): GitHub 仓库，格式为 `用户名/仓库名`\n- **分支**: 上传到的分支，默认为 `main`\n- **Token**: GitHub Personal Access Token，需要有仓库写入权限\n\n#### 高级配置\n\n- **仓库内路径**: 图片在仓库中的存储路径，支持变量替换\n  - `{year}`: 当前年份（4位）\n  - `{month}`: 当前月份（2位）\n  - 示例：`images/{year}/{month}` 会被替换为 `images/2025/09`\n  - 默认：自动生成 `YYYY/MM/DD` 格式\n\n- **域名前缀**: 自定义图片访问域名\n  - CDN 加速示例：`https://fastly.jsdelivr.net/gh/owner/repo@main/`\n  - 自定义域名示例：`https://img.example.com/`\n  - 不填写时使用原始 GitHub 链接，但可能访问速度变慢。\n\n#### 使用示例\n\n配置示例：\n\n- 仓库：`githubuser/repo`\n- 分支：`main`\n- 仓库内路径：`images/{year}/{month}`\n- 域名前缀：`https://fastly.jsdelivr.net/gh/githubuser/repo@main/`\n\n![](https://cdn.jsdelivr.net/gh/githubuser/repo@main/images/2025/08/20250914205647.png)\n\n![demo1](https://cdn-doocs.oss-cn-shenzhen.aliyuncs.com/gh/doocs/md/images/demo1.gif)\n\n![demo2](https://cdn-doocs.oss-cn-shenzhen.aliyuncs.com/gh/doocs/md/images/demo2.gif)\n\n![demo3](https://cdn-doocs.oss-cn-shenzhen.aliyuncs.com/gh/doocs/md/images/demo3.gif)\n\n![demo4](https://cdn-doocs.oss-cn-shenzhen.aliyuncs.com/gh/doocs/md/images/demo4.gif)\n\n## 支持我们\n\n本项目永久免费，并可通过[Marktwain](https://md.quantide.cn)**免费**在线使用。\n\n## 反馈与交流\n\n如果你在使用过程中遇到问题，或者有好的建议，欢迎在 [Issues](https://github.com/zillionare/marktwain/issues) 中反馈。你也可以加入我们的交流群，和我们一起讨论，若群二维码失效，请添加好友，备注 `marktwain`，我们会拉你进群。\n\n\u003cdiv align=\"center\"\u003e\n\u003cimg src=\"https://cdn.jsdelivr.net/gh/zillionare/images@main/images/hot/quantfans.png\" width=\"200\"\u003e\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzillionare%2Fmarktwain","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzillionare%2Fmarktwain","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzillionare%2Fmarktwain/lists"}