Skip to content
doocsPublic

About

😃 md 编辑器使用的浏览器扩展,支持一键将文章同步到多个内容平台。

Topics

Resources

Contributing

Stars

777 stars

Watchers

3 watching

Forks

Repository files navigation

COSE

Create Once Sync Everywhere

License Chrome Web Store YouTube Bilibili

配合 doocs/md Markdown 编辑器使用的浏览器扩展,支持一键将文章同步到多个内容平台。

本插件在浏览器中运行,不向 COSE 服务发送用户信息。如需添加更多平台或改善同步准确度,欢迎提 Issue 或 PR。

使用方法

点击观看视频:Bilibili YouTube

  1. 先点击安装扩展 Chrome Web Store 然后打开 md.doocs.org 或本地开发环境
  2. 编辑 Markdown 内容
  3. 点击顶部的 发布 按钮
  4. 在弹出的对话框中选择要同步的平台
  5. 点击 确定 开始同步

首次同步到 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

媒体平台

微信公众号 今日头条 知乎 抖音文章 小红书 百家号 网易号 搜狐号 微博文章 B站专栏 豆瓣 少数派 X(Formerly Twitter) Articles

博客平台

CSDN 博客园 掘金 Medium 思否 InfoQ 简书 开源中国 51CTO

云平台及其开发者社区


腾讯云 腾讯云 阿里云社区 阿里云社区 华为云博客 华为云博客 华为开发者文章 华为开发者文章 百度云千帆 百度云千帆
支付宝开放平台 魔搭社区 魔搭社区 火山引擎 火山引擎 电子发烧友

开发者模式测试

Firefox 140 及更新的桌面版可从 GitHub Releases 下载签名后的 cose-<版本>-firefox.xpi,在 about:addons 的齿轮菜单中选择「从文件安装附加组件」。测试构建的 Firefox ZIP 可在 about:debugging 中临时加载。

  1. 从本仓库的 GitHub Release 下载 cose-<版本>-chromium.zip 并解压,也可以从 Actions 的 CI 运行中下载 cose-extensions,再解压其中的 Chromium 包
  2. 打开 Chrome 浏览器,进入 chrome://extensions/
  3. 开启右上角的 开发者模式
  4. 点击 加载已解压的扩展程序
  5. 选择解压后包含 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* 标签。

Firefox 签名配置

  1. 使用维护 cose@doocs.org 的 Mozilla Add-ons 账号生成 AMO API 凭据。
  2. 在 GitHub Actions Secrets 保存两个仓库密钥,AMO_JWT_ISSUER 对应 JWT issuer,AMO_JWT_SECRET 对应 JWT secret。
  3. 发版任务使用 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。

Edge 商店自动提交

  1. 在 Microsoft Partner Center 的 Microsoft Edge → Publish API 启用 API v1.1,获取 Client ID 和 API Key。在 COSE 的产品概览页获取 Product ID(GUID)。商店详情链接中的扩展 ID 用于定位公开页面。
  2. 在仓库的 Actions Secrets 新增 EDGE_API_KEY、EDGE_CLIENT_ID 和 EDGE_PRODUCT_ID。两个 ID 也可以存到 Actions Variables,同名 Secret 优先。
  3. 版本号递增合入 main 且 CI 通过后,Edge 任务会上传与 Chrome 商店相同的 Chromium ZIP。任务确认上传成功后提交审核,操作 ID 会出现在日志中,审核进度可在 Partner Center 查看。

补提已有版本时,在 Actions 的 CI 工作流选择 main,将 edge_store_action 设为 submit,并在 release_commit 填入要提交的完整提交 SHA。若上一次请求仍在处理或审核中,先在 Partner Center 核对状态。

About

😃 md 编辑器使用的浏览器扩展,支持一键将文章同步到多个内容平台。

Topics

Resources

Contributing

Stars

777 stars

Watchers

3 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages