Skip to content

About

公众号发布安全台 · Writer Guard —— 写稿/排版/红线检测/封面/数据复盘,一个浏览器扩展全包

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

公众号发布安全台 · Writer Guard v1.29.3

给公众号小编用的合规工作台。写稿时拦红线,发文前给评分,被投诉有台账,发布后自动回填数据。

四个痛点对应四个动作:

你的问题 工具里怎么做
平台不给推荐 发布评分 + AI 治理,把「内容农场」信号压掉
触发侵权 素材台账 + 重复图预警 + 字体自查 + 品类专属词库
被平台删文 红线词实时拦截,在编辑器里当场标出来
手动录数据太累 后台数据自动抓取,回填到复盘看板

一、安装(Windows + Chrome / Edge,约 3 分钟)

  1. 地址栏输入 chrome://extensions(Edge 用 edge://extensions)
  2. 右上角打开 「开发者模式」
  3. 点 「加载已解压的扩展程序」 → 选择 writer-guard 文件夹
  4. 弹出欢迎页即成功

需要 Chrome 111+(用了 world: "MAIN" 注入,用于抓取后台接口数据)。

升级:改完文件回 chrome://extensions 点卡片上的刷新圆圈,不用卸载重装。


二、每天怎么用

1. 设定一次(只做一遍)

工作台 →「团队设置」→ 填操作人名字 → 勾选你的品类(办公 / 设计 / 开发)。

品类勾上之后,检测台会额外叠加该品类的专属红线。

2. 写稿

推荐路径:工作台 →「编辑台」,左边写 Markdown、右边实时看公众号排版,写完三种交付任选:

  1. 复制排版:富文本进剪贴板,粘到任何编辑器都带样式
  2. 写入编辑器:自动打开你已登录的公众号图文页,把排版好的正文和标题直接写进去(零配置)
  3. 推送草稿箱:官方接口直推草稿箱(需在「团队设置 → 公众号绑定」填 AppID / AppSecret)

也可以按老习惯:进 mp.weixin.qq.com 图文编辑页,右下角会出现「安全台」按钮,颜色随风险变:🟢 通过 / 🟡 有优化项 / 🔴 有必删内容;点开看详情:命中哪个词、在哪一句、为什么、怎么改。编辑台写好的稿子可点「送进检测台跑红线」直接送检。

3. 发文前 30 秒

工作台 →「检测台」→ 粘贴标题和正文 → 看三个数:发布评分 / AI 度 / 红线命中。

评分 < 80 或 AI 度 ≥ 40,先改再发。

4. 发布后抓数据

  1. 打开公众号后台 →「内容分析 → 图文分析」→ 点一次查询或翻页
  2. 保持这个标签页在前台
  3. 工作台 →「数据复盘」→ 点 「抓取当前标签页」
  4. 核对预览表,取消勾选不想写的行 → 点 「写入复盘看板」

新增的会新建记录,已有的会更新阅读/完读/在看数值。

5. 被投诉后 72 小时内

工作台 →「投诉看板」→ 登记(自动算 72 小时倒计时)→ 复制申诉模板 → 附上素材台账和原始录屏。


三、模块对照表

# 模块 干什么
1 编辑台 Markdown 写作 → 本地排版 → 一键进公众号(v1.17 新增)
2 检测台 红线词 + AI 痕迹 + 九项评分,支持品类叠加
3 标题改写 标题党 → 信息型标题,给 6 个候选
4 AI 治理 七个降 AI 痕迹手法 + 合规边界
5 字体自查 白名单可商用 / 黑名单需授权
6 素材台账 每张图记来源、凭证、到期日
7 重复图预警 感知哈希比对,撞图报警
8 模板库 测试环境段、反向结论、对比表、素材声明
9 截图标注 箭头 / 矩形 / 文字 / 马赛克
10 软件选题库 测过的软件、版本、风险、结论
11 投诉看板 投诉登记、72h 倒计时、申诉模板
12 封面设计 专业画布编辑器:图层、排版、模板、导出
13 多平台改写 一稿生成小红书 / 知乎 / B站 / 抖音版
14 数据复盘 后台抓取 + 手动录入 + 趋势图
15 团队设置 操作人、品类、CSV 台账互换、变更日志

四、品类专属词库

通用红线之外,按你实际写的品类再叠一层。工作台「团队设置」或检测台的品类条勾选即生效。

办公效率(4 条专属规则)

规则 级别 典型命中词
Office 激活 / KMS 必删 kms 激活、激活服务器、office365 共享、365 拼车、heu kms
账号拼车 / 代充 必删 拼车、共享账号、代充、租号、无限账号、教育版白嫖
模板资源转卖 高危 模板合集下载、稻壳模板、简历模板打包
自动化脚本风险 高危 自动打卡、虚拟定位、钉钉外挂、自动抢红包

设计创作(5 条专属规则)

规则 级别 典型命中词
Adobe 破解 必删 genp、amtemu、amtlib、x-force、adobe 全家桶、ps 破解
Figma / Sketch 授权滥用 必删 figma 教育版、席位共享、sketch 破解
字体包 / 素材包合集 必删 字体合集下载、商用字体打包、千图、摄图、素材网盘
AI 生成图商用风险 高危 ai 换脸、ai 写真、midjourney 共享、一键生成明星
素材授权误用 高危 样机免费下载、笔刷包、canva 破解、iconfont 商用

开发工具(6 条专属规则)

规则 级别 典型命中词
JetBrains 破解 必删 ja-netfilter、license server、idea 永久激活、无限试用补丁
经典破解重灾区 必删 navicat 注册机、ultraedit 注册码、beyond compare 破解、sublime 注册码
API Key / 账号共享 必删 apikey 共享、copilot 共享、代充、成品号、student pack 代领
代写 / 源码交易 必删 毕设代做、论文代写、源码出售、刷 star、课设接单
开源协议风险 高危 gpl 商用、agpl 闭源、二次闭源分发
爬虫与数据合规 高危 绕过反爬、ip 池搭建、批量采集个人信息、脱库

设计取舍:每个品类只收真正高频、真有处罚先例的雷区,不做关键词堆砌。误报比漏报更烦人——一个天天报错的工具你会关掉它。

加自己的规则:编辑 data/dict.js 里的 CATEGORY_RULES,结构同 REDLINE,回扩展页刷新即生效。

{
  id: 'my-rule',
  category: 'dev',
  name: '我的规则',
  level: 'block',        // block=必删 / warn=高危 / tip=提示
  why: '为什么危险',
  suggest: '怎么改',
  patterns: [/匹配词/g, /另一个词/g],
}

五、后台数据自动抓取

原理

公众号后台的数据是 XHR 异步加载的,抓 DOM 不可靠(表格经常换结构)。所以做法是:

  1. MAIN world 注入(content/net-hook.js)hook 掉 fetch 和 XMLHttpRequest,把接口响应的原始 JSON 转发出来
  2. 自适应提取(content/data-scrape.js)在 JSON 树里递归找「同时含标题字段和阅读字段」的对象数组
  3. 字段名模糊匹配,接口改名也能吃住
  4. DOM 表格兜底:接口没截到时,直接解析页面表格

能识别的字段名

数据 支持的字段名
标题 title / appmsg_title / msg_title / article_title / name
阅读 read_num / readnum / read_count / int_page_read_count / total_read
完读率 finish_rate / complete_rate / finish_percent / progress
在看 like_num / likenum / old_like_num / praise_num
分享 share_num / share_count / forward_num
涨粉 add_fans / new_fans / increase_fans
日期 date / stat_date / publish_date / sent_time(时间戳自动转换)

数值类型也做了归一:"0.42" → 42%,"860" → 860,1730419200 → 2024-11-01。

抓不到怎么办

按顺序排查:

  1. 是不是在数据页——抓取需要当前标签页是 mp.weixin.qq.com 下的数据页面
  2. 有没有触发过加载——先点一次「查询」或翻页,接口才会发请求
  3. 缓存是不是空的——点「清空抓取缓存」,回数据页重新点一次查询
  4. 接口完全没匹配上——说明公众号换了路径特征。改 content/net-hook.js 里的 PATH_HINT 正则,把你 F12 看到的接口路径加进去
  5. 字段没识别出来——改 content/data-scrape.js 里的 FIELDS 映射表

抓不到也不影响用——「录入一篇的复盘数据」手动填一直是可用的。


六、封面设计器

为什么不用 AI 直接画字

原工具的标题是写进提示词让模型画的。AI 画中文几乎必出错字——笔画缺失、生造字、字母混进中文里。封面上出现错字,比没有封面更伤专业度。

所以这里的分工是:

  • AI 只画底图:用「AI 底图」面板生成提示词,复制到任意绘图工具(即梦 / 豆包 / MJ / SD)
  • 文字全部本地排版:字体、字号、行高、字距、描边、阴影都由你精确控制

提示词里已经明确写了「不要出现任何文字」,负向词也带了「文字、字幕、标语、招牌文字、乱码」。

布局与折叠

左右两侧各有一条 15px 的三角按钮栏,默认两侧都收起,画布占满整个区域。

位置 内容 展开宽度 默认
左侧 工具面板:版式 / 尺寸 / AI 底图 252px 展开
右侧 属性面板:画布背景 → 图层 → 位置与尺寸 → 排版特效 278px 收起

左三角开合左边的工具面板,右三角开合右边的属性面板。

图层列表在右侧属性面板里,紧跟在「画布背景」下面——从上到下是「画布背景 → 图层 → 选中图层的属性」,一路顺着改,不用左右来回看。

加图层的按钮(文字/图片/矩形/圆形/线条)也跟着放在图层区块顶部。

点三角展开,再点收起。两侧可以同时展开,画布会自动重新计算缩放比例(适应窗口)。

在公众号页面内直接使用

装好扩展后打开 mp.weixin.qq.com,页面右下角有两个悬浮按钮:

按钮 颜色 作用
安全台 蓝 打开红线检测面板(右侧滑出)
封面 紫 在页面内全屏打开封面设计器,不跳标签页

封面覆盖层按 Esc 或点右上角「关闭」退出。数据走同一个 chrome.storage,和独立标签页打开的工作台完全互通——在里面做的封面,回工作台的素材台账能看到记录。

这就是「绑定」的意思:不用离开公众号编辑页,写完稿顺手就能出封面。

尺寸预设

预设 尺寸 说明
公众号首图 900 × 383 2.35:1,信息流会裁成 1:1
公众号次图 900 × 900 1:1,与首图同组
小红书竖版 1242 × 1656 3:4,最常用
小红书方版 1080 × 1080 1:1
小红书横版 1080 × 810 4:3
B站封面 1146 × 717 16:10
视频号 1080 × 1260 6:7

也可以填任意自定义尺寸。换尺寸时图层按比例迁移,版式不会散。

图层系统

五种图层:文字 / 图片 / 矩形 / 圆形 / 线条。矩形和圆形可互相切换。

  • 拖动移动,四角控制点缩放(文字层会等比改字号)
  • 顶部控制点旋转,接近 90° 倍数会自动对齐
  • 图层列表拖动排序即层级,双击改名
  • 每层可单独锁定、隐藏
  • 方向键微调 1px,Shift + 方向键 10px

图片的两种形态(别搞混)

工具栏和左栏各有一个加图入口,出来的东西完全不同:

入口 出来什么 用途
左栏「+ 图片」 图片图层:按原图比例,画布 45% 宽,居中,可拖动可缩放,插在当前选中层之上 往封面里放产品图、截图、图标
工具栏「上传底图」 背景图:铺满画布、只有一张、放最底层、不参与吸附 给整张封面垫底

背景图在图层列表里显示为「背景图」带 ▦ 图标。重复上传背景会替换旧的,不会叠成好几层。

双击画布上的图片图层可以直接换图,属性面板里也能改「填满裁剪 / 完整显示 / 拉伸」和圆角。

文字排版

字号、字重(300–900)、行高、字距、左中右对齐、颜色、描边、阴影、背景块(圆角+内边距)。

双击画布上的文字直接进编辑。

画布背景:三种模式

背景设置固定显示在属性面板顶部,不管有没有选中图层都能改。

模式 说明
纯色 单一底色
双色 线性渐变,可调角度
四角(默认) 四个角各一色,双线性插值融合

四角渐变

这是真正的四角插值,不是四色扇区——左上、右上、右下、左下各一个颜色,中间自动平滑过渡。

CSS 的 linear-gradient 只能两色,conic-gradient 是扇形放射,都做不出这个效果。实现是用 canvas 双线性插值:先在 64×N 的低分辨率画布上逐像素算四角插值,再用 imageSmoothingQuality: 'high' 放大到目标尺寸。这样既准确又快(每次改色只算 64×24 个像素)。导出时用同一套算法,屏幕和成图完全一致。

四角热区半径 56px:圆点本身只有 18px,鼠标稍偏就会落到画布上、误触发画布缩放。所以滚轮判断用的是「离哪个角最近且距离 < 56px」,不是「有没有命中圆点」。这样在角上随手滚都在换色,画布不会被放大缩小。

四角独立控制:

  • 画布四角各有一个小圆点(hover 才显现)
  • 滚该角的圆点 → 只改这个角的颜色
  • 点该角的圆点 → 取色器自定义

不会撞色:滚轮换色时会跳过另外三个角已经占用的颜色,整个色板被占满时才允许重复。测试里连续滚动 30 轮,每一步都校验四色互不相同。

属性面板里也有 2×2 的四角取色器(左上/右上 在上排,左下/右下 在下排),布局和画布位置对应。

一键插入公众号正文

封面设计器工具栏上有「插入编辑器」按钮,点一下就把当前画布生成图片塞进公众号正文。

三档降级,哪档能成就走哪档:

档 做法 说明
① 构造 paste 事件 最接近真人粘贴,微信编辑器会自己走上传
② execCommand('insertImage') 先把光标折到正文末尾,再插图
③ 写进剪贴板 提示「按 Ctrl+V 粘贴」,最稳的兜底

每档都会检查编辑器里 img 数量有没有真的变多,没变才降级。第 ③ 档加了 2 秒超时——没有用户手势时 clipboard.write 会一直挂着,不加超时整个流程就卡死。

两种打开方式:

  • 在公众号页面里点「封面」FAB → 设计器是 iframe → 用 postMessage 把 PNG 的 ArrayBuffer 发给父页面,父页面直接插
  • 在工作台标签页里打开 → 没有父页面,只能复制到剪贴板

所以想一键插入,请在公众号编辑页里打开封面设计器。

文件夹素材(20 个)

左侧「素材」页签里有 20 个文件夹样式的矢量素材,点一下插进画布,插入后就是普通图片图层——能拖、能缩放、能导出。

类型 素材
常用图标 文档 / 压缩包 / 图片 / 视频 / 音频 / 表格 / PDF / 代码
状态 加密(锁)/ 收藏(星)/ 云端(云)/ 设置(齿轮)
配色 黄 / 蓝 / 紫 / 绿 / 粉 五色文件夹
带文字 下载 / 资料 / 模板

带文字的三个支持修改:插入时会生成两个图层——文件夹图(不含字)+ 一个文字层。文字层就是普通文字部件,双击画布上的字直接改,字号颜色位置都能调。

实现上是 Canvas 矢量绘制(512×512),不是位图切图。所以放大不糊,导出也是清晰的。

带字素材在面板里显示带字预览(方便辨认),插入画布时用的是无字版本 + 文字层,这样字才能改。

双击画布直接改字

双击画布上的文字,原地出现输入框,直接改,不用去右边面板找。

操作 效果
双击文字 原地出输入框,内容全选
直接打字 正常输入,框会跟着长高
Enter 换行(文字支持多行)
Ctrl / ⌘ + Enter 提交
点别处 提交
Esc 取消,一个字都不改

细节:

  • 输入框字体、字号、字重、行高、字距、对齐都跟图层一致,改的时候看到的就是最终效果
  • 提交后自动重绘画布、刷新属性面板、触发自动保存
  • 文字一变,逐字着色会清空——因为字符索引对不上了,留着会串色
  • 锁定的图层双击不会进入编辑
  • 图片图层双击是「更换图片」,形状图层双击是选中

选中文字时,底部状态栏会显示「双击可直接改字」。

自动保存:改动即落盘,刷新不丢

画布上的每一次改动都会自动存,关掉页面、刷新、切走再回来,接着上次的继续。

工具栏右上角有状态指示:

显示 含义
保存中… 正在写盘(灰)
已保存 存好了(绿)
已保存(图片过大未存) 图层和排版存了,图片数据超配额被丢弃(橙)
已恢复上次编辑 打开时从存档恢复(绿)
保存失败 写盘出错(红)

存的内容:画布尺寸、背景(三种模式 + 四色)、所有图层(位置/大小/文字/字号/颜色/逐字色/描边/阴影)、缩放、选中项。

防抖 500ms:连续拖拽只落盘一次,不会把存储写爆。

图片配额兜底:图片以 dataURL 存在图层里,撑爆 chrome.storage 配额时自动降级成「不含图片」的版本再存一次,布局不丢,只是图片需要重新上传。

打开时的行为:有存档就恢复存档,没有才铺默认画布(一个占位标题)。

想重来怎么办:挑一个新模板点击就会覆盖当前画布,自动保存会跟着更新。

属性面板顺序

选中文字层时,右侧面板从上到下:

顺序 区块 说明
1 画布背景 常驻,随时可改
2 图层 列表 + 加图层按钮
3 逐字着色 紧跟图层,进面板第一眼就是它
4 文字内容 内容、字体、字号、颜色、对比度
5 描边 / 阴影 / 背景块
6 位置与尺寸 挪到后面了,调大小是次要操作
7 图层操作 上移/复制/删除

逐字着色提前是因为它用得最频繁——改标题里某几个字的颜色,不用再往下滚。

滚轮分工(容易搞混,记住这张表)

鼠标在哪 滚轮作用
画布上的文字 调字号(宽度等比跟走,排版不乱)
画布上的图片 / 形状 缩放图层
画布空白处 缩放画布
画布四角 56px 范围内 换该角的背景色(不会误触发画布缩放)
属性面板逐字着色的字块 换这一个字的颜色

逐字着色的用法:选中文字层 → 右侧面板「逐字着色」(在图层下面第一块)列出每个字 → 鼠标悬在某个字块上滚动,只有这个字换色,旁边的不动,并自动避开同层已用的颜色。

逐字着色

标题里想把某个词挑出来?点「逐字着色」面板里的字块选中要变的字,再点调色板上色。支持多选、全选、一键清除。

适合「三天看懂基金定投」这种只强调半句的做法。导出时按字符索引逐字绘制,和屏幕上完全一致——不会因为换行位置不同就对不上色。

对比度检测

每个文字层下面会显示它和实际背景的对比度比值:

比值 判断
≥ 4.5:1 清晰
3:1 – 4.5:1 偏弱,建议加深颜色或加描边
< 3:1 太低,手机上基本看不清

渐变背景取最差的那一端来算,不会出现「左边看得清、右边糊成一团」的情况。

方案预设

调好一版之后点「保存当前设计为预设」,下一期换个字就能用。预设存本地,最多 40 套,带尺寸和图层信息。

内置 8 个模板是「起点」,预设是「你自己的资产」——做久了这一栏比模板更有用。

滚轮与缩放

  • 悬停在元素上滚轮 → 缩放这个元素(文字改字号并同步改宽度,形状改宽高)
  • 画布空白处滚轮 → 缩放画布

不用先选中再去找按钮,鼠标在哪就作用于哪。

字体与侵权(重点)

字体下拉里每一项都标了商用状态:

  • ✓ 可商用:思源黑体/宋体、阿里巴巴普惠体、HarmonyOS Sans、MiSans、得意黑、站酷高端黑、霞鹜文楷、优设标题黑
  • ✗ 需授权:微软雅黑、苹方、方正兰亭黑、汉仪旗黑

选到需授权的字体会直接提示「字体公司索赔很常见」。没安装的字体也会标出来(显示时会回退到系统字体)。

封面是字体侵权最高发的场景,因为字体公司有成熟的爬虫取证流程。这个下拉框就是你的第一道防线。

版式模板

36 个开箱即用模板,按场景分组:

类型 模板
大字压场 深底大字 / 描边大字 / 角落大字 / 聚光灯 / 括号框 / 下划线强调
图文分区 左文右图 / 上图文下 / 色带压底 / 三分栏 / 左右对比 / 渐隐蒙版
极简留白 极简留白 / 极简线条 / 网格线 / 圆点阵 / 下划线强调
卡片系列 三联卡片 / 层叠卡 / 半透叠层 / 标签贴 / 编号徽章
数据清单 数据大字 / 序号清单 / 时间轴 / 报纸头版
图形装饰 斜切色块 / 斜条纹 / 环形聚焦 / 圆形焦点 / 波浪弧 / 箭头引导
风格化 引语体 / 代码风 / 双色对比 / 渐变条 / 杂志线框

每个模板都适配横版、竖版、方形三种画布尺寸,换尺寸不会错位。

每个模板按当前画布尺寸和横竖版自适应调整布局,不是死图。

应用模板、加载预设、删除预设都直接生效,不弹确认框,按 Ctrl+Z 就能撤销。

整个扩展已经去掉所有原生 confirm / alert / prompt:

原来弹窗的场景 现在怎么做
应用模板覆盖提示 直接应用,靠撤销兜底
加载预设覆盖提示 直接加载,靠撤销兜底
删除预设确认 直接删除
清空图片指纹 / 变更日志 直接执行,底部轻提示
CSV / JSON 导入确认 直接合并,结果显示在底部
预设起名输入 按画布主标题自动命名,双击可改
截图标注加文字 画布上浮出内联输入框,回车确认
抓取失败的操作指引 页面内提示块,不打断

需要说明的地方用页面内提示,需要输入的地方用内联输入框,全程不打断。

交互实现说明(踩过的坑)

画布上的图层 DOM 在每次重渲染时都会重建,所以事件监听必须用委托挂在不被重建的 canvas 上,不能逐个绑到图层元素上。早期版本用了「只绑一次」的守卫标记,结果监听绑在了已经被替换掉的旧元素上,表现就是「画布完全不能拖」。

现在 bindStageEvents 采用事件委托,命中优先级为:

控制点 > 图层本体 > 空白

这个坑已经用 9 项真实 PointerEvent 测试锁住,任何一次重构把绑定改回去都会立刻失败。

导出

PNG,宽图 1x、窄图 2x(高清)。导出时会自动往素材台账记一条来源记录,避免图做了却忘了登记。

快捷键

键 作用
Ctrl/Cmd + Z 撤销(50 步)
Ctrl/Cmd + Shift + Z 重做
Ctrl/Cmd + D 复制选中图层
Delete / Backspace 删除选中图层
方向键 微调位置 1px
Shift + 方向键 微调位置 10px

七、团队协作

为什么不做实时同步

扩展没有后端服务器。做真实时同步要部署服务、搭账号体系、处理冲突——那是另一个项目。对 3–10 人的小编团队,CSV 台账互换更实用:零成本、可审计、出问题能回滚。

流程

A 采集             B 导出              C 合并              D 回发
各自本地登记    →   每人导出 CSV   →   管理员依次导入   →   合并后的 CSV
名字写进操作人      发到群里           选「合并」          发回群里各自导入

合并规则

  • 按记录 id 去重
  • 同一条记录,谁的 updatedAt(更新时间)更晚,就保留谁的版本
  • 所以:改完一条记录要重新保存一次,否则时间戳没更新,合并不上

CSV 结构

第一列 _module 标记这是哪张台账(素材台账 / 软件选题库 / 投诉看板 / 数据复盘),后面是统一列名。枚举值导出成中文(自截自录、侵权、已申诉),导入时自动还原成代码——这样可以在 Excel/飞书里直接看懂和编辑。

变更日志

「团队设置」里有完整日志:谁、什么时候、新增或删除了哪条记录。合并前先看一眼,能避开大多数冲突。


七点四、红线命中给替换词

检测台识别到红线词后,每条命中都直接给出替换词,不用你自己想怎么改。

面板上长这样

[高危] 标题党 / 夸张表述              震惊
…这个永久免费的工具太强了 这里有破解版…
夸张标题被算法标记后不进推荐池…

  替换为  意外                       [替换]

改法:用"场景 + 具体结果 + 限定条件"替代…

点「替换」直接改输入框里那一处,改完自动重扫。删除类的按钮是红色,替换类是绿色。

公众号编辑器里的注入面板同样有替换词和「替换」按钮,点了直接改编辑器内容。

风险词库:8 组扩到 12 组

组 级别 例子
破解 / 盗版 阻断 破解版 / 激活码 / 注册机 / 白嫖
网盘导流 阻断 百度网盘 / 提取码 / 后台回复 / 加微信
翻墙代理 阻断 VPN / 科学上网 / 机场节点
医疗健康功效 阻断 治疗 / 根治 / 无副作用 / 祖传秘方
金融理财承诺 阻断 稳赚不赔 / 保本 / 高回报 / 翻倍
外部链接 警告 裸链 / 网盘域名
诱导互动 警告 点赞在看 / 转发朋友圈 / 集赞
标题党 警告 震惊 / 必看 / 神作 / 手慢无
广告法绝对化 警告 最 / 第一 / 国家级 / 100% / 永久
教育培训承诺 警告 包就业 / 保过 / 七天精通
违禁承诺 警告 保证 / 一定 / 立竿见影
商标授权 警告 官方认证 / 独家授权 / 央视推荐

加粗是这版新增的 4 组。词条总数从约 110 条扩到 230+ 条。

替换词怎么写

阻断级不给"换个词就能过"的假方案——比如「破解版」的替换词是「官方免费版」,意思是整句改写,不是把"破解"改成"官方"就完事。删除类(提取码、加微信、无副作用)的替换词是「(删除)」,点了直接清掉。

警告级给的是真能换的词:震惊→意外、永久免费→长期、最→比较好。

七点五、快速修改:一键降 AI 味

检测只是第一步。这一版加了改写引擎,两个入口:

入口 位置 行为
工作台 检测台「一键降 AI 味」 改写输入框内容,列出逐条修改,可「恢复原文」
公众号编辑器 注入面板底部「降 AI 味」 直接写回编辑器,按钮变「撤销降味」

它改什么

五类规则,全部是「高置信度、不会改坏语义」的替换:

类别 例子
删除套话 首先,/ 其次,/ 值得一提的是,/ 众所周知,/ 在这个…时代,/ 随着…的发展,
套话改写 综上所述 → 说白了 / 由此可见 → 所以 / 此外 → 另外 / 以下是三点 → 三条
黑话换白话 赋能→帮 / 闭环→完整流程 / 抓手→切入点 / 颗粒度→细致程度 / 底层逻辑→根本原因 / 降本增效→省钱省时间
修饰词收紧 非常强大 → 挺强大 / 极大地提升 → 大幅提升 / 令人惊叹 → 让人印象深刻
空白清理 多余空格、重复标点、行首空格、连续空行

实测效果

一段典型 AI 腔(首先其次再次 + 闭环赋能 + 底层逻辑颗粒度 + 众所周知):

改写前:AI 度 高,发布评分 22 分(存在阻断项,不要发)
改写后:AI 度 15,发布评分 73 分(可以发,有优化项)
        158 字 → 126 字,共改 16 处

三条局限(必须知道)

  1. 只动词,不改句子结构。规则硬拆句子只会更别扭,句式重构该交给模型。
  2. 句长均匀度改不了。AI 度里的「句长σ」这一项属于结构问题,要手动插短句。
  3. 缺真实细节改不了。版本号、报错原文、翻车记录这些必须你自己加。

规则改完还是要通读一遍。

组合词的处理(踩过的坑)

「形成了完整闭环」如果先被通用规则 闭环 → 完整流程 命中,会变成「形成了完整完整流程」。

所以词表顺序有硬约束:长串组合词必须排在同词根短规则之前。现在 形成了完整闭环、完整闭环、实现降本增效、底层逻辑清晰、颗粒度细 这些组合规则都在前面,且有专门的回归测试守着。

七点五二、AI 平台接入

设置页顶部有「AI 平台接入」,填 Key、自动验证、通过后自己收起,只留一个绿点。

支持的平台

平台 接口 默认模型
OpenAI api.openai.com/v1 gpt-4o-mini
DeepSeek api.deepseek.com/v1 deepseek-chat
智谱 GLM open.bigmodel.cn/api/paas/v4 glm-4-flash
月之暗面 Kimi api.moonshot.cn/v1 moonshot-v1-8k
阿里通义千问 dashscope.aliyuncs.com/compatible-mode/v1 qwen-plus
自定义 任意 OpenAI 兼容地址 自己填

流程

  1. 选平台 → 自动带出接口地址和模型名
  2. 粘贴 Key → 点「验证并保存」
  3. 验证通过 → 表单收起,变成一行:绿点 + 平台名 + 模型 + Writer Guard 徽章
  4. 侧边栏「封面设计」右侧亮起绿点(呼吸动画)

验证是怎么做的

先打 GET /models(免费、快)。返回 401/403 直接判定 Key 无效;接口不支持 /models(404)就退回一次 max_tokens: 1 的 chat 请求探活。

存储与刷新

存在 chrome.storage.local 的 wg_aiConfig 里,刷新不丢。字段:provider / key / baseUrl / model / verified / lastCheck / lastMsg。

24 小时静默复验

chrome.alarms 注册一个 24 小时周期的任务(background.js),到期后打一次验证接口:

  • 有效 → 只更新 lastCheck
  • 失效 → 把 verified 改成 false
  • 全程不弹通知、不动角标,下次打开设置页才看到「验证已失效」

设置页打开时也会调一次 silentRecheck(),但不到 24 小时不会真的发请求。

安全说明

Key 只存在本机浏览器存储里,不上传任何第三方服务器。验证请求直连你选的那家平台。

七点五三、手动检测模式

不自动扫描。 只有你点面板底部的「开始检测」,才会去读正文、跑一遍红线 + AI 痕迹。

这样做的原因:公众号编辑页是个持续变化的 DOM,自动监听要么漏(只等 30 秒)、要么一直占资源(MutationObserver + 轮询)。改成手动后:

  • 没有 MutationObserver、没有 setInterval、没有 input 监听
  • 打开面板不扫描,只回显上一次的结果;没检测过就显示「未检测」
  • 你在编辑器里改内容,检测结果保持不变,不会自己重扫
  • 想更新就再点一次「开始检测」

面板状态:

显示 含义
未检测 还没点过检测按钮
分数 + 标签 检测完成,显示上次结果
没找到正文编辑区 点了检测但没定位到编辑器,会告诉你怎么办

七点五四、面板一直显示「等待检测」怎么查

这个状态说明面板已经注入了,但没找到正文编辑区,或者扫描过程崩了。这一版修了两个原因:

原因一:只等 30 秒就放弃

旧代码每 500ms 找一个编辑器,找 60 次(30 秒)还没找到就彻底放弃,之后再也不会重试。公众号的编辑区是动态生成的——先开草稿箱、再点「新建图文」,编辑区出来时早就过了 30 秒。

现在改成三路兜底,永不放弃:

  1. 编辑器一建好就挂上(MutationObserver 盯 DOM 变化)
  2. 每 2 秒低频轮询一次,编辑器被替换了也能重新挂
  3. 手动点「重新检测」,立即重新查找

原因二:词库格式改了,这里的扫描器没跟上

content.js 里有自己的一份 scanRedline(公众号页面不加载工作台的 engine.js)。上一版把词库的 patterns 从裸正则改成了 { re, to } 带替换词,工作台的引擎改了,这里没改。

结果:拿到对象当成正则用,re.source 是 undefined,new RegExp(undefined, ...) 直接抛错。整条 buildReport → render 链断掉,verdict 永远停在初始文案。

现在两处都兼容两种格式,顺带把「替换词」也带进了面板。

现在的查找顺序

  1. 已知选择器(.ProseMirror / #js_editor / .edui-body-container …)
  2. 页面上任何 [contenteditable],取文字最多的可见的那个
  3. 同源 iframe 里找

三层都找不到,点「重新检测」会明确告诉你「没找到正文编辑区」,而不是干等着。

还找不到的话:把公众号编辑页的地址发我,我加对应规则。

七点五五、「降 AI 味」点了没反应怎么查

按这个顺序看:

现象 原因 处理
按钮写着「降 AI 味 (未加载)」且是灰的 改写引擎没注入,扩展没重新加载 去 chrome://extensions 点扩展卡片上的刷新,再 Ctrl+Shift+R
面板顶部弹红色横条,写着具体原因 看文字照做 红色提示停留 7 秒
按钮点了变成「撤销降味」,但正文没变 编辑器写回失败(公众号编辑器结构特殊) 去工作台改写后复制粘贴
按钮点了完全没动静,也没有提示 页面上的还是旧版 content script 重载扩展 + 强刷页面

这一版修的一个真 bug

公众号编辑器会动态重建 DOM。原来代码里缓存了 state.editor,编辑区重建后这个引用就失效了——元素已经不在文档里,focus() 打不上去,execCommand 也就无从下手,改写静默失败,界面毫无反馈。

现在改成每次操作前先验证:

function getLiveEditor() {
  const cached = state.editor;
  if (cached && document.contains(cached) && cached.isContentEditable) return cached;
  const fresh = findEditor();   // 失效就重新找
  if (fresh) state.editor = fresh;
  return fresh;
}

配合「按钮自检 + 红色错误提示」,以后点下去没反应的概率很低;万一失败,面板上会明说是什么原因。

七点六、关于本地去 AI 模型

你提到的 E:\每日更新\17\19\Gulang_extracted 我查过了,接不进来:

项 实际状态
程序 孤狼智写 v2.1.0(商业软件,需要联网激活)
授权 activation.json 里 is_active: false,日志「服务器拒绝授权」
模型 Mojiang.enc 未下载,日志「模型未找到」「降AI功能不可用」
CUDA 推理库 缺 3 个
本地 API 11434 / 8080 / 5000 / 7860 等端口全部未开放
权重文件 目录内无 gguf/bin 权重(只有 OCR 模型)

它是「专用降味模型 + Claude 兜底校对」的付费客户端形态,没有可调用的接口。

如果确实想接模型,可行路径是标准的 OpenAI 兼容接口:

  • 本地:Ollama(http://127.0.0.1:11434/v1),拉一个 qwen2.5 之类的中文模型
  • 云端:任何 OpenAI 兼容服务

告诉我服务地址、模型名、是否需要 Key,我把设置项和调用接上。接上之后,「一键降 AI 味」会先用规则改,再把规则改不动的句式问题交给模型。

七点五六、编辑台:Markdown 一键排版进公众号

从开源 skill md-to-wechat 的思路迁移而来,但做了两处关键改造:

  • 排版本地化:原版把 Markdown 交给第三方渲染服务换 HTML(要注册账号、记 THEME_ID、离线不可用);这里改成扩展内纯本地渲染,零网络、零依赖,样式全部内联(公众号编辑器只认内联样式)。
  • 推稿双通道:原版只有官方 API 一条路(AppSecret + IP 白名单,换 Wi-Fi 就 40164);这里默认走网页会话通道——在已登录的公众号页面里直接写入排版结果,不碰 AppSecret,也没有 IP 限制。

语法支持

写法 效果
# ~ ###### 标题(H2 按主题换样式:左竖条 / 居中线 / 粗下划线 / 反白色块)
**加粗** 主题强调色加粗
==关键词== 绿底高亮
~~长尾词~~ 紫底标注
> 引用 主题色左边线 + 浅底
- / 1. 列表 支持嵌套
表格 主题色表头
``` 代码块 灰底等宽
![图注](url) 居中插图,图注自动小字居中

主题内置 6 套:墨蓝 / 简约白 / 暖橘 / 松绿 / 红金(政务风)/ 商务灰。

预览是真机手机壳(375×740,带状态栏 / 公众号文章头 / 底部数据条),按读者手机上的实际效果排版;标题、作者改动会实时同步到文章头。可切「宽屏」对比。

三种交付

通道 前置条件 说明
① 复制排版 无 text/html 进剪贴板,粘到公众号编辑器即带样式
② 写入编辑器 公众号已登录 自动定位已打开的图文编辑页,模拟粘贴写入(三档降级:模拟 paste → insertHTML → innerHTML),同时回填标题
③ 推送草稿箱 AppID / AppSecret + IP 白名单 封面上传为永久素材、正文外链图自动转微信 CDN、直推草稿箱;40164 会直接告诉你微信看到的 IP

封面联动

  • 封面设计器每导出一次,编辑台就能「用设计器那张」直接拿最近一张当推送封面
  • 不选封面时,推送自动用正文第一张图,再不行用绑定设置里的默认封面
  • 本地上传的封面自动压到 900px 内,避免超微信 2MB / 10MB 限制

隐形字数(v1.20 新增)

「发布到公众号」卡片里、摘要下面多了一格隐形字数:

  1. 把想隐藏的文字直接粘进文本框(只存纯文本,代码不用管,自动存草稿)
  2. 点「确定 · 插入并复制」:自动生成隐形代码(135 编辑器同款思路,font-size:0 + 透明色兜底),追加到公众号正文末尾,同时富文本复制进剪贴板
  3. 编辑器会计入这些字数,读者看不到任何内容

AI 助手(v1.18 新增)

编辑台工具条下方多了一排「AI」按钮,直接复用「团队设置 → AI 平台接入」里配好的模型:

按钮 干什么
起标题 按正文要点出 6 个信息型候选标题,点一个直接用
写正文 按标题 + 素材生成 Markdown 全文(内置禁编造数据/荣誉的约束)
改写选中 选中一段改写,原地替换
降 AI 味 整篇去模板腔、排比堆砌,保留 ==高亮== 标记
生成摘要 80 字摘要自动填进摘要框

平台支持 OpenAI / DeepSeek / 智谱 GLM / Kimi / 通义千问 / 豆包(火山方舟) / 自定义 OpenAI 兼容接口。豆包选「豆包(火山方舟)」,填方舟 API Key,模型名填 doubao-1.5-pro-32k 之类或你的 ep-xxx 接入点 ID。

内嵌豆包 + 技能面板(v1.19 新增)

  • 工作台顶栏「豆包」按钮:右侧抽屉直接内嵌豆包网页对话;若内嵌页提示未登录,点「独立窗口」——工作台自动挤到左半屏、豆包占右半屏
  • 贴边技能面板(在豆包网页右侧):25 个预设技能分四类——写文章 7 / 起标题 6 / 去 AI 味 6 / 生图片 6,2 列卡片 + 搜索;点卡片直接把提示词插进豆包对话框;卡片右上角 ☆ 收藏进「收藏」分组;底部「+ 自定义技能」可存自己的提示词;鼠标移到关闭区自动折叠
  • 豆包回答 → 编辑台:在豆包页面划选回答文字,浮出「→ 编辑台」一键回填到编辑台正文
  • 豆包图片 → 公众号:豆包生成的大图悬停时浮出「插到公众号」,自动转发到已打开的图文编辑器插入正文(找不到编辑器会兜底复制到剪贴板)

与检测台互通

编辑台「送进检测台跑红线」一键把标题 + 纯文本送进检测台并自动开扫,写完即检。

IP 白名单(只有走通道③才需要)

公众号后台 →「设置与开发 → 基本配置 → API IP 白名单」加入本机公网 IPv4(设置页可一键查询)。换网络后 IP 会变,报 40164 就按提示把新 IP 加进去。网页会话(通道②)完全不受此限制。


七点五七、内置应用:智录笔记 / 情绪导演

工作台左侧新增「视频 · 图文工具」分组,两个完整独立应用原样内置(源文件一行业务代码没删):

  • 智录笔记:上传视频 + SRT 字幕 → 全视频截图廊(悬浮预览/滚轮切换/点击关闭)→ 笔记 + 画中画水印 → 封面生成器 → 一键复制到公众号;还带视频理解提示词生成器(解说/AI 视频/短剧/电影级 PPT 四种用途、人物预设、任务队列)、Aiy 短剧生产(视频生成 + 中文配音 + 历史记录)、演讲者模式(计时器/提词/字号调节)。
  • 情绪导演:粘贴分镜脚本/故事大纲/小说/口播文案 → 生成「脸·身·声·词」四重奏导演词(时间线精确到秒)+ 四重奏速览 + 五维导演评分卡;需在页面里填 Agnes API Key。

打开方式:工作台侧边栏,或扩展弹窗里的两个快捷按钮。右上角可「新窗口」独立打开、「重新加载」刷新。

和发布安全台的联动(内嵌打开时可用):

  • ✍️ 发到编辑台:智录笔记的图文会转成 Markdown(含截图、加粗、列表)追加进编辑台正文,标题自动回填;
  • 🛡 送合规检测:把当前内容送进检测台跑红线 + AI 痕迹评分。

技术说明:两个应用跑在 MV3 沙箱页里,数据(API Key、模板、水印预设、对话记忆)由扩展代管持久化,跨域请求(apihub.agnes-ai.com / Bing TTS)走扩展后台反代,导出文件由工作台落盘——功能与独立打开完全一致。源码备份在 tools/studio-src/,改动桥接后用 python tools/build-studio.py 重新生成。

沙箱适配的几个要点(v1.22.1+):

  • 文件选择:沙箱里 showOpenFilePicker 会抛 SecurityError("📄 SRT / 📁 视频"按了没反应的原因),桥接用页内文件框实现了同名 API,选择/拖拽都支持;
  • 公众号标题栏:预览区头部那两行示例说明文字换成了「公众号标题」输入框,点「插入到公众号标题」直接写进公众号编辑器的标题框(找不到编辑页时标题会存到编辑台,写入正文时自动带上);
  • 存档安全:写入改为"读最新档-合并-落盘",多处多开不再互相覆盖;unlimitedStorage 解除 10MB 配额;关页面/切后台前强制落盘;
  • 加载自愈:iframe 2.5 秒没握手自动换地址重试(最多 3 次),Edge 偶发的「此页面已被 Microsoft Edge 阻止」不用再手动刷新。

八、去 AI 审核

平台识别 AI 内容不是看单一特征,而是几个信号叠加打分。所以正解不是伪装,是把 AI 生成比例压下去,把真实经验密度提上来。这在平台规则内是允许且被鼓励的。

平台实际在看的五个信号

  1. 连接词密度 — 首先 / 其次 / 此外 / 综上所述 / 由此可见
  2. 句式均匀度 — 句长方差小,每句长度差不多
  3. 黑话密度 — 赋能 / 闭环 / 抓手 / 颗粒度 / 底层逻辑
  4. 段落长度方差 — 每段长度高度一致
  5. 有没有不可伪造的真实经验 — 具体型号、版本号、报错原文、失败记录

工具里的「AI 度」按这五项算出来,0–100 分,低于 40 才算安全。

判定逻辑有一处细节值得说:真人写短句流时句长方差也很小,但那是风格不是机器味。所以工具只在「平均句长 ≥ 18 字且长度趋同」时才判 AI,避免误伤。

七个手法(按效果排序)

1. 删掉所有连接词 首先、其次、再次、最后、此外、综上所述、由此可见、值得一提的是——这些是 AI 的骨架。删完之后段落靠事实自然衔接,机器味立刻掉一半。

2. 刻意打乱句长 插一句 5 字以内的短句,再写一句 40 字以上的长句。

❌ 该软件具有强大的功能和极致的用户体验,能够显著提升工作效率。 ✅ 启动 1.2 秒,导出一张 4K 图 3 秒。但设置项藏在三级菜单里,我找了十分钟。

3. 塞进不可伪造的具体细节 设备型号、软件版本号、具体日期、第几步出错、错误提示原文。AI 编不出真实的报错信息。

4. 写失败和翻车

我试了 6 个工具,5 个在第三页就开始乱码。

真实经验一定包含失败。AI 只写成功路径。

5. 换掉黑话 赋能、闭环、抓手、粒度——换成具体动作。

❌ 它可以帮助你实现降本增效,形成业务闭环。 ✅ 原来两个人做一天的活儿,现在一个人两小时。

6. 段落长度不要均匀 一段 2 行,下一段 8 行,再一段 1 行。

7. 加口语和自嘲

UI 丑得我差点卸载。但它现在是常驻工具。

AI 不会自嘲。

合规边界(这条别踩)

2025 年 9 月起施行的《人工智能生成合成内容标识办法》要求:AI 生成的内容需按规定标注。

务实做法:测试、截图、结论、踩坑全部自己完成,AI 只用于资料整理和排版。 这样既不用强制标注,也不会有 AI 味。

如果稿子确实是 AI 主写的,如实加一句辅助说明,比被平台识别出来的后果轻得多:

本文测试与结论由本人完成,写作过程中使用了 AI 工具辅助整理,全部内容经本人核实。


九、常见问题

Q:编辑器里没出现「安全台」按钮? 微信编辑器会改 DOM 结构。打开 content/content.js,把新的选择器加进 EDITOR_SELECTORS 数组(按 F12 找编辑区的 class 或 id),刷新扩展即可。

Q:点「抓取当前标签页」提示不是公众号页面? 抓取功能要求当前活动标签页是 mp.weixin.qq.com。先点「打开图文分析页」,在那个页面上操作。

Q:数据会传到哪? 不传任何地方。全部存在本机浏览器的 chrome.storage.local。换电脑前用「团队设置 → 导出 JSON 备份」。

Q:多台电脑怎么同步? 导出 JSON 备份 → 另一台「合并导入 JSON」。同一账号也可以用 Chrome 自带的扩展数据同步,但多人协作请走 CSV 流程。

Q:想先看看界面不想装? 直接双击 workbench/workbench.html,大部分功能能跑(数据存 localStorage)。抓取和编辑页拦截需要装扩展。

Q:改了词库怎么生效? 编辑 data/dict.js → 回扩展页点刷新圆圈。不用重新打包。


十、文件结构

writer-guard/
├── manifest.json           扩展配置(MV3,需 Chrome 111+)
├── background.js           后台服务
├── welcome.html            安装欢迎页
├── data/
│   └── dict.js             核心词库(通用红线 / 品类红线 / AI痕迹 / 字体 / 模板)
├── content/
│   ├── net-hook.js         MAIN world,hook fetch/XHR 截取后台接口
│   ├── data-scrape.js      接口 JSON 自适应提取 + DOM 表格兜底
│   ├── content.js          编辑页实时检测(含品类支持)
│   └── content.css
├── popup/                  工具栏弹窗
├── workbench/
│   ├── workbench.html      工作台主界面(13 个视图)
│   ├── workbench.css
│   ├── core.js             存储 / 路由 / 操作人 / 日志 / CSV 互换
│   ├── engine.js           检测引擎(红线 / AI / 评分 / 改写)
│   ├── mod-compliance.js   检测台 / 标题改写 / 字体自查
│   ├── mod-assets.js       素材台账 / 重复图
│   ├── mod-tools.js        模板库 / 截图标注 / 多平台改写
│   ├── mod-data.js         软件库 / 投诉看板 / 复盘 / 数据抓取`n│   ├── mod-cover.js        封面设计器(图层引擎 / 排版 / 导出)
│   ├── mod-settings.js     团队设置 / 品类 / CSV / 日志
│   └── app.js              启动
├── tests/
│   ├── syntax-check.html   语法检查(14 个文件)
│   ├── engine-test.html    引擎断言(31 项)
│   └── integration-test.html 集成断言(39 项:CSV往返/合并/抓取解析)
├── icons/
└── README.md

十一、视觉系统

这一版对界面做了一次系统性重做,不是零散调色。

字号阶梯

之前大量文字是 11–13px,长时间看很累。现在全部走 CSS 变量,最小 11.5px,正文 13.5px:

变量 值 用途
--fs-xs 12px 徽章、辅助标签
--fs-sm 12.5px 说明文字、表格头
--fs-base 13.5px 正文、输入框、表格
--fs-md 14.5px 卡片内小标题
--fs-lg 16px 卡片标题
--fs-xl 19px 页面标题

行高从 1.65 提到 1.72,加 letter-spacing: .012em 让中文不挤。

字体栈

中文优先,不再让英文系统字体抢占:

PingFang SC → HarmonyOS Sans SC → MiSans → Source Han Sans SC
→ Noto Sans SC → -apple-system → Segoe UI → Microsoft YaHei

配色与质感

  • 品牌色从单色蓝改为 蓝紫渐变(#2563eb → #7c3aed),主按钮、选中态、logo 都用它
  • 三档阴影(--shadow-xs/sm/lg),卡片浮起、hover 加深
  • 圆角 13px,输入框 9px,徽章胶囊形
  • 顶栏毛玻璃 backdrop-filter: saturate(180%) blur(14px)
  • 侧边栏深色渐变 + 选中项发光

动态

  • 统一过渡曲线 cubic-bezier(.4,0,.2,1),时长 0.2s
  • 视图切换淡入上移
  • 按钮 hover 上浮 1px + 阴影加深,active 轻微回弹
  • 输入框 focus 时边框变色 + 3.5px 光晕
  • 表格行、卡片、缩略图 hover 有反馈
  • 评分环和 AI 进度条数值变化带动画

这一版修掉的两个渲染问题

AI 进度条不显示:原本用 <i style="width:61%"> 做进度,实际渲染宽度恒为 0(父容器 460px 正常、display:block、无 !important,换成 div 和固定 px 都一样)。改用容器渐变实现,不依赖子元素宽度:

bar.style.background = `linear-gradient(90deg, ${color} ${pct}%, #e7ebf2 ${pct}%)`;

评分环数字偏上:align-items: baseline + line-height: 78px 导致垂直不对齐,改成 align-items: center + line-height: 1,"分"字用 align-self: flex-end 贴底。

十一、自检

cd writer-guard
python -m http.server 8899

浏览器依次打开:

页面 期望结果
http://127.0.0.1:8899/tests/syntax-check.html RESULT: ALL PASS
http://127.0.0.1:8899/tests/engine-test.html RESULT: 31 pass / 0 fail
http://127.0.0.1:8899/tests/integration-test.html RESULT: 39 pass / 0 fail

十二、开源与分发(GitHub + Pages)

1. 仓库结构

writer-guard/
├── manifest.json          # 扩展清单(版本号以这里为准)
├── background.js          # 后台:数据抓取、豆包推送、跨域反代
├── content/               # 注入脚本:红线拦截、悬浮按钮、编辑器写入、后台抓数
├── workbench/             # 工作台:编辑台 / 检测台 / 封面设计 / 豆包侧窗
├── studio/                # 内置应用(智录笔记 / 情绪导演)构建产物
├── data/                  # 词库
├── icons/ popup/ welcome.html
├── docs/                  # GitHub Pages 落地页(index.html + assets/)
├── tools/                 # 测试与构建脚本(不打包进发布 zip)
├── tests/                 # 测试夹具页面
├── screenshots/           # 开发截图
├── LICENSE                # 保留所有权利声明
└── dist/                  # 打包产物(已 gitignore)

2. 发布到 GitHub(已配置好的坐标)

  • 仓库:https://github.com/aiy51dev/writer-guard
  • 站点:https://aiy51dev.github.io/writer-guard/
  • 下载:https://github.com/aiy51dev/writer-guard/releases/latest

为什么不是 aiy51dev.github.io 仓库:那个仓库已被「资源导航页一键发布」工具占用 (站点根 https://aiy51dev.github.io/ 是它的导航首页),扩展单独开项目仓库,站点落在 /writer-guard/ 子路径,两边互不影响。脚本里也写死了这道保护(PROTECTED),禁止覆盖。

一键脚本(建仓库 / 上传代码 / 开 Pages / 传安装包 / 探活全包):

# PowerShell: $env:GH_TOKEN="ghp_xxx"    cmd: set GH_TOKEN=ghp_xxx
export GH_TOKEN=ghp_xxx
python tools/publish-github.py

令牌用 classic PAT 勾 repo(要顺带建 Release 就再勾 workflow)即可;脚本不写任何凭据到 .git/config。若 github.com:443 直连超时(国内常见),脚本走 api.github.com 的 Git Data API 上传(blob → tree → commit → ref),等价于一次完整提交,不需要 git 推流。

纯手动(网络好的时候):

git remote add origin https://github.com/aiy51dev/writer-guard.git
git push -u origin main
# 然后 Settings → Pages → Branch: main / 目录: /docs
# Releases → Draft a new release → tag v1.29.3 → 上传 dist/writer-guard-v1.29.3.zip

3. 发布一个新版本

  1. 改 manifest.json 的 version
  2. 跑 python tools/build-release.py → 生成 dist/writer-guard-v<版本>.zip(约 0.4 MB,只含运行时文件)
  3. GitHub → Releases → Draft a new release → tag 用 v<版本> → 上传这个 zip
  4. 落地页的「下载最新版」指向 releases/latest,会自动跳到新版本

扩展不能通过 GitHub Pages 安装:Chrome / Edge 只认「加载已解压的扩展程序」或商店上架。 Pages 只用来放落地页与文档,安装包走 Releases。

3.1 Pages 设置要点

  1. 仓库 Settings → Pages
  2. Source 选 Deploy from a branch,Branch 选 main、目录选 /docs(docs/.nojekyll 已存在,跳过 Jekyll 处理)
  3. 保存后等 1 分钟,地址即 https://aiy51dev.github.io/writer-guard/
  4. 落地页的仓库坐标写在 docs/index.html 的 var REPO 一处;站点所有资源都是相对路径,放在根路径或子路径都能跑(当前是项目站子路径)

4. 版权与免责

  • 本仓库为 保留所有权利(见 LICENSE):源码公开仅供查看与学习,复制、二次分发、商用、上架商店需书面许可
  • 与腾讯 / 微信官方无关,不承诺流量与收益
  • 不提供破解、刷量、规避审核等任何功能;词库里的「必删词」是拦截名单,不是玩法说明

十三、版本

  • v1.29.3 清单描述与仓库开源配套:新增 LICENSE(保留所有权利)、.gitignore、docs/ 落地页(GitHub Pages:功能卡片 + 真实截图 + 3 分钟安装 + FAQ + 版权免责)、tools/build-release.py(只打运行时文件,约 0.4 MB)
  • v1.29.2 编辑页豆包侧窗不再鼠标移开自动收起:侧窗保持一直显示,收起只由点击触发(点「豆包」图标、点 ×、Esc、打开安全台面板让位);iframe 持续存活,豆包回答不丢
  • v1.29.1 修复公众号编辑页豆包侧窗一直卡在「正在打开豆包…」白屏:doubao-side.html 的加载提示逻辑写成了内联 <script>,被 MV3 扩展页面 CSP(script-src 'self')直接禁掉——隐藏提示的 load 事件和 8 秒兜底从来没执行,白色提示层永远盖在豆包上,看起来像没登录;其实豆包(含登录态)早就加载好了。脚本抽成外链 doubao-side.js,提示文案不再误导「多半是没登录」,兜底缩短到 6 秒;测试加 4 条静态检查防回归(外链脚本 / 无内联 script / 文案)
  • v1.29.0 侧边栏「封面设计」移到「智录笔记」上方(视频·图文工具分组第一位);公众号图文编辑页右下角新增「豆包」悬浮按钮(就排在「封面」下面):点开右侧豆包侧窗(420px,底边自动贴在悬浮按钮组上方),外壳走扩展自带 doubao-side.html(懒加载 + 白屏兜底提示 + 新窗口入口),鼠标移开 220ms 自动收起 / Esc / × / 打开安全台面板时自动让位——收起只是隐藏,iframe 保持存活,豆包正在写的回答不会丢
  • v1.28.1 「写入编辑器」不再写进标题栏:编辑器定位重做(标题/摘要/作者短字段直接出局 + 面积/命中强度打分 + 同源 iframe 深挖,正文为空也绝不再按「文字最多」误选标题);修复 iframe 编辑器被移除后仍被缓存当活的(游离浏览上下文 contains 陷阱);正文先写、标题后填(原来先 focus 标题栏,execCommand 兜底会把整篇插进标题);插入完成后自检「正文变长才补标题,标题暴涨=写错地方」并给出明确报错。排版预览表头「写入编辑器」前新增「复制」按钮:带样式/图片/隐形字数的 HTML 直接进剪贴板,公众号正文 Ctrl+V 即可,不碰标题栏
  • v1.28.0 智录笔记 → 编辑台投递重做:截图不再把 base64 塞进正文(只留 ![截图1](wgimg:…) 短代号,真图进图库,预览/复制/写入时换回真图,图丢了显示灰框不显示代码);按钮文字/字幕条目不再混进正文;带底色段落转引用块、<mark> 转绿底高亮。编辑台 AI 按钮(起标题/写正文/改写/降AI味/摘要)没配 API 时只推右侧内置豆包侧窗:postMessage 之外新增后台注入兜底(content script 没注入也能填),不再自动开/切网页版豆包标签页,彻底失败时提示词复制走 + 用户主动点才开「右侧小窗」。豆包侧栏鼠标离开立刻自动收起(跨域 iframe 下用指针坐标判断,不再漏判)。封面复制高清化:导出倍率 2→3 倍(900×383 → 2700×1149),剪贴板同时带 text/html(微信按原图上传,不再重采样发糊)和 PNG
  • v1.27.0 封面「复制」按钮:整画布重渲染 PNG 走 ClipboardItem 同步手势写入,背景色和编辑内容一起带走
  • v1.26.0 未接 API 推豆包不再开网页版:内置 iframe 侧窗跨域 postMessage 握手填充发送
  • v1.16.0 封面「插入编辑器」:一键把画布插入公众号正文,三档降级(paste 事件 → execCommand → 剪贴板),每档校验 img 是否真的插入
  • v1.15.0 封面设计新增 20 个文件夹素材:Canvas 矢量绘制、点击插入画布、带文字的三个附带可编辑文字层
  • v1.14.0 新增 AI 平台接入:支持 OpenAI/DeepSeek/智谱/Kimi/通义/自定义,填 Key 自动验证、通过后收起只留绿点、侧边栏「封面设计」亮绿点;配置存本机刷新不丢;后台每 24 小时静默复验
  • v1.13.0 发布安全台改为纯手动检测:去掉 MutationObserver、定时轮询、输入监听,只有点「开始检测」才扫描;面板打开只回显上次结果
  • v1.12.1 修复发布安全台一直「等待检测」:编辑器监听改为永不放弃(DOM 变化 + 2 秒轮询 + 手动重检);修复 content.js 的 scanRedline 未适配新词库格式导致扫描崩溃
  • v1.12.0 内置版式从 16 个扩到 36 个,新增角落大字/斜条纹/引语体/标签贴/渐变条/网格线/聚光灯/括号框/下划线强调/层叠卡/编号徽章/时间轴/三分栏/渐隐蒙版/圆点阵/箭头引导/代码风/报纸头版/波浪弧/左右对比
  • v1.11.0 封面画布双击文字原地编辑:字体字号对齐跟图层一致,Enter 换行、Ctrl+Enter/失焦提交、Esc 取消;改字后自动清空逐字着色避免串色
  • v1.10.0 封面画布自动保存:每次改动防抖 500ms 落盘,刷新自动恢复;工具栏显示保存状态;图片超配额时降级保存;顺带修了脏尺寸导致四角渐变渲染崩溃
  • v1.9.1 修复「降 AI 味」在公众号编辑器里静默失败:编辑器缓存引用失效后改用实时查找;失败提示分级显示(红色错误停留 7 秒);引擎未注入时按钮直接标「(未加载)」
  • v1.9.0 红线命中给替换词:每条命中显示「替换为 X」+ 一键替换按钮;风险词库从 8 组扩到 12 组(新增医疗、金融、广告法绝对化、教培承诺),词条 110→230+
  • v1.8.5 四角加 56px 换色安全热区,角上滚轮不再误触发画布缩放
  • v1.8.4 属性面板重排:逐字着色提到图层下方第一位,文字内容紧随其后,位置与尺寸挪到属性末尾
  • v1.8.3 图层列表移入右侧属性面板(画布背景下方);左侧工具面板只留版式/尺寸/AI 底图并默认展开
  • v1.8.2 修正滚轮分工:画布上文字滚轮改回调字号;逐字着色的字块滚轮才换该字颜色
  • v1.8.1 左右面板内容归位:左侧放工具面板(图层·版式·尺寸·AI 底图),右侧放属性面板(画布背景·位置与尺寸·排版)
  • v1.8.0 背景改为四角渐变:四个角各控一色、canvas 双线性插值融合、滚轮换色自动避让不撞色;文字上滚轮切换颜色;模板 16 个;折叠按钮交叉控制
  • v1.7.0 背景设置常驻属性面板 + 画布四角调色热区;文字上滚轮切换颜色;模板扩到 16 个;两侧折叠按钮功能对调
  • v1.6.1 移除封面设计器的安全区(虚线框 + 说明文字 + 工具栏按钮全部去掉),画布不再有参考线干扰
  • v1.6.0 新增降 AI 味改写引擎:工作台一键改写 + 公众号编辑器内直接写回,带逐条修改清单与撤销;修复组合词叠加替换
  • v1.5.0 视觉系统全面升级:字号阶梯、字体栈、渐变配色、圆角阴影、过渡动效;删除安全区说明文字;修复 AI 进度条不显示
  • v1.4.0 左右面板改为三角按钮折叠(默认收起、tab 面板移到右侧);扩展绑定公众号页面:右下角新增「封面」入口,在页面内全屏打开设计器不跳转
  • v1.3.3 区分「图片图层」与「背景图层」:加图片不再变成铺满画布的底图;背景只留一张、不参与吸附;安全区文案改成直白说明并标出「参考线不可拖」
  • v1.3.2 修复画布拖动失效:事件绑定改委托模式,不再绑在会被重建的图层元素上;补 9 项真实鼠标交互测试
  • v1.3.1 去掉全部原生弹窗:应用模板/加载预设/删除直接生效,撤销兜底;预设自动命名可双击改;截图标注改用内联输入框
  • v1.3 封面设计器增强:逐字着色、WCAG 对比度检测、方案预设、滚轮分级缩放、圆形装饰、元素越界警告、BUILD 版本号
  • v1.22.2 修复/增强:①智录笔记「📄 SRT」「📁 视频」点了没反应——沙箱页禁止 File System Access 弹窗,桥接补了页内文件选择框(可拖拽);②Edge 打开内置应用偶发「此页面已被 Microsoft Edge 阻止」——studio 页补进 web_accessible_resources + iframe 握手看门狗自动重试,不用再手动刷新;③关掉再开数据丢失——存档改"读最新档-合并-落盘"(多开不再互相覆盖)+ unlimitedStorage + 退出前强制落盘;④预览区头部说明文字替换为「公众号标题」栏,点「插入到公众号标题」直接写进公众号编辑器标题框
  • v1.22 新增:内置两个完整独立应用——「智录笔记」(视频+字幕→全视频截图廊→笔记→封面→公众号图文,含视频理解提示词生成器、AI 短剧生产、电影级 PPT 演讲者模式、AI 对话助手)和「情绪导演·脸身声词四重奏」(分镜/大纲/小说/口播 → 精确到秒的表演指令 + 四重奏速览 + 导演评分)。原样内嵌(MV3 沙箱页),业务代码一行未删;新增一键「发到编辑台 / 送合规检测」、localStorage 跨会话持久化、跨域 API 后台反代、导出下载中转
  • v1.20 新增:隐形字数(纯文本粘贴 → 一键生成隐形代码插编辑器 + 复制);编辑台预览升级真机手机壳
  • v1.19 新增:工作台内嵌豆包侧窗 / 独立窗口;豆包贴边技能面板(预设 25 技能、收藏、自定义、搜索);豆包回答一键回填编辑台;豆包图片一键插入公众号
  • v1.18 新增:编辑台 AI 助手(起标题 / 写正文 / 改写选中 / 降 AI 味 / 生成摘要);AI 平台新增豆包(火山方舟)
  • v1.17 新增:编辑台(Markdown 本地排版引擎 + 6 主题、复制排版 / 写入公众号编辑器 / 推送草稿箱三通道、本地草稿箱、公众号绑定设置、封面设计器联动);迁移自开源 skill md-to-wechat,排版改为本地实现
  • v1.2 新增:封面设计器(三栏画布编辑、图层系统、8 个版式模板、7 种平台尺寸、字体商用检测、安全区、AI 底图提示词)
  • v1.1 新增:品类专属词库(办公/设计/开发 15 条)、后台数据自动抓取、团队 CSV 台账互换 + 操作人 + 变更日志
  • v1.0 首发:检测台、标题改写、AI 治理、字体自查、素材台账、重复图预警、模板库、截图标注、软件选题库、投诉看板、多平台改写、数据复盘

词库规模:通用红线 8 类 + 品类红线 15 条 + AI 痕迹 5 类 + 字体白 22/黑 22 + 模板 8 个 + 评分卡 9 项。

About

公众号发布安全台 · Writer Guard —— 写稿/排版/红线检测/封面/数据复盘,一个浏览器扩展全包

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages