← 返回
未分类

国内自媒体热点提取

热点提取与推荐智能体。从国内外13个数据源采集热点数据,通过HGR/CPRI/EMA/历史相似度/文化适配五维算法评分,输出国内+国际TOP2热点。交付JSON含image_urls配图字段,供下游视频生成Agent消费。触发场景:(1) 用户说"抓热点"、"热点提取"、"跑一下" (2) 定时任务触发(每日14:00) (3) `/hotspot refresh` (4) 需要生成热点报告时。
热点提取与推荐智能体。从国内外13个数据源采集热点数据,通过HGR/CPRI/EMA/历史相似度/文化适配五维算法评分,输出国内+国际TOP2热点。交付JSON含image_urls配图字段,供下游视频生成Agent消费。触发场景:(1) 用户说"抓热点"、"热点提取"、"跑一下" (2) 定时任务触发(每日14:00) (3) `/hotspot refresh` (4) 需要生成热点报告时。
kelly2026
未分类 community v1.0.4 5 版本 99505 Key: 无需
★ 4
Stars
📥 121
下载
💾 0
安装
5
版本
#latest

概述

热点提取智能体

⚠️ 铁律(不可违反)

  1. 数据源需要登录时,必须返回人工确认,不得私自降级或跳过采集。
    • 如果任何一个数据源在采集过程中遇到登录要求、验证码、人机验证等情况,必须立即暂停该源的当前采集路径,并在结果中明确标记"该源需要人工登录确认"。
    • 禁止行为:自动跳过该源、用备用源替代后不告知、将降级视为正常完成、在报告中隐藏该源的失败状态。
    • 正确做法:将该源标记为 status: login_required,在最终交付报告中醒目提示人工介入,其他数据源正常采集不受影响。
  2. 任何被拦截或采集量为 0 条的数据源,必须按 A→B→C 顺序处理,不得直接跳过。
    • A:先执行配置中的备用路径 / 备用 API / fallback 数据源。 如果备用源成功,记录本次降级事实,并继续后续流程。
    • B:A 仍无数据时,改用 Chrome 桥接 / 浏览器登录态采集。 如果需要登录、验证码或人工操作,必须按第 1 条返回人工确认。
    • C:A+B 仍无采集量时,最多探索 3 个新的候选数据源。 3 个候选源都没有采集结果后,才允许停止该数据源本轮采集,并继续后面的流水线步骤;不得阻塞整体流程。
    • 停止该源前必须在运行报告中写明:主路径结果、A/B/C 尝试记录、3 个候选源名称/URL、失败原因。
    • "status=ok + 0 条"的组合一律视为异常,必须触发本规则。
  3. 探索成功的新数据源必须加入数据源库,作为下一次常规采集源。
    • 成功标准:可稳定返回非空结果,字段至少包含标题和来源;最好包含热度/排名/链接。
    • 必须更新 config/platforms.yamlreferences/data-sources.md 以及 collector 代码,并在报告中说明新增源名称、URL、解析方式、适用平台。
  4. 采集结果必须如实反映每个数据源的真实状态,不得隐瞒失败、降级、拦截、登录要求或 0 条异常。

执行命令

cd ~/.qclaw/workspace-agent-43c8c1ee && \
  HOTSPOT_CHROME_BRIDGE=1 SKIP_DEGRADED_CHECK=1 python3 scripts/main.py

输出文件:queue/hot_topics_YYYYMMDD.json


数据源(9个,全部必须跑)

详细采集策略见 references/data-sources.md

平台主路径备用路径image_urls状态
------------------------------------------
微博 weiboapi.zxki.cn/api/jhrs?type=weibo官方 AJAX API weibo.com/ajax/side/hotSearch❌ 无图ok
B站 bilibiliapi.bilibili.com/x/web-interface/popularpic 字段 100%ok
百度 baidutop.baidu.com/board?tab=realtime✅ HTML提取 ~84%ok
抖音 douyinapi.zxki.cn/api/jhrs?type=douyin官方API → tophub兜底 douyin.com/aweme/v1/web/hot/search/list/✅ 官方API word_cover 100%ok
头条 toutiaotoutiao.com/hot-event/hot-board/tophubImage.url 100%ok
小红书 xiaohongshuChrome桥接 xiaohongshu_hottophub✅ CDP xhscdn 图片ok
YouTube youtubeChrome桥接(3次重试)Kworb 兜底✅ CDP缩略图→5张多分辨率ok
Twitter twitterChrome桥接—(xtrends已废弃)❌ 纯文本页无图ok
TikTok tiktokChrome桥接(仅视频hashtag)✅ CDP tiktokcdn.comok

Chrome桥接:wait=12s,limit=30,全局串行锁。HOTSPOT_CHROME_BRIDGE=0 可关闭全部Chrome桥接。

image_urls 覆盖率总结

类别覆盖率说明
--------------------
bilibili / douyin / tiktok / 小红书2-3张bilibili封面+首帧,抖音官方API多尺寸,CDP多图
baidu~84%部分热搜无配图属正常
youtube1-5张CDP缩略图+多分辨率构造(maxres/hq/sd/mq/default)
weibo / twitter0%API 无图字段 / 数据源为纯文本页
douyin3张(官方API) / 0%(tophub兜底)zxki失败后优先走官方API(3尺寸配图),tophub仅兜底

评分算法

详细算法说明见 references/algorithm.md

五维加权评分

Score = (0.35×HGR_norm + 0.25×CPRI/100 + 0.15×置信度 + 0.15×content_fit + 0.10×timing_match) × 100 × 文化适配
指标权重说明
------------------
HGR(热度增速)35%(H_t − H_{t−1}) / H_{t−1} × 100,HGR>200%→红色告警
CPRI(跨平台共振)25%平台数×15 + (51-排名) + 时效加成,≥60→高共振
置信度15%数据源可信度
内容适配度15%跨平台数+排名综合
时机匹配10%成长期=1.0,其他=0.5

辅助指标

  • EMA:α=0.4,预测下一时刻热度
  • 历史相似度:Jaccard similarity ≥ 0.7 → 额外加权
  • 文化适配:国际话题 ×(普世1.0 / 中等0.7 / 高距离0.4)
  • 时机阶段:萌芽0-6h / 成长6-24h / 成熟24-48h / 衰退>48h

流水线步骤

  1. 采集:collector.py 并发抓取13个数据源(含 image_urls 提取)
  2. 标准化:normalizer.py 统一数据模型(含 image_urls 透传)
  3. 去重:deduplicator.py 余弦相似度≥0.85合并
  4. 关键词过滤:keyword_filter.py 三层过滤(基础→必须→过滤)
  5. 评分:predictor.py 五维加权评分
  6. 质量门:quality_check.py 剔除不合格话题
  7. 交付:写入 JSON + 7天旧文件自动清理

详细流程见 references/pipeline.md


质量门规则

交付前检查:

  • [ ] 过滤词未命中(政治/暴力/谣言/广告)
  • [ ] 24h内未重复交付
  • [ ] 至少一个官方/可信来源
  • [ ] 时效窗口为成长期或成熟期有差异化角度
  • [ ] degraded源不超过50%(阈值从30%调整,避免3/9降级就全拒)
  • [ ] login_required 状态的数据源(如有,必须已通知人工确认)

Chrome 桥接图片提取

chrome_bridge.py 实现了双重回退机制,MAX_IMAGES_PER_TOPIC=10 控制每个话题最多配图数:

图片分配策略:

  • 1:1 对应:页面上提取的图片按顺序1:1分配给话题
  • YouTube 多分辨率扩展:从1张缩略图URL提取video_id,构造maxresdefault/hqdefault/sddefault/mqdefault/default共5张
  • 其他平台:页面级提取,通常1张/话题
  1. AppleScript JS_extract_page_image_urls):在 Chrome 标签页执行 JS 提取 DOM 图片
    • ⚠️ 需要用户手动开启 Chrome "允许 Apple 事件中的 JavaScript"
    • macOS 安全策略限制,无法通过脚本自动开启
  2. CDP_extract_image_urls_via_cdp):通过 Chrome DevTools Protocol 执行 JS
    • 需要 Chrome 以 --remote-debugging-port=9222 启动:open -a 'Google Chrome' --args --remote-debugging-port=9222
    • main.py 启动时自动检测 CDP 端口(_check_cdp_available),不可用时优雅降级跳过图片提取
    • 依赖 Node.js + ws 模块(全局安装)
    • Node.js 路径:/Users/kelly/Library/Application Support/QClaw/openclaw/config/bin/node
    • NODE_PATH:/Users/kelly/Library/Application Support/QClaw/npm-global/lib/node_modules

各平台 CDP CSS 选择器:

  • YouTube: ytd-rich-item-renderer img[src*="vi/"]
  • TikTok: img[src*="tiktokcdn.com"]
  • 小红书: img[src="xhscdn"], img[src="sns-webpic-qc"]
  • Twitter: img[src*="pbs.twimg.com"]

交付 JSON 字段

{
  "run_id": "uuid",
  "run_at": "ISO8601",
  "domestic_top2": [
    {
      "title": "话题标题",
      "source_platform": "baidu",
      "heat_score": 123456,
      "image_urls": ["https://...", "https://..."],  // 1-10张配图
      "score": 55.27,
      "content_type": "资讯",
      "tone": "理性客观",
      "audience": "泛大众",
      "suggested_angles": ["事件梳理", "深度分析"],
      "content_description": "..."
    }
  ],
  "international_top2": [...],
  "alerts": {"red": [], "yellow": []},
  "source_health": {"weibo": "ok", ...},
  "stats": {"raw_count": 352, "normalized_count": 324, "scored_count": 324}
}

目录结构

~/.qclaw/workspace-agent-43c8c1ee/
├── scripts/
│   ├── main.py          # 主流水线(含关键词过滤 + 7天文件清理)
│   ├── collector.py     # 13个数据源采集(含 image_urls + fallback)
│   ├── chrome_bridge.py # Chrome桥接 + CDP图片提取
│   ├── predictor.py     # 五维评分算法
│   ├── normalizer.py    # 数据标准化(含去重 + image_urls 透传)
│   └── quality_check.py # 质量检查(degraded阈值0.5)
├── config/
│   ├── platforms.yaml   # 平台配置
│   ├── thresholds.yaml  # 算法阈值
│   └── frequency_words.txt # 关键词规则
├── queue/               # 交付JSON
├── data/                # 中间数据(7天自动清理)
└── memory/              # 运行记录

管理命令

  • 定时任务:openclaw cron list / edit --enabled false / run
  • 手动执行:cd ~/.qclaw/workspace-agent-43c8c1ee && python3 scripts/main.py
  • 关闭Chrome桥接:HOTSPOT_CHROME_BRIDGE=0 python3 scripts/main.py
  • 跳过降级检查:SKIP_DEGRADED_CHECK=1 python3 scripts/main.py
  • 单测桥接:python3 scripts/chrome_bridge.py --platform youtube_trending --wait 7 --limit 12 --pretty

版本历史

共 5 个版本

  • v1.0.4 1、7个脚本同步(collector/main/chrome_bridge/normalizer/predictor/quality_check/requirements) 2、SKILL.md:CDP 说明改为 --remote-debugging-port=9222 启动方式,移除 xbrowser 引用,数据源数量从 9 更正为 13 当前
    2026-05-19 15:55 安全 安全
  • v1.0.3 增加热点相关图片
    2026-05-16 00:53 安全 安全
  • v1.0.2 # 任务记录:固化 hotspot-extractor skill 铁律(A→B→C / 登录人工确认 / 新源落库) ## Objective 用户第三次明确要求:把三条规则更新到 hotspot-extractor skill 铁律中。 1. 被拦截或采集量 0 → 先 A 后 B;仍无数据探索新源,最多 3 个;3 个仍无结果则停止该源、继续流水线。 2. 探索成功的新数据源必须加入数据源库,作为下次常规采集源使用。 3. 任何网站需要登录必须返回人工确认,不能私自降级或不采集。 ## 现状检查 - `~/.qclaw/skills/hotspot-extractor/SKILL.md` 顶部铁律仅剩 2 条(登录确认 + 状态如实反馈),A→B→C 与新源落库两条丢失。 - 微博主路径仍记录为 `s.weibo.com/top/summary`,但 collector 已切换至 `api.zxki.cn/api/jhrs?type=weibo`。 ## Actions - 将「⚠️ 铁律(不可违反)」从 2 条扩为 4 条: 1. 登录/验证码/人机验证 → `status=login_required`,不得静默降级。 2. 拦截或 0 条 → A 备用 API → B Chrome 桥接 → C 探索 3 个新源;3 个仍空才允许停止该源;`status=ok + 0 条` 视为异常。 3. 探索成功的新源必须更新 `config/platforms.yaml`、`references/data-sources.md`、collector 代码。 4. 状态如实反馈,不得隐瞒失败/降级/拦截/登录/0 条。 - 数据源表中微博主路径修正为 `api.zxki.cn/api/jhrs?type=weibo`,并备注 Sina Visitor System 拦截。 - `~/self-improving/memory.md` 追加铁律最终版条目。 - `memory/2026-05-13.md` 追加 10:34 条目。 ## Conclusions - skill 铁律已恢复到完整 4 条版本,且与 collector 实际行为一致。 - 教训:以后修改 skill 铁律必须先 read 全文再 edit,逐条核对,避免丢条目。
    2026-05-13 11:01 安全
  • v1.0.1 已包含最新修复: 1、微博主路径改为 api.zxki.cn/api/jhrs?type=weibo,解决微博 0 条问题。 2、s.weibo.com/top/summary 已标记为 Sina Visitor System 拦截废弃路径。 3、固化 4 条铁律: 登录/验证码/人机验证必须人工确认。 被拦截或 0 条必须 A→B→C。 新数据源探索成功必须加入数据源库。 失败、降级、拦截、登录、0 条必须如实反馈。 4、国外热点需要先开启vpn,并在chrome上登录好相关网站
    2026-05-13 10:49 安全
  • v1.0.0 Initial release
    2026-05-12 11:12 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

ai-intelligence

Self-Improving + Proactive Agent

ivangdavila
自我反思+自我批评+自我学习+自组织记忆。智能体评估自身工作、发现错误并持续改进。
★ 1,369 📥 319,536
developer-tools

Github

steipete
使用 `gh` CLI 与 GitHub 交互,通过 `gh issue`、`gh pr`、`gh run` 和 `gh api` 管理议题、PR、CI 运行及高级查询。
★ 672 📥 324,861
ai-intelligence

self-improving agent

pskoett
捕获经验教训、错误及修正内容,以实现持续改进。适用于以下场景:(1)命令或操作意外失败;(2)用户纠正Claude(如“不,那不对……”“实际上……”);(3)用户请求的功能不存在;(4)外部API或工具出现故障;(5)Claude发现自身
★ 4,070 📥 803,990