AiToEarn Chrome Extension
AiToEarn 自维护的 Chrome/Edge 扩展,也是 Gitea Release 唯一允许打包发布的扩展源码,用于:
- 从当前网页采集标题、正文和图片。
- 在普通 HTTP 采集不足时复用当前 Chrome 标签页,等待动态页面渲染后回传正文、HTML、图片和链接。
- 在 AiToEarn 页面提供
window.AIToEarnDistribution分发桥接。 - 在 AiToEarn 页面提供独立的
window.AIToEarnInteraction互动桥接,不冒充旧官方扩展的完整能力。 - 复用浏览器现有登录状态检测内容平台账号。
- 将同一份 Markdown、HTML 或纯文本内容填入平台编辑器。
- 扩展弹窗从 COSE 适配器动态读取已完成受控填充验证的平台列表,并可将当前网页内容打开、填充到所选平台编辑器。
Browser Provider
AiToEarn 的 Browser Provider 使用当前 Chrome 登录态,不把平台 Cookie、Token 或 CSRF 信息上传到服务端。当前已接入 CSDN、掘金、简书、知乎、今日头条、百家号、网易号、搜狐号、InfoQ、腾讯云开发者社区、阿里云开发者社区、思否、51CTO、开源中国和腾讯内容开放平台(企鹅号):扩展读取平台稳定 UID,核对它与 AiToEarn 绑定账号一致后,在持久化发布任务中打开并填充编辑器。今日头条、百家号、网易号、搜狐号和 InfoQ 会将 Markdown 转为安全的富文本,保留标题、段落、列表、链接和图片。CSDN 只使用编辑器自带的签名请求客户端读取创作者资料,思否只从当前页面的 Next.js 会话数据读取 UID;网易号只接受创作者侧返回的 wemediaId,搜狐号只接受账号列表中的账号 ID,InfoQ 只接受用户接口返回的 UID,51CTO 只接受个人空间页面中可验证的稳定 UID,开源中国只接受官方账号接口返回的稳定 UID,企鹅号只接受页面中的稳定 userID / userId。
扩展支持服务端随发布任务下发经过签名安装、Schema 校验并固化版本身份的声明式 Browser Provider 快照。插件只能覆盖核心十五个平台的标题、正文与第一层草稿/发布按钮定义;平台 URL、账号检测和最终结果判断仍由扩展核心维护。扩展会再次严格校验平台、选择器、编辑器类型、内容格式、源提交和内容哈希,写入后回读标题、正文长度和图片数量。配置漂移或回读失败时保留编辑器并返回明确失败,不执行仓库代码,也不会把未知按钮当作核心动作继续点击。
Browser Provider 仅负责账号核对、编辑器填充和草稿/公开文章状态回读,不会自动点击最终公开发布按钮。所有已接入平台仍保留复制发布稿入口;未进入受控交接白名单的平台继续只支持手动复制,不会伪报“已同步”。
扩展弹窗还保留公众号的单次人工确认填充入口,但不把它伪装成 Browser Provider。其他旧 COSE 选择器不会出现在扩展平台列表中,也不能通过桥接接口绕过能力白名单;仅有选择器或静态平台配置不代表平台已经接入。
任务会复用已有编辑器标签页。标签页仍位于已保存草稿或公开文章时,扩展只返回并激活该标签页;如果标签页已离开任务页面,则在同一标签页重新进入编辑器并填充,不重复创建窗口。CSDN 只有 blog.csdn.net/:author/article/details/:id、掘金只有 /post/:id、简书只有 /p/:id、知乎只有 zhuanlan.zhihu.com/p/:id、今日头条只有 www.toutiao.com/article/:id 或 www.toutiao.com/item/:id、百家号只有 baijiahao.baidu.com/s?id=:id、网易号只有 www.163.com/dy/article/:id.html、搜狐号只有 www.sohu.com/a/:id、InfoQ 只有 xie.infoq.cn/article/:id 或 www.infoq.cn/article/:id、腾讯云只有 cloud.tencent.com/developer/article/:id、阿里云只有 developer.aliyun.com/article/:id、思否只有 segmentfault.com/a/:id、51CTO 只有 blog.51cto.com/u_:uid/:id 才记为已发布;带草稿标识的编辑器地址,以及网易号、搜狐号、InfoQ、51CTO 或开源中国页面明确提示草稿保存成功时才记为草稿。开源中国的公开文章 URL 尚未在真实创作者账号上验收,因此未知页面会进入“发布结果待确认”,不会伪报成功。
扩展默认只打开并填充编辑器,不替用户点击公开发布。微信公众号保存草稿及任何平台的最终发布仍需用户明确确认。
扩展弹窗和后台通知中的“成功”只表示平台编辑器已打开并完成内容填充,不表示内容已经公开发布。右键菜单“提取此页面到 AiToEarn”会把最近一次提取结果暂存到浏览器本地,随后打开扩展即可继续选择平台。
AiToEarn 后台触发浏览器采集时会优先复用同地址标签页;没有现成标签页时才在当前 Chrome 内创建后台标签页。普通采集完成后临时标签页会关闭,遇到登录、验证码或地区访问限制时则保留并激活页面,等待用户处理。
当前互动桥接只开放受控白名单:能力查询、抖音账号核对、评论列表、回复列表和单条人工回复。作品 ID、评论 ID、账号 UID、回复内容、游标和数量均由扩展校验,网页不能向扩展传入任意请求地址。发送回复前必须由用户在 AiToEarn 界面逐条确认,扩展会再次核对当前浏览器账号与所选 AiToEarn 账号,写请求不会自动重试,也不支持批量回复、自动回复或私信。扩展优先复用当前 Chrome 中已有的抖音标签页,没有可复用标签页时才创建非激活标签页,并在抖音页面上下文内发起带现有 Cookie 的请求。
上游来源
多平台检测与编辑器填充逻辑基于 doocs/cose,固定版本和许可证见:
distribution/cose/UPSTREAM.mddistribution/cose/LICENSE
AiToEarn 自行维护网页桥接、载荷协议、产品界面、打包和发布流程。
本地安装
- 从 Gitea Release 下载
aitoearn-extension-v<version>.zip。 - 将 ZIP 解压到一个固定目录,不要直接在压缩包内打开文件。
- 打开
chrome://extensions或edge://extensions。 - 开启“开发者模式”。
- 点击“加载已解压的扩展程序”,选择包含
manifest.json的解压目录。 - 回到 AiToEarn 页面并刷新,确认扩展状态和平台登录状态。
更新时,先备份当前加载目录,再用新 ZIP 中的文件替换该目录内容,然后在扩展管理页点击“重新加载”。如原目录已丢失,移除失效记录后将新 ZIP 解压到固定目录,再重新“加载已解压的扩展程序”。
打包
在仓库根目录执行:
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\scripts\package.ps1
脚本会校验 manifest.json、全部 JavaScript 语法、必需文件、互动桥接、分发桥接和 Browser Agent Provider 快照执行链,再输出:
dist/aitoearn-extension-v<version>.zip
ZIP 根目录直接包含 manifest.json,可以解压后加载。