Repository navigation
Releases: codeugar/comment-link-assistant-extension
Release list
v0.10.0 — 归档的计划可以恢复了
归档从此不是单程票。这一版还顺手拆掉了一条早就不存在、却还写在代码里的限制,并修好了计划管理页选错计划的问题。
改了什么
归档的计划可以恢复了
以前:一个计划归档之后就锁死了——改不了名、加不了链接、跑不了批次,界面上只剩一个红色的「永久删除」。想把它拿回来用,唯一的办法是删掉重建,之前跑过的批次、发出去的评论、失败记录全部作废。而实际上归档什么都没删,只是给计划打了个「已归档」的标记,数据一直好好躺在那儿。
现在:归档后的计划详情页多了一个「恢复计划」,在「永久删除」旁边。点一下,计划立刻回到可用状态,链接、批次、运行记录、失败历史原样都在。
一个细节:归档会把计划原来的状态盖掉,所以恢复时不是无脑写回「进行中」,而是按这个计划的批次重新算一遍——批次在归档前就已经全部跑完的,恢复后显示「已完成」,不会假装还有活没干;同时顺便把已处理、已提交、失败这些计数也刷新一遍。
同一个推广网站可以有多个进行中的计划
代码里写着一条限制:一个推广网站同时只能有一个未归档的计划,想再建一个得先把旧的归档掉。界面上还配了一句提示语「该推广网站已有未归档计划,请先归档旧计划。」
但这条限制其实早就被拆掉了——数据层没做唯一性约束,建计划时不检查网站,后台也不拦。剩下的只是一个没人抛出的错误码、一段界面上匹配它的代码,和那句永远不会弹出来的提示语。你实际上一直可以给同一个网站建多个计划,只是读代码的人会以为不行。这次把这三处一并删掉,代码和实际行为对上了。
点了某个计划,页面却跳到另一个计划上
以前:计划的编号里带一个冒号(plan:abc),写进网址时冒号会被转义成 %3A,但读回来的时候没有还原。于是程序拿着一个还原不了的编号去找计划,一个都对不上,只好退而求其次——自动选中列表里第一个进行中的计划。
你会碰到的情况:把当前正在看的计划归档掉,页面莫名其妙跳到了另一个计划上;想马上撤销归档,还得先勾上「显示已归档」,在列表里把它翻出来重新点开。另外,刷新页面、或者从收藏夹打开某个计划的链接,打开的也不是你要的那个,总是落到第一个。
现在:网址里的编号会正确还原。归档完页面停在原地,「恢复计划」就在眼前,点一下就撤销了;刷新和链接直达也都能回到正确的计划。
安装
下载 comment-link-assistant-extension-0.10.0-chrome.zip 解压,在 chrome://extensions 打开开发者模式,「加载已解压的扩展程序」选解压出来的目录。扩展 ID 是固定的(gmdfkglpanbbilahmjfhmekegphloicl),覆盖安装不会丢数据。
v0.9.1 — WordPress.com 评论框终于能加载出来了
跑批时 WordPress.com 站点整批失败的问题修好了。以前面板上报 VERBUM_COMMENT_FORM_TIMEOUT(显示「无表单」)或 PAGE_COMMAND_TIMEOUT(显示「失败」),一条外链都拿不到。
修了什么
WordPress.com 的评论框永远等不到(两种报错,同一个原因)
以前:扩展新开的工作标签页是后台开的,你人在看仪表盘,那个页面从头到尾没被显示出来。而 WordPress.com 的评论框不是随页面一起出来的,页面里只有一个空壳子,真正的输入框和按钮要等浏览器真的在画这个页面的时候才挂上去——它靠 IntersectionObserver 检测评论区是否进入可视区来决定下不下载那段代码。后台标签页不绘制,这个检测一次都不会触发。
所以「滚到评论区 + 等 60 秒」这套做法,在后台标签页里等多久都没用。实测:页面开了 243 秒,requestAnimationFrame 不触发、IntersectionObserver 不回调、评论框壳子始终是空的。等待时间还把整条命令的 75 秒上限撑爆,于是同一个问题分裂成了两种报错。
现在:扩展直接调用页面自己的脚本注册表把那段代码要过来,不再依赖「页面被看到」这个前提。在隐藏标签页里实测五个站点,评论框在请求后 1~2 秒挂出来。既然不用再干等,等待窗口也跟着收紧:预检 60 秒 → 30 秒,页内等待 60 秒 → 15 秒。一次分析的最坏耗时从约 135 秒降到约 58 秒。
评论明明发出去了,却显示「提交结果未确认」
以前:WordPress.com 开了订阅弹框的站点,提交评论后页面不跳转——它在后台把评论提交掉,然后弹一个让你填邮箱订阅的小框,把带评论编号的回执地址扣在手里,等你关掉框才跳过去。扩展拿不到回执,只能一直等到超时报「未确认」。实际发生过的情况:一条评论在目标站上确确实实已经公开显示(编号 comment-78757,外链完好),面板上却记成未确认。
现在:提交后如果出现这个订阅框,扩展点一下它自己的关闭按钮(「Continue reading」),Verbum 就会跳到刚发出的那条评论,回执照常拿到。邮箱输入框和订阅按钮一个都不碰,不会替你订阅任何东西。
慢站点被误判成「打不开」
后台标签页的请求会被 Chrome 降低优先级,实测这些博客要 15~40 秒才能把页面提交出来。原来 30 秒就放弃,把正常的慢加载记成了打不开的页面。现在放宽到 60 秒。
看板里选中的方案会跳回上一个
点某个方案,界面有时会弹回之前选中的那个。路由地址和组件内部各存了一份「当前选中哪个方案」,而地址要经过一个异步事件才传到界面,中间有机会被旧值覆盖。现在只保留路由这一个来源,切换即时生效。
安装
下载 comment-link-assistant-extension-0.9.1-chrome.zip 解压,在 chrome://extensions 打开开发者模式,「加载已解压的扩展程序」选解压出来的目录。扩展 ID 是固定的(gmdfkglpanbbilahmjfhmekegphloicl),覆盖安装不会丢数据。
Full Changelog: v0.9.0...v0.9.1
v0.9.0 — 匿名读页判定发布,不再信提交跳转
一条评论算不算发布出去了,现在由一次匿名读取目标页面决定,而不是看提交后跳转的网址。
修了什么
以前:网站接收评论后跳转的网址里带了个 #comment-123 之类的编号,扩展就当作发布成功。但网站把评论扣下审核、丢进垃圾箱、或者事后删掉,跳转的网址都长这样。结果是面板上一片绿,实际一条外链都没拿到。
现在:不带任何 cookie、绕开缓存重新读一遍那个页面,在页面上真的找到这条评论、并且链接确实在评论里,才算「已显示」。
这一版还修掉了上一轮判定改造里遗留的四处误判:
- **默认主题的评论被误报成失败。**判定用字符串标记切 HTML,其中一个标记是
<footer——而 WordPress 核心每条评论开头就是<footer class="comment-meta">,作者署名的链接正好在里面。切片切在那里,一个链接都找不到,于是把一条真实存在的外链记成了终态失败「已显示,链接被删」。现在按 DOM 解析,评论的边界就是它自己那个元素。 - **
comment-only模式全部被记成失败。**这个模式本来就不放链接,但复查任务还是拿推广站地址去评论里找链接,找不到就判失败。现在判定标准跟着任务一起传下去。 - **子目录站被别的站判定。**REST 地址原来是拿
域名 + /wp-json/拼的,WordPress 装在子目录时这会打到根目录上另一个站点。现在只用页面自己公布的地址,拼不出来就不问。 - 重试会重复发评论。「已显示,链接被删」被算进失败列表,而「重试失败的目标」用的就是这个列表,重跑等于在一篇已经挂着自己评论的文章下再发一条。现在它算失败,但永远不进重试。
另外:只靠评论文字匹配(没有服务器给的评论编号)时,不再给出任何终态失败结论——文字像不代表就是你的评论。
新增
- 手工添加的复查条目如果只填了页面地址、没有
#comment-123永久链接,会明确标出「需要评论永久链接」,因为这种条目无法确定页面上哪条评论是你的,任何结论都不可信。 - 匿名读取带一次性参数绕开整页缓存。不加这个参数的话,装了缓存插件的站会返回评论发出之前的旧页面,刚发的评论一律被判成没公开。
安装
下载 comment-link-assistant-extension-0.9.0-chrome.zip 解压,在 chrome://extensions 打开开发者模式,「加载已解压的扩展程序」选解压出来的目录。
Full Changelog: v0.8.0...v0.9.0
v0.8.0 — 发起运行收归看板,侧边栏可续跑
安装
下载 Assets 中的 comment-link-assistant-extension-0.8.0-chrome.zip(不要下载 Source code),解压后在 chrome://extensions/ 开启开发者模式,点「加载已解压的扩展程序」选择解压目录。
从旧版升级:把新包解压覆盖到原来那个文件夹,然后点扩展的 ⟳ 刷新。不要点「移除」再重装 —— 移除会连同本地数据一起删除。
修复
外链发成了别的站的域名。
运行时用的推广 URL 取自 batch.websiteProfile.url,它优先于这次运行自己 settings 快照里记录的推广站。一旦这份网站资料属于另一个站,评论里的链接就指向那个站,而且发出去就收不回来。
侧边栏正是能造出这种错配的地方:它在开跑前先抓一份推广站资料做预览,而这中间当前站点可能被别处改掉——在看板新增一个站会顺带把它设为当前站,侧边栏的预览却还停在旧站上。
现在推广 URL 只认这次运行自己的 settings 快照,网站资料只提供标题和描述。
变更
发起运行统一收归看板。
侧边栏不再能发外链。移除:批次设置与确认面板、推广站资料预览、单条与批量重试、历史批次重跑、到期计划的「立即执行」横幅。背后的 batch.start、batch.preview、batch.retry-items、batch.retry-from-history、plan.run-next 五个消息处理器,以及只被它们引用的两个模块一并删除。
这不只是收窄入口。运行的推广站从此只能来自计划——计划在创建时就记下了推广哪个站,看板卡片上显示的域名就是它会发的域名。启动路径只剩一条之后,「资料属于 A 站、运行属于 B 站」这种组合在结构上不再拼得出来。
侧边栏保留它擅长的部分:跟进度、逐条查看节点时间线、处理登录与验证码这类需要人工介入的卡点、停止、复制诊断信息、查看历史。
新增「继续运行」。
停止批次后,直接在侧边栏点「继续运行」就能接着跑,不用回看板。
它用快照 id 反查自己属于哪次看板运行,所以侧边栏不需要知道 planId,看板那边也接成同一条运行,不会多出一条对不上的记录。
进度不丢:没跑完的目标回到队列重跑,已提交、已发布、已失败的保持原状;已经点过提交按钮的目标保留 prepared 数据走验证路径,不会重复发一遍评论。
按钮只在真能继续时才出现——用的是 resumeStoppedBatch 自己那份判断,不会出现点了报错的情况。
其他
- 清理 24 个失效文案键和对应的失效样式
- e2e 增加 T5R:接着停止用例停下的运行,从侧边栏续跑,断言目标数不变、没有目标残留在 stopped 状态
v0.7.0 — 网站管理页与锚文本用词统计
安装
下载 Assets 中的 comment-link-assistant-extension-0.7.0-chrome.zip(不要下载 Source code),解压后在 chrome://extensions/ 开启开发者模式,点「加载已解压的扩展程序」选择解压目录。
从旧版升级:把新包解压覆盖到原来那个文件夹,然后点扩展的 ⟳ 刷新。不要点「移除」再重装 —— 移除会连同本地数据一起删除。本次 manifest 变更了权限,必须刷新才生效。
新增
网站管理页
站点资料和锚文本配比从设置抽屉搬到独立的导航页,与「计划管理」平级。左侧站点列表,右侧站点资料和锚文本配比。设置抽屉精简为评论模型、API Key、界面语言和数据备份。
锚文本用词统计
账本现在记录具体用词,不再只记类别。每一类下方列出已发布的用词和次数,按次数排序,条形长度按该类最高的一条归一化。
统计从本版本开始记录,此前发布的外链只有类别总数、没有用词明细。两者对不上时会明确写出「另有 N 条没有留下用词记录」,不会拿一个不闭合的列表糊弄过去。
计划的每批条数可以改了
计划详情页的「编辑计划」中除了名称,多了每批条数。只有还没开始的批次会重新分组;跑过的批次保留原有条数和批次号,目标行的 id 和序号都不变。批次运行中也允许改 —— 那正是发现每批太大的时刻。
修复
- 词池输入框打不出空格和换行。 原本每次按键都把解析后的结果渲染回去,尾部空格和换行当场被吃掉,多词锚文本根本无法手动输入。
- 站点域名权限改为安装时授予。 读取推广网站自身的标题和描述是一次跨域请求,此前只有恰好为该域名跑过批次才有权限,导致「用 AI 生成兜底词」在新站上必然失败。添加站点本身就是授权,不该再问一次。
- 生成兜底词失败时报出真实原因,不再一律返回「请检查模型 API Key 和网站链接」。
- 侧边栏版本号写死在 0.4.0,已改为从 manifest 读取。
权限变更
http://*/* 和 https://*/* 从可选权限改为安装时权限。安装提示会变成「读取和更改您在所有网站上的数据」——这正是扩展打开任意博客、识别评论表单并提交评论所需要的权限。代价是提示更醒目,收益是运行过程中不再逐站弹窗。
校验
650 个单元测试、8 个真实 Chromium 端到端测试通过,扩展页面控制台零错误。
校验和
4367124108c081507b0b66ac018860d077ea58e2496bc6064e18db8e856aaa08 comment-link-assistant-extension-0.7.0-chrome.zip
v0.6.0 — 数据备份、稳定 ID 与批次可靠性
⚠️ 从 v0.5.x 升级必读(一次性迁移)
本版本固定了扩展 ID(manifest key)。直接替换会导致旧数据不可见,请按顺序:
- 旧版插件里:设置 → 数据备份 → 导出数据(保存 JSON)
- 移除旧插件,加载 v0.6.0(解压 zip 后"加载已解压的扩展程序")
- 看板首装横幅 → 导入数据 → 选第 1 步的 JSON
完成后 ID 固定为 gmdfkglpanbbilahmjfhmekegphloicl,以后所有更新数据自动保留,无需再迁移。
新增
- 数据导出/导入:设置 → 数据备份,一个 JSON 携带全部配置(站点、API Key、外链库、过滤列表、批次历史、看板计划数据),导入前弹确认
- 稳定扩展 ID:manifest key 固定 ID,换目录/重装数据不丢
- 设置迁移至看板:看板设置抽屉完整可编辑;侧边栏精简为打开看板 + 批次控制
- Playwright E2E 冒烟挡板(
npm run e2e)
修复
- 停止批次立即生效(实测 <300ms;此前可能卡"停止中"数分钟且批次继续跑)
- 慢页面提交成功不再误报失败:提交后 90 秒轮询验证 + 认 WordPress
#comment-<id>回执;错误文案匹配限定评论表单区域;跳转提交加载宽限 120 秒,未确认结果 180 秒窗口内重验 - 外链库导入预览显示解析行列表与友好错误文案(不再漏渲染/裸错误码)
校验
shasum -a 256 -c comment-link-assistant-extension-0.6.0-chrome.zip.sha256
v0.5.1
修复外链库只保留域名、丢失博客文章路径的问题。\n\n- 外链库现在保存完整文章 URL,包括路径和查询参数\n- 同一域名可保存多篇文章,并按完整 URL 去重\n- 从外链库新建计划时直接使用完整 URL,可正确定位评论表单\n- 批量导入、搜索和中英文界面同步支持完整 URL\n- 登录/CAPTCHA 跳过规则继续按域名聚合\n\n安装时请下载 Chrome extension ZIP,解压后在 Chrome 扩展程序页面选择“加载已解压的扩展程序”。不要下载 GitHub 自动生成的 Source code 压缩包。
v0.5.0
新功能
- 新建计划可直接从外链库搜索、跨页选择并导入目标域名
- 外链库支持勾选域名后一键打开统一的新建计划流程
- 运营看板与新建计划弹窗支持创建推广网站,创建后自动继续计划
- 推广网站 URL 统一规范化为 HTTPS,并校验重复网站和数量上限
- 执行遇到需要登录或 CAPTCHA 的网站时自动跳过,并加入域名级过滤列表
- 后续同域名及子域名目标会在打开页面前自动过滤
安装
- 下载 Chrome extension ZIP,不要下载 GitHub 自动生成的 Source code。
- 解压 ZIP。
- 打开
chrome://extensions并启用开发者模式。 - 点击“加载已解压的扩展程序”,选择解压后的目录。
验证
- TypeScript、Biome lint、生产构建通过
- 51 个测试文件、532 个测试全部通过
- ZIP 内
manifest.json版本为0.5.0
v0.4.0 — 外链库、批量导入与自动跳过
v0.4.0
主要更新
- 插件首次安装默认使用简体中文,可在设置中切换 English。
- 外链库升级为独立看板页面,展示域名总数、Dofollow、Nofollow、匿名评论、无需人机验证等统计。
- 外链库支持搜索、筛选、分页、新增、编辑、删除,以及 TXT、CSV、XLSX、XLS 批量导入。
- 新建计划支持 Excel 文件;外链和计划输入不再要求填写
http://、https://或www.。 - 执行时遇到登录或 CAPTCHA 会自动标记域名、跳过当前目标并继续;已知受限域名会在打开页面前跳过。
- 修复旧批次迁移反复写入存储的问题,并增强 Excel 空工作表、混合列 CSV、重复域名元数据合并等边界处理。
安装
请在下方 Assets 中下载 Chrome extension ZIP,不要下载 GitHub 自动生成的 Source code (zip) 或 Source code (tar.gz)。解压后,在 chrome://extensions/ 开启开发者模式,选择“加载已解压的扩展程序”,并选中直接包含 manifest.json 的目录。
可使用随附的 SHA-256 checksum 校验安装包完整性。
验证
- TypeScript、Biome lint、生产构建通过
- 46 个测试文件、518 条测试全部通过
- Manifest V3,版本 0.4.0,默认 locale 为
zh_CN
Comment Link Assistant v0.3.5
Comment Link Assistant v0.3.5
首个公开安装版本。
主要功能
- 计划、批次、目标链接和执行进度看板
- DeepSeek 与 KIE Gemini 内容生成支持
- 评论表单识别、填写、提交回执与公开状态验证
- 待审核评论每 6 小时定时复查及手动复查
- 评论链接 dofollow / nofollow / ugc 状态记录
- Chrome 本地存储中的配置、历史与恢复状态
安装方法
- 下载
comment-link-assistant-extension-0.3.5-chrome.zip。 - 解压 ZIP。
- 打开
chrome://extensions或edge://extensions。 - 开启开发者模式,点击“加载已解压的扩展程序”。
- 选择包含
manifest.json的解压目录。
此侧载版本不会自动更新;升级时下载新版 ZIP、覆盖解压目录并在扩展管理页点击“重新加载”。
完整性校验
下载 SHA256SUMS.txt,核对 ZIP 的 SHA-256。