网络公关新闻稿与 GEO 监控(v1.6.0)
总览
面向公关/市场团队:一篇新闻稿发出后,它被搜索引擎收录了吗?被权威媒体转载了吗?在自媒体平台有传播吗?最关键的——用户问豆包/Kimi/DeepSeek 等 AI 时,AI 能正确说出稿中内容吗(GEO)? 本 skill 一键回答以上全部问题,产出可直接给领导/客户看的图文 Word 报告 + Excel 明细 + 分优先级的推广优化方案。
监控渠道共 124 个(出厂口径):搜索引擎 4 + 全国权威媒体 15 + 垂直财经媒体 52(v1.6 补全 30 家)+ 地区主流媒体 27(--regions 按需启用)+ 自媒体平台 10 + AI 平台 16(v1.7 新增扣子/百川/零一万物,另含搜狗微信专用通道,不单独计数)。默认采集口径 97 个(不含地区层)。
v1.4 起三层渠道名单(新闻媒体/自媒体/AI 平台)可由用户自行增删启停(customize 子命令),并支持多任务落盘定时监控(jobs 子命令)。
五分钟上手(小白必看)
# 第 0 步:环境自检(30 秒)
!python "scripts/run.py" check-env
# 第 1 步:一键全量监控(文章链接即可,标题正文自动抓取)
!python "scripts/run.py" full --url "https://www.cs.com.cn/tzjj/01/2026/05/12/detail_xxx.html" --keywords "工银美丽城镇,工银瑞信"
# v1.3 新姿势:多链接多目标 / Excel、Word、图片导入 / 启用地区媒体层
!python "scripts/run.py" full --url "https://a.com/1,https://b.com/2" --keywords "品牌词"
!python "scripts/run.py" full --input-file batch.xlsx # Excel/CSV/JSON/Word/图片同入口
!python "scripts/run.py" full --url "https://..." --keywords "品牌词" --regions 北京,广东
# 完成!产物在 data/output/:
# PR-GEO监控报告_文章标题_2026-08-25.docx ← 图文并茂主报告(12板块)
# PR-GEO明细_文章标题_2026-08-25.xlsx ← 全量明细附表(可点击链接)
会自动发生的事:
1. 抓取文章正文,提取指纹句(5 条独特句)与关键数字事实
2. 百度/搜狗/360 收录检测(必应走真实浏览器)
3. 36 家权威媒体逐一 site: 检测 + 标题相似度判定(含转载变体识别);--regions 启用时追加地区主流媒体层(最多 27 家)
4. 10 个自媒体平台检测(公众号走搜狗微信三段式,微博/B站走开放接口;抖音/小红书/快手/知乎/头条 v1.1 起走真实浏览器站内直搜)
5. 13 家 AI 平台 GEO 检测:模拟真人向 AI 提问 → 轮询等回答 → 截图 → 比对关键数字三值判定(v1.3 附 0-100 量化评分)
6. 情感分析(负面预警标红)+ 阅读量/播放量抓取(B站视频播放量;登录态平台如实标注)+ 发布时间探测(四级解析链,失败返回空不编造)
7. 生成 Word 报告(含量化分析章节)+ Excel 附表(含 GEO 评分卡)+ 数据驱动的推广优化方案,历史入库
出错兜底:任何单渠道失败都不中断(标记 error/skipped 并在报告『渠道健康度』中如实说明);webbridge 未启动时 GEO 检测自动跳过并提示启动命令。
步骤 1:环境自检
!python "scripts/run.py" check-env
三个关键项:
- python-docx(必需,预装概率高)
- kimi-webbridge daemon(GEO 检测与自媒体站内直搜必需):未启动时执行 ~/.kimi-webbridge/bin/kimi-webbridge.exe start(用的是你真实浏览器的登录态,这是驱动 AI 平台与自媒体站内搜索最可靠的方式)
- Playwright(搜狗微信通道用):缺失则公众号检测降级为百度 site: 补链
# 渠道健康快测(10 秒,确认百度通道/webbridge 正常)
!python "scripts/run.py" probe
# 查询可监控渠道数量与清单(离线即查,不发网络请求)
!python "scripts/run.py" channels # 分层汇总:合计 121 个渠道(默认采集口径 94 + 地区层 27)
!python "scripts/run.py" channels --layer tier2 # 只看垂直财经媒体层
!python "scripts/run.py" channels --layer regional --region 北京 # 地区层按省/市过滤(v1.3)
!python "scripts/run.py" channels --detail # 逐家明细(域名/主通道/降级链/备注;用户自定义带标记)
!python "scripts/run.py" channels --json # 机器可读 JSON(供其他脚本消费)
维护监控名单(v1.4:用户自己决定监控哪些渠道)
# 添加新闻媒体网站(tier1 全国权威 / tier2 垂直财经 / tier3 地区主流)
!python "scripts/run.py" customize add-media --id mypaper --name 某某财经报 --domains mypaper.cn --group tier2
# 添加自媒体平台 / GEO 投放 AI 平台
!python "scripts/run.py" customize add-social --id myapp --name 某某APP --domains myapp.com
!python "scripts/run.py" customize add-ai --id myai --name 某某AI --entry https://ai.example.com
# 停用内置渠道(不删除,随时恢复)/ 移除自定义渠道 / 查看定制 / 恢复出厂
!python "scripts/run.py" customize disable --layer media --id cs
!python "scripts/run.py" customize remove --layer social --id myapp
!python "scripts/run.py" customize list
!python "scripts/run.py" customize reset
定制落盘 data/user_channels.json(可直接编辑),采集/清单/报告自动纳入;字段规范与校验红线见 references/custom_channels.md。
步骤 2:选择输入方式
| 方式 | 命令示例 |
|---|---|
| 文章链接(推荐) | full --url https://... --keywords "品牌词,产品词" |
| 多链接多目标(v1.3) | full --url "https://a.com/1,https://b.com/2" --keywords "品牌词"(逗号分隔,每链接一个目标) |
| 标题+关键词 | full --title "文章标题" --keywords "品牌词" |
| 正文文本 | full --content "正文粘贴于此…" --keywords "品牌词" |
| 四项全给 | full --url … --title … --content … --keywords … |
| Word 稿件(v1.3) | full --input-file 稿件.docx(首段为标题,其余为正文) |
| Excel 批量(v1.3) | full --input-file batch.xlsx(每行一个目标,中英列名均可) |
| 图片导入(v1.3) | full --input-file 截图.png(按需 OCR;无 OCR 库时友好报错附安装指引) |
| 批量文件 | full --input-file batch.json(结构见下) |
批量任务文件 batch.json 示例:
{"targets": [
{"url": "https://example.com/a1.html", "keywords": "品牌A,产品X"},
{"title": "仅标题也能测", "keywords": "品牌A"},
{"url": "https://example.com/a2.html", "title": "覆盖标题", "content": "覆盖正文", "keywords": "品牌B", "media": "中国证券报", "date": "2026-08-20"}
]}
(CSV 也支持:列名 url|title|content|keywords|media|date|region,中文别名如 标题/关键词/发布日期 均可;Excel 同此映射)
图片导入说明(v1.3):支持 .png/.jpg/.jpeg/.bmp/.webp;优先 pytesseract(中文 chi_sim),其次 rapidocr_onnxruntime;两者均未安装时报友好错误并附安装命令;识别文字 <20 字视为失败(不编造)。
步骤 3:执行监控
# 全量(推荐,约 15~40 分钟:媒体层约 10 分钟 + AI 层每平台 1~3 分钟)
!python "scripts/run.py" full --url "https://..." --keywords "品牌词"
# 仅 GEO 检测(快,5~15 分钟)
!python "scripts/run.py" ai --url "https://..."
# 仅测部分 AI 平台
!python "scripts/run.py" ai --url "https://..." --platforms "kimi,doubao,deepseek"
# 仅媒体收录层(不需要 webbridge)
!python "scripts/run.py" media --url "https://..."
# 仅自媒体层(v1.1:webbridge 在线时站内直搜优先)
!python "scripts/run.py" social --url "https://..."
# 启用地区媒体层(v1.3):all=全部 27 家;也可指定省/市(逗号分隔)
!python "scripts/run.py" full --url "https://..." --keywords "品牌词" --regions all
!python "scripts/run.py" media --url "https://..." --regions 北京,广东,浙江
# 清理运行产物(上传/打包前用;图表/截图/报告均为可再生工件)
!python "scripts/cleanup_cache.py" --all # 图表+截图+报告全清,monitor.db 历史保留
!python "scripts/cleanup_cache.py" --check # 交付前验证:无缓存残留退出码 0(v1.4.1)
# 断网/无 webbridge 环境也能出报告(GEO 全跳过并如实标注)
!python "scripts/run.py" full --url "https://..." --skip-ai
参数默认值:
| 参数 | 默认值 | 说明 |
|---|---|---|
| --url/--title/--content/--keywords | 无(至少其一) | 四种输入任意组合 |
| --input-file | 无 | JSON/CSV/Excel(.xlsx)/Word(.docx)/图片(按需 OCR)多格式导入同入口 |
| --skip-ai | 否 | 跳过 AI 平台 GEO 检测 |
| --only-ai | 否 | 仅跑 GEO 检测 |
| --platforms | 全部 13 家 | 逗号分隔平台 id:kimi,doubao,deepseek,yuanbao,chatglm,wenxin,tongyi,nano,xinghuo,chatgpt,perplexity,gemini,copilot |
| --no-playwright | 否 | 禁用 Playwright(公众号走百度补链) |
| --social-mode | auto | 自媒体检测模式:auto=有 webbridge 则站内直搜 / webbridge=强推站内 / baidu=强制百度侧写 |
| --regions | 空(不启用) | v1.3 地区媒体层:all=全部 27 家 / 逗号分隔省或市(如 北京,广东);缺省不跑地区层,速度不变 |
步骤 4:定时监控(可选,v1.4 升级)
两种模式按需选用:
# 方式 A:前台单任务(窗口开着才跑,适合临时盯一个目标;Ctrl+C 停止)
!python "scripts/run.py" schedule --target-id "T20260825103000xx" --cron "0 9 * * *"
!python "scripts/run.py" schedule --target-id "T..." --cron "每天9点" # 友好表达式同支持(每天09:30/每2小时/每30分钟/工作日9点)
# 方式 B:落盘任务库(推荐:多目标多频率长期监控,关机重启不丢)
!python "scripts/run.py" jobs add --name 每日复测 --cron "每天9点" --target-id "T20260825..."
!python "scripts/run.py" jobs add --name 快讯盯盘 --cron "每2小时" --url "https://..." --keywords "品牌词" --only-ai
!python "scripts/run.py" jobs list # 查看任务与上次/下次运行状态
!python "scripts/run.py" jobs run --name 每日复测 # 手动单跑一次验证
!python "scripts/run.py" jobs watch # 常驻巡检:按各任务 cron 到点自动执行(需 croniter)
复测自动入库历史并在报告生成趋势图(收录率/GEO命中率随轮次变化);任务支持全套采集选项(--skip-ai/--only-ai/--platforms/--social-mode/--regions);单任务失败不中断其他任务(如实记 error)。健康日志:data/scheduler_health.json;任务库:data/monitor_jobs.json。
步骤 5:输出结果
向用户报告以下产物(均在 data/output/):
- Word 主报告:封面 → 执行摘要 → 检测方法与渠道健康度 → 搜索引擎收录 → 全国权威媒体 → 垂直财经媒体 → (启用时)地区主流媒体 → 自媒体传播(含检索方式列与站内直搜截图)→ AI平台GEO检测矩阵(命中表+回答摘录+每家截图) → 量化分析(GEO 评分卡 0-100 分 + 传播综合分 + 曝光估算 + 发布时间分布 + 投放→GEO 交叉验证) → 情感与舆情(负面预警) → 传播量化(阅读量排行) → 推广优化方案(P0~P3 数据驱动行动清单,含 GEO 漏损修复/高效渠道复制/错峰投放/地区补位) → 附录(覆盖矩阵总表+免责声明)
- Excel 明细附表(4 个 Sheet:总览/覆盖矩阵/全量明细含发布时间与阅读/播放量列/GEO评分卡,链接可点击)
- 趋势数据(多轮后自动生成趋势图)
- 历史记录(
run.py history --target-id …查看)
注意事项(如实披露原则)
- 『未命中』≠『不存在』:受索引延迟/反爬/登录态影响,重要结论建议人工复核;站内直搜依赖真实浏览器登录态,未登录的平台会如实降级百度侧写并在报告标注检索方式
- 微信公众号公开索引仅约 6 个月;更早文章需公众号后台
- 微信视频号无公开网页搜索通道,报告如实标注『建议 APP 内人工复核』,绝不编造数据
- 微信阅读量需登录态,公开渠道不可得(报告注明);抖音/快手/小红书播放量同理如实标注 None+说明;B站播放量走公开接口可实测
- 通义千问/纳米AI/讯飞星火 2026-08 实测有登录墙/稳定性障碍:自动重试后仍失败标『渠道受限』
- 国际 4 家 AI 平台依赖网络可达与登录态,不可达自动标『跳过』不中断
- AI 回答有随机性,判定基于当次问答快照;同源通稿可能造成 AI 答出变体数字——判定必须比对关键数字(本 skill 已内置)
安装指引(已自动化,无需手动)
系统 Python 3.11 通常已预装全部依赖。如缺:
pip install -r scripts/requirements.txt
playwright install chromium # 仅搜狗微信通道需要
小白词典
| 术语 | 一句话解释 |
|---|---|
| GEO | 生成式引擎优化:让你的内容在 AI 回答里被正确引用(SEO 的 AI 时代版本) |
| 指纹句 | 从稿中挑出的独特句子,问 AI「你知道这句话吗」来验证收录 |
| 三值判定 | 命中=标题+数字全对;部分=疑似通稿变体或数据不全;未命中=检索不到 |
| 通稿变体 | 多家媒体转载同一通稿时改了标题/数字,AI 容易答出错误数字 |
| webbridge | 驱动你真实浏览器(带登录态)的工具,是稳定操作 AI 平台的基础 |
| site: 检索 | 搜索引擎限定某网站内搜索,用于逐媒体查收录 |
| 收录率 | 命中+部分命中 ÷ 有效渠道数(异常渠道不计入分母) |
| GEO 评分卡 | 每家 AI 平台 0-100 分 = 命中态基分(50) + 事实覆盖率×30 + 数据准确率×20;异常/跳过不参评 |
| GEO 漏损 | 已被搜索/媒体收录但 AI 平台未命中——收录≠AI可引用,需补 GEO 工程化 |
参考文件
references/search_channels.md— 搜索引擎通道现状与降级链(何时查看:收录检测异常/想了解必应为何走浏览器)references/media_registry.md— 63 家核心媒体 + 27 家地区媒体清单与检索模板(何时查看:增删媒体/调整 tier)references/custom_channels.md— 用户自维护渠道名单 + 定时任务库手册(何时查看:增删/启停渠道、配置定时监控)★v1.4 新增references/insite_search.md— 自媒体站内直搜通道手册与选择器维护(何时查看:某平台直搜降级/选择器改版)★v1.1 新增references/ai_platforms.md— 13 家 AI 平台操作要点/选择器/已知坑(何时查看:某平台探测失败排查)★关键references/word_report_spec.md— Word 报告防错规范(字体/表格/图表)(何时查看:报告样式调整/新增板块)★关键references/webbridge_guide.md— webbridge 用法与 CDP 兜底模板(何时查看:AI 平台输入/发送失败)scripts/run.py— CLI 入口(所有子命令,含 v1.1 social、v1.2 channels、v1.4 customize/jobs)scripts/registry_*.py— 三大渠道出厂注册表(用户定制勿改这里,走 customize)scripts/user_channels.py— 用户渠道名单存储/校验/合并(v1.4:有效名单唯一出口)scripts/jobs.py— 定时任务库 + 友好表达式转换 + 常驻巡检(v1.4)scripts/social_insite.py— 自媒体站内直搜引擎(v1.1:5 平台配置+双层抽取+登录墙检测)scripts/ai_prober.py— GEO 探测与三值判定核心scripts/humanize.py— 浏览器拟人化操作层(v1.6:逐字可信输入/贝塞尔点击/分段滚动/阅读停顿,PR_GEO_HUMANIZE=0 一键退化)scripts/word_report.py— 12 板块报告组装scripts/metadata.py— 发布时间四级解析链(meta→JSON-LD→正文正则→URL 路径,v1.3 新增)scripts/metrics.py— GEO 评分卡/投放效果验证/传播综合分/发布时间分布(v1.3 量化层)scripts/strategy.py— 推广优化方案生成逻辑(v1.3 起数据驱动:漏损/高效渠道/错峰/地区补位)data/monitor.db— SQLite 历史(runs/channel_hits)data/output/— 报告产物;data/shots/— AI 问答截图
📝 v1.7 升级:智能体平台全面适配 + 情感分析增强 + 评分算法优化(2026-09-07)
智能体平台全面适配(v1.7 新增 3 家,国内 AI 平台 9→12 家,总渠道口径 124/97→127/100):
1. 扣子/Coze(字节跳动智能体平台):需登录,内置联网搜索能力,GEO 检测价值高
2. 百川智能:支持联网搜索,未登录可用
3. 零一万物:支持联网搜索,未登录可用
情感分析增强:
4. 情感词库扩展:正面词新增 16 个(收获/利好/强势/飙升/翻倍/暴增/超预期等),负面词新增 12 个(暴跌/跌停/巨亏/预减/下挫/闪崩/崩盘/爆仓/熔断/危机/寒冬/黑天鹅/灰犀牛)
5. 否定词检测优化:扩展否定模式(不太/不够/仍未/尚未/依然未/还没),检测窗口从 6 字符扩展到 8 字符
6. 阈值优化:正面/负面判定阈值从 0.15 调整为 0.12,更灵敏捕捉情感倾向
7. 关键词输出:从 12 个扩展到 15 个,保留更多情感证据
GEO 评分算法优化:
8. 评分公式升级:新增回答深度评分(基于回答长度,0-0.8 分),权重分配优化为:命中态基分(50) + 事实覆盖率×25 + 数据准确率×15 + 回答深度×10 + 溯源加分(direct+8/mention+3)
9. 传播综合分优化:新增情感健康度权重(15%),公式调整为:收录率×35 + GEO命中率×35 + 传播量×15 + 情感健康度×15
HTTP 处理增强:
10. 多重编码回退:UTF-8 → GBK → GB2312 → Latin-1 严格模式逐次尝试,减少乱码
11. Deflate 解压支持:新增 deflate 编码解压(zlib),覆盖更多服务器响应格式
12. 超时错误优化:提供更友好的超时错误信息(含 URL 前缀和超时时长)
标题相似度算法升级:
13. 中文字符级 n-gram:支持中文字符级 2-gram + 词级 2-gram 双重提取
14. 混合相似度:Jaccard 系数(40%) + 包含度(60%) 加权平均,更准确识别转载变体
工程:测试 433 → 433+ 全绿(全离线);新增平台自动纳入 user_channels 有效名单;采集管线/Word/Excel/渠道清单全链路适配。
📝 v1.6 升级:财经媒体名单补全 + 广撒网预检 + 浏览器拟人化操作层(2026-08-31)
财经媒体名单补全(22 → 52 家,渠道口径 91/64 → 121/94):
1. 30 家补录入 TIER2(均带域名名单,site: 检索与广撒网域名映射即刻生效):证券/期货专业报 6 家(经济参考报/金融投资报/期货日报/大众证券报/中国银行保险报/证券市场红周刊);综合财经报纸周刊 8 家(中国经营报/华夏时报/中国经济周刊/中华工商时报/北京商报/中国企业报/新财富/时代周报);财经门户 9 家(华尔街见闻/蓝鲸财经/金融界/和讯网/中金在线/证券之星/全景网/搜狐财经/FT中文网);港股 2 家(智通财经/格隆汇);科创新媒体 5 家(36氪/虎嗅/钛媒体/亿欧/投资界)
2. 广撒网预检 broad_pass(名单翻倍的请求量对冲):媒体层开跑前先做 1 次标题泛查(want_top=20,跳转短链解析 ≤10 条),按域名映射回媒体名单——强命中媒体免 site: 复查(标 hit,注明"广撒网轮命中 N 条");弱命中(相似度 0.35~0.60)并入 miss → partial 作召回增益;请求量随稿件转载广度增长而非名单规模(≥6 家命中即回本);验证码/异常/空结果一律降级回逐媒体 site: 流程,broad=False 可关
浏览器拟人化操作层(新模块 scripts/humanize.py,kimi-webbridge 真实浏览器全链路接入):
3. 逐字可信输入:Input.dispatchKeyEvent type=char 逐字发送(4.5~7.5 字/秒 + 每 6~14 字顿笔 + 6% 长停顿"想了想"),过 isTrusted 校验并触发 React/Vue onChange(豆包等平台的机器人特征"整段注入"消除);打完校验输入框内容,未生效自动回退 smart_type 机械兜底链
4. 贝塞尔曲线点击:鼠标从当前位置沿二次贝塞尔曲线(3~6 途经点 + 8~22% 垂直偏移)移动到落点,落点取元素 30%~70% 区域随机(拒绝几何中心),瞄准停顿 0.12~0.45s、按压 40~130ms
5. 分段滚动 + 阅读停顿:滚轮分 2~5 段(240~560px/段,20% 概率回滚一屏)替代瞬时跳转;回答/页面按长度停顿阅读(0.9s + 1s/900 字,封顶 6s)
6. 三处接入:AI 探测(落地停顿/逐字输入/按钮平台拟人点击/联网开关坐标点击/答后阅读停顿)、站内直搜(落地停顿滚动触发懒加载/输入框补搜逐字输入/结果页增强滚动)、必应 webbridge 检测(SERP 轻滚动去机器人节奏)
7. 一键退化:PR_GEO_HUMANIZE=0 环境变量关闭拟人化(输入/点击走机械兜底,停顿≈0),急跑/调试用;测试套件默认关闭,399 → 433 全绿(全离线,34 个新增用例)
📝 v1.5 升级:检索可靠性 + 长周期衰减观测 + 引用溯源 + 断点续跑(2026-08-31)
百度通道四重防护(修复"触发一次安全验证后整轮大面积跳过/检索不全"):
1. 会话指纹一致性:进程内固定 UA + 随机 BAIDUID 全程复用(原 BAIDUID=1 假 cookie + 每请求随机换 UA 是典型风控指纹,为主要触发诱因)
2. 全局配速:搜索与 link 跳转解析共用最小间隔(2.2s+抖动);每域名跳转解析上限 8→3,单目标请求量约降 60%
3. 熔断跨进程落盘:冷却状态写 data/baidu_state.json,复跑进程尊重冷却期;导出文案区分"本轮实际撞验证码"与"熔断期内跳过(未实际检索)",不再一律写"查询过频"
4. SERP 解析失败识别:页面非空、非验证码、非"无结果"页但解析 0 条 → 标 error(原被误标 miss"未收录",是同媒体不同文章时有时无的假阴性来源)
检索与判定增强:
5. 财经网补录:caijing.com.cn 进 TIER2(21→22,渠道口径 90/63→91/64;此前不在名单导致永检不出);Word 各层家数改为动态渲染
6. 关键词二次检索:标题查询 0 条且有关键词时自动补查关键词组合(长标题被百度分词稀释的召回兜底)
7. 数字指纹辅助判定:相似度 0.40~0.60 的疑似变体若与标题共享特征小数(净值/涨幅,如 45.67)升为强命中(仅认小数,1000 类常见整数不算)
8. URL 指纹稳定目标 ID:同文章复跑(含带 utm/spm 等跟踪参数变体)目标 ID 不变 → 历史与衰减曲线自动串联(v1.4.1 时间戳 ID 每次复跑都是"新目标"会断链)
长周期衰减观测:
9. jobs decay 一键复测计划:python scripts/run.py jobs decay --name 稿件A --url https://... 创建 D+1/D+7/D+30 三个一次性任务(--days/--at 可调;跑完自动停用,配合 jobs watch 常驻执行)
10. GEO 曝光衰减矩阵:storage.geo_history 按轮次回放各 AI 平台判定 → geo_decay.png 衰减折线 + Word"传播效果量化"章节新增多轮对比表(衰减/回升平台点名)
引用溯源与断点续跑:
11. 引用溯源三级判定:AI 命中后抓回答页 a[href],区分 直接引用(带原文链接)/ 提及来源(无链接)/ 纯转述;进 AI 矩阵新列、geo 汇总分布与评分卡加分(直接引用+8/提及+3,满分 100 封顶)
12. AI 层断点续跑:按 (目标ID, 平台) 落盘缓存(12h TTL),批量多篇中断后重跑不再全量重来;--refresh-ai 强制全量重测(衰减复测建议开启)
工程:测试 358 → 398 全绿(全离线);tests/_base.py 隔离百度熔断状态文件与 AI 缓存目录(防测试写脏真实 data/);CLI full/jobs 新增 --refresh-ai。
📝 v1.4.1 升级:测试提速与交付加固(2026-08)
测试工程(355 → 358 全绿零警告,71.6s → 11.7s 提速 83%):
1. 离线隔离补漏:修复三处测试真实副作用——媒体层异常隔离用例未 patch polite_sleep(真实睡眠 27s);自媒体全量用例未隔离搜狗微信通道(真实启动 Playwright Chrome 并联网 ~10s);端到端用例未隔离发布时间探测(对命中条目 URL 真实联网);AI 探测重试路径 time.sleep(3) 未隔离。全部改为离线 mock,套件恢复“零网络零浏览器”承诺
2. ResourceWarning 清零:input_loader JSON 导入与测试健康日志读取改用 with open 上下文管理,-W default 下零警告
3. 新增交付守卫:cleanup_cache.py --check 只检查不清理(无残留退出码 0);新增仓库级守卫测试断言无 .pyc/pycache/.pytest_cache;CLI 直跑入口补 sys.dont_write_bytecode
缺陷修复:
4. 多链接目标 id 碰撞:full --url "a,b" 多目标曾固定命名 T1/T2,复跑时 SQLite 历史互相覆盖;改为时间戳前缀唯一 id(有防回归测试)
5. 代码清理:media_searcher 两处 __import__("re") 改为标准导入;ai_prober 删除冗余状态赋值行;check-env 输出 f-string 规范化。采集行为与日志步骤号与 v1.4 完全一致(无任何感知变化)。
📝 v1.4 升级:用户自维护渠道名单 + 定时任务库(2026-08)
两大升级:
1. 渠道名单用户自维护:新增 customize 子命令(add-media/add-social/add-ai/remove/enable/disable/list/reset),三层渠道(新闻媒体网站/自媒体平台/GEO 投放 AI 平台)均可增删启停;定制落盘 data/user_channels.json(可直接编辑),内置注册表保持出厂不动;严格校验(id 唯一性/层级/域名/选择器占位符),损坏配置自动降级出厂名单不中断监控;采集管线/渠道清单/Word/Excel 全部自动消费有效名单;无定制时行为与 v1.3 完全一致
2. 定时监控升级:新增 jobs 子命令(add/list/remove/enable/disable/run/watch)——多任务落盘 data/monitor_jobs.json(关机重启不丢),watch 常驻巡检按各自 cron 到点自动执行;调度表达式支持中文友好写法(每天9点/每天09:30/每2小时/每30分钟/工作日9点);每个任务可携带全套采集选项(--skip-ai/--platforms/--social-mode/--regions);单任务失败不中断其他任务;schedule 前台模式同步支持友好表达式(向后兼容)
工程:新增 user_channels.py(280 行)与 jobs.py(210 行);采集器/注册表查询入口改走有效名单;测试 318 → 355 全绿(全离线零网络);无用户配置时默认采集行为、渠道口径(90/63)与日志步骤号与 v1.3 完全一致。
📝 v1.3 升级:地区媒体层 + 多格式导入 + 量化分析(2026-08)
六大升级:
1. 地区媒体层:新增 TIER3_REGIONAL 27 家(14 省市:北京日报/上观新闻/南方日报/潮新闻/红星新闻/极目新闻/齐鲁壹点等),每家带 region 字段;--regions all|北京,广东 按需启用(缺省不跑,默认速度与 v1.2 一致);channels --layer regional --region 北京 离线查看;渠道口径升级为“核心 63 + 地区 27 = 90”
2. 多格式导入:--input-file 同入口支持 JSON/CSV/Excel(.xlsx)/Word(.docx)/图片(.png/.jpg 按需 OCR,pytesseract→rapidocr 双通道,均无时友好报错附安装指引);Excel/CSV 列名中英别名容错;--url 支持逗号分隔多链接多目标监控(逐目标采集汇总出报告)
3. 元数据抓取:新模块 metadata.py 四级发布时间解析链(meta→JSON-LD→正文正则→URL 路径),全失败返回空串绝不编造;每组渠道控量探测前 10 条,永不抛异常
4. 播放量扩展:B 站视频播放量实测(view API);抖音/快手/小红书/微信需登录态——如实返回 None+note(数据诚实红线);所有计数结果带 type(article/video)
5. GEO 量化验证:每平台 0-100 评分卡(命中态基分 50 + 事实覆盖率×30 + 数据准确率×20,异常不参评);投放→GEO 交叉验证(收录但 AI 未命中 = 漏损清单);传播综合分与曝光估算(仅计实际取得公开计数的样本);发布时间分布与集中度(错峰依据)
6. 数据驱动策略:P1 增 GEO 漏损渠道具体名单与最低分平台点名;P2 增高效渠道复制(阅读量 TOP)与错峰建议;P3 增地区媒体补位(覆盖率 <50% 触发);新增 GEO 评分条形图并入 Word 量化分析章节,Excel 增 GEO 评分卡 Sheet 与发布时间/阅读/播放量列。
工程:测试 279 → 318 全绿(全离线零网络零浏览器);默认采集行为与日志步骤号与 v1.2 完全一致(不启用 --regions 时无任何感知变化)。
📝 v1.2 补丁(2026-08-25):渠道数量查询 + 缺陷修复
新功能:新增 channels 子命令,离线查询可监控渠道数量与清单(--layer 分层过滤 / --detail 逐家明细 / --json 机器可读);check-env 输出新增渠道总数行。
Bug 修复:schedule 定时任务曾把 --skip-ai/--only-ai/--platforms/--no-playwright/--social-mode 五个已声明参数全部静默丢弃,现已全部透传至采集管线(有防回归测试)。
优化:采集日志中各层渠道数(15/21/10/13 家)改为从注册表动态读取,增删渠道后日志不再失真;清理 probe 未使用导入。
产物清理:cleanup_cache.py 新增 --shots/--output/--all/--include-db 分级清理(上传禁二进制的平台打包前用);默认绝不删 monitor.db。测试 267 → 279(全离线)。
📝 v1.1 升级(2026-08-25):自媒体站内直搜
核心升级:抖音/小红书/快手/知乎/头条 5 平台从“百度 site: 侧写”升级为 webbridge 真实浏览器(登录态)站内直搜:
- 新增 scripts/social_insite.py:5 平台搜索配置 + 双层抽取(平台专属选择器 → 通用行抽取兜底)+ 登录墙/风控检测 + 逐平台截图存证(data/shots/social/)
- 降级链:站内失败/登录墙 → 自动回退百度 site: 侧写;无 webbridge → 直接百度侧写(报告『检索方式』列如实披露)
- 新增 CLI:social 子命令(仅自媒体层);--social-mode {auto,webbridge,baidu}(full/ai/media/social/schedule 均可用)
- Word 报告第六板块增加『检索方式』列与站内直搜截图板块(缺图自动降级不报错)
- 新增 references/insite_search.md 排障手册;测试 228 → 258(全离线)
- 使用建议:真实浏览器预先登录这 5 个平台一次(登录态持久),站内直搜命中率远高于百度侧写
📝 v1.0 初始版本(2026-08-25)
首版能力:四层 64 渠道监控 / 指纹句 GEO 检测(13 家 AI)/ 情感分析+负面预警 / 阅读量抓取 / 历史对比+定时监控 / 图文 Word(12 板块)+ Excel 附表 / P0~P3 推广优化方案。
工程:25 个模块全部离线可导入;228 个测试全离线 mock 全绿(43 秒),无网络请求、无真实浏览器。
冒烟实测发现并已修复的三个真实缺陷(均有防回归测试):
1. AI 回答截断假象:wait_answer 曾把"问题回显文本"当稳定内容提前返回——问题本身含标题+数字,造成 Kimi 假命中、豆包假漏检。修复:轮询排除问题文本 + strip_question 只按回答判定
2. 通稿尾部切片误伤:strip 曾把回答中合法出现的标题一并切掉。修复:精确匹配+空白规范化两段式
3. 百度验证码误标:安全验证导致的空结果曾标 miss(未收录)。修复:验证码熔断器(触发后 10 分钟不再请求)+ 如实标 error(渠道异常)