配合 doocs/md Markdown 编辑器使用的浏览器扩展,支持一键将文章同步到多个内容平台。
本插件在浏览器中运行,不向 COSE 服务发送用户信息。如需添加更多平台或改善同步准确度,欢迎提 Issue 或 PR。
- 先点击安装扩展
然后打开 md.doocs.org 或本地开发环境
- 编辑 Markdown 内容
- 点击顶部的 发布 按钮
- 在弹出的对话框中选择要同步的平台
- 点击 确定 开始同步
首次同步到 DEV.to 时,在 MD 发布列表的 DEV.to 一行点击「连接」。在 DEV.to 扩展设置 创建 API Key,粘贴到发布窗口中 COSE 提供的密码输入框,然后点击「连接」。密钥保存在本地浏览器扩展中。需要更换时,在同一行点击「更换 Key」并输入新密钥。
首次同步到自建 WordPress 时,在 MD 发布列表的 WordPress 一行点击「登录」。输入 WordPress 的 HTTPS 安装地址、用户名及「用户 → 个人资料」中生成的应用程序密码,允许 COSE 访问该站点。返回编辑器勾选 WordPress 并同步后,即可打开站点后台的草稿。正文中的图片保留原地址。
- 编辑一次,同步到多个平台
- 自动检测各平台登录状态
- 同步的标签页自动归入分组,便于管理
- 微信公众号同步时完整保留渲染样式并自动保存为草稿
更多想要添加的平台欢迎提 Issue !
已支持平台速查表(点击展开)
字母 平台 A 阿里云社区 B B站专栏、百度云千帆、百家号、博客园 C CSDN D 豆瓣、电子发烧友、抖音文章 H 华为开发者文章、华为云博客、火山引擎社区 I InfoQ J 简书、掘金、今日头条 K 开源中国 M Medium、ModelScope 魔搭社区 S 少数派、搜狐号、思否 T 腾讯云 W 网易号、微博文章、微信公众号 X 小红书长文、X(Formerly Twitter) Articles Z 支付宝开放平台、知乎 5 51CTO
Firefox 140 及更新的桌面版可从 GitHub Releases 下载签名后的 cose-<版本>-firefox.xpi,在 about:addons 的齿轮菜单中选择「从文件安装附加组件」。测试构建的 Firefox ZIP 可在 about:debugging 中临时加载。
- 从本仓库的 GitHub Release 下载
cose-<版本>-chromium.zip并解压,也可以从 Actions 的 CI 运行中下载cose-extensions,再解压其中的 Chromium 包 - 打开 Chrome 浏览器,进入
chrome://extensions/ - 开启右上角的 开发者模式
- 点击 加载已解压的扩展程序
- 选择解压后包含
manifest.json的目录
提交 PR、推送到 main,或在 Actions 手动运行 CI,都会检查格式、在模拟的微信公众号图文编辑器里验证 COSE 会把标题和正文填到正确的位置,并能传入含图片的正文,并构建 Chromium 和 Firefox 的生产包。CI 从 Chromium ZIP 加载扩展,在本地测试页确认页面和后台都能返回微信平台;Firefox 构建还运行 web-ext lint。两个包随本次运行保存七天。
合并前由维护者决定是否发版。新增平台、修复同步失败或内容丢失、恢复浏览器或平台兼容性,以及用户需要尽快安装的安全修复,都可以随 PR 发版。文档、测试、内部重构和常规依赖维护通常可以等到下一次发布。多个小修复也可以先合入,再用一个版本 PR 一起发。
要随 PR 发版,就在 apps/extension/package.json 递增版本。一般修复升补丁版本,例如从 1.3.7 升到 1.3.8,向后兼容的新功能可升次版本。合并到 main 后,CI 比较这次推送前后的版本。测试通过后,CI 将 Firefox 构建提交给 Mozilla 签名。签名完成后,CI 为本次构建的提交创建同名标签,并将 Chromium ZIP 和签名后的 Firefox XPI 一起发布到 GitHub Releases。版本相同的合并只运行 CI。需要手动补发时,仍可推送与对应提交版本匹配的 v* 标签。
- 使用维护
cose@doocs.org的 Mozilla Add-ons 账号生成 AMO API 凭据。 - 在 GitHub Actions Secrets 保存两个仓库密钥,
AMO_JWT_ISSUER对应 JWT issuer,AMO_JWT_SECRET对应 JWT secret。 - 发版任务使用 Unlisted 渠道。提交后只检查一次审核状态。如果 AMO 仍在审核,运行会结束并跳过发布。收到 Mozilla 审核通过通知后,在原来的 Actions 运行中选择「Re-run all jobs」。CI 会取回同版本的已签名 XPI,核对它与本次构建的内容,再继续发布。密钥缺失或审核失败时,任务会报错。
Mozilla 审核者可用 Node.js 22 和仓库指定的 pnpm 版本复现 Firefox 构建。在提交的源码归档根目录运行 pnpm install --frozen-lockfile,再运行 pnpm -C apps/extension run build:release --target firefox,产物位于 apps/extension/dist。
- 在 Microsoft Partner Center 的 Microsoft Edge → Publish API 启用 API v1.1,获取 Client ID 和 API Key。在 COSE 的产品概览页获取 Product ID(GUID)。商店详情链接中的扩展 ID 用于定位公开页面。
- 在仓库的 Actions Secrets 新增
EDGE_API_KEY、EDGE_CLIENT_ID和EDGE_PRODUCT_ID。两个 ID 也可以存到 Actions Variables,同名 Secret 优先。 - 版本号递增合入
main且 CI 通过后,Edge 任务会上传与 Chrome 商店相同的 Chromium ZIP。任务确认上传成功后提交审核,操作 ID 会出现在日志中,审核进度可在 Partner Center 查看。
补提已有版本时,在 Actions 的 CI 工作流选择 main,将 edge_store_action 设为 submit,并在 release_commit 填入要提交的完整提交 SHA。若上一次请求仍在处理或审核中,先在 Partner Center 核对状态。
