Back to skills
extension
Category: Productivity & OfficeNo API key required

瓜田老李-吃瓜追踪器

当用户想要追踪热点事件、获取“吃瓜”(即八卦/突发新闻)简报,或跟进某一持续发酵的事件时,应使用本技能。触发词包括:“今天有什么瓜”、“吃瓜”、“XX出什么事了”、“跟进一下那个事”、“XX事件最新进展”、“帮我吃一下这个瓜”、“八卦一下”、“热点追踪”、“XX行业最近有什么新闻”等。输出形式为多信源、带时间戳、人物关系清晰的简报,同时提供控制台与HTML两种格式——内容绝不来自训练数据,始终基于实时搜索。

personAuthor: ousb2012hubModelScope

吃瓜追踪器(gossip-tracker)

把一个热点事件拆成时间线 + 人物关系 + 阵营 + 一句结论的轻量级研究工具。所有信息必须来自实时搜索,不能凭记忆编。

这个 skill 干什么

用户扔过来一个事件名(e.g. "那个谁谁谁的瓜"),这个 skill 会:

  1. 搜证 — 多源、跨平台搜索事件的最新进展和关键节点
  2. 梳理 — 整理成时间线、人物图谱、各方表态
  3. 判断 — 给一个事实层面的总结("现在局面是 X,争议在 Y"),不替用户站队
  4. 产出 — 控制台里给一份能直接读的摘要 + 一份可分享的 HTML 报告

适用场景:

  • 突发新闻:某公司/某人物刚出事,第一时间想知道来龙去脉
  • 持续追踪:某个事件过了几天,进展到哪了
  • 行业八卦:XX 行业最近有什么大事
  • 跨语种:能搜中文/英文/小语种,跨地域

核心铁律

绝对不能凭训练数据编故事。 吃瓜的核心是"真",编出来的瓜毫无价值还可能害人。每一条事实都必须挂信源,每一条时间线节点都必须能搜到。

具体来说:

  • ❌ "我印象中 X 是 Y" → 不行,必须搜
  • ❌ "据说 Z 公司做了..." → 不行,要给具体信源
  • ✅ "据 [微博/小红书/财新/Reuters 2026-06-24],X 是 Y" → 这才是合格输出
  • 搜不到 → 老实说搜不到,不要硬编

不要硬凑无关人物/关联。 吃瓜报告只写直接相关的人物和事件。如果某个人物/事件和核心争议没有直接关系,就不写。不要为了让报告"更丰富"而把不相关的人拉进来。

搜索工具选择(AI 自己挑)

让 AI 根据事件性质和实际可用的工具自己选择。但要真的搜——这是底线。

最少搜几次:3 轮起步。

  • 第 1 轮:事件名+时间 → 找全貌
  • 第 2 轮:具体人物/公司名 → 找细节
  • 第 3 轮:最新进展+各方表态 → 找分歧
  • 第 4 轮(可选):网友/粉丝/路人的具体观点和评论 → 找吃瓜群众视角

搜不到怎么办:换关键词、换平台、换语种,不要编。真搜不到时在报告里明写"截至搜索时点未发现 X 信源"。

工作流

四个阶段,全跑完

阶段 1:搜索建档

目标:搜出 5-15 条可引用的事实点。

操作

  1. 收到事件名后,先脑内拆出 3-5 个搜索角度:
    • 事件本身("X 发生了什么")
    • 关键人物("X 的 CEO 怎么说")
    • 时间锚点("X 2026 年 6 月最新")
    • 反对方/不同观点("X 争议"、"X 质疑")
    • 行业/板块影响("X 行业 受影响")
    • 网友/粉丝/路人视角("X 网友 评论"、"X 粉丝 反应")
  2. 跑 3-5 次搜索(不同关键词、不同工具),记录每条事实点:
    • 时间戳(最好精确到日)
    • 信源(哪个平台/媒体/账号)
    • 事实陈述(中立,不加工)
  3. 搜完做一次事实去重:同一件事多个信源说 → 选最权威的那个作为主信源,其他标"另据 X 也报道"

产出docs/吃瓜_YYYY-MM-DD_<event>/raw_search.md

格式:

## 搜索 1:<query>
工具:mmx-search
时间:2026-06-24 15:30

### 找到的事实
- [2026-06-22] 某公司在港交所发布公告,称... (来源: 财新)
- [2026-06-23] 创始人发内部信,提到... (来源: 36 氪)
- [2026-06-24] 业内人士透露,... (来源: 微博 @某某)

### 没搜到
- 没有找到 X 公司的官方回应

阶段 2:结构化梳理

把 raw_search.md 里的事实点按维度重新组织

必有的维度

  1. 时间线(最重要)— 按时间正序排列所有事实点,精确到日,每个节点挂信源
  2. 人物/实体— 谁在局里,各自什么角色
  3. 阵营/表态— 支持的、反对的、观望的
  4. 争议焦点— 分歧在哪,谁和谁吵
  5. 当前状态— 截止搜索时,事情进展到什么程度
  6. 待观察— 接下来可能怎么发展(标"未验证")
  7. 吃瓜群众 & 粉丝视角(新增)— 从搜索结果中提炼网友/粉丝/路人的具体观点和评论

写时间线时的时间精度

  • 精确到日:"2026-06-22"
  • 精确到月:"2026 年 6 月"
  • 模糊:"近期"、"最近" → 一定要在报告里标"具体时间未公开"
  • 交叉验证:同一件事多个信源报道 → 列出主信源 + 其他信源作为佐证

"吃瓜群众 & 粉丝视角"怎么写

  • 从搜索结果中提炼网友/粉丝/路人的具体观点具体评论
  • 分三类:吃瓜群众/反对派、粉丝/支持派、中间派/理性派
  • 每个观点挂信源(来源:微博/今日头条/腾讯新闻)
  • 引用具体评论时保持原话,不要改写

产出docs/吃瓜_YYYY-MM-DD_<event>/briefing.md

阶段 3:生成 HTML 报告

写一份带时间线样式、人物卡片的 HTML 报告。不强制——用户没要时跳过。

风格

  • 配色:用户没指定主色 → 用骚气橙红(#FF6B35)作为主色,配深灰底
  • 暗色主题(吃瓜都在手机上看)
  • 时间线竖排,左边是日期/时间,右边是事件卡片
  • 人物关系用简单的标签云

模板(写到 templates/report.html,吃瓜时复制后填充):

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>{{event_name}} · 吃瓜报告</title>
<style>
  body { font-family: -apple-system, "PingFang SC", "Microsoft YaHei", sans-serif;
         background: #1a1a1a; color: #e8e8e8; max-width: 720px; margin: 0 auto;
         padding: 24px; line-height: 1.6; }
  h1 { color: #FF6B35; border-bottom: 2px solid #FF6B35; padding-bottom: 8px; }
  h2 { color: #FFB088; margin-top: 32px; }
  .meta { color: #888; font-size: 13px; }
  .timeline { position: relative; padding-left: 24px; border-left: 2px solid #444; }
  .event { background: #2a2a2a; border-radius: 8px; padding: 12px 16px; margin: 12px 0;
           border-left: 3px solid #FF6B35; }
  .event .time { color: #FF6B35; font-size: 13px; font-weight: bold; }
  .event .source { color: #888; font-size: 12px; margin-top: 4px; }
  .quote { background: #2a2a2a; border-left: 3px solid #FFD700; padding: 8px 12px;
           margin: 8px 0; font-style: italic; color: #ccc; }
  .tag { display: inline-block; background: #FF6B35; color: #1a1a1a; padding: 2px 8px;
         border-radius: 4px; font-size: 12px; margin: 2px; }
  .warn { color: #FFA500; font-size: 12px; }
  .footer { color: #666; font-size: 12px; margin-top: 32px; padding-top: 16px; border-top: 1px solid #333; }
</style>
</head>
<body>

<h1>🍉 {{event_name}}</h1>
<p class="meta">吃瓜时间 · {{current_time}} · AI 整理,仅供参考</p>

<h2>📌 一句话总结</h2>
<p>{{one_line_summary}}</p>

<h2>⏱️ 时间线</h2>
<div class="timeline">
  {{timeline_events}}
</div>

<h2>👥 关键人物/实体</h2>
{{people_cards}}

<h2>⚔️ 各方表态</h2>
{{stances}}

<h2>❓ 争议焦点</h2>
{{controversies}}

<h2>🔮 待观察</h2>
{{to_watch}}

<div class="footer">
  <p>⚠️ 本报告由 AI 基于公开信源整理,所有事实点均挂信源,仅供参考。</p>
  <p>信源覆盖:{{source_list}}</p>
</div>

</body>
</html>

占位符替换

def fill_html_template(template_path, event_data, output_path):
    """event_data 是 dict,键名对应模板占位符"""
    html = Path(template_path).read_text(encoding="utf-8")

    # 时间线条目
    timeline_html = "\n".join(
        f'<div class="event">'
        f'<div class="time">{e["time"]}</div>'
        f'<div>{e["content"]}</div>'
        f'<div class="source">来源: {e["source"]}</div>'
        f'</div>'
        for e in event_data["timeline"]
    )

    # 人物卡
    people_html = " ".join(
        f'<span class="tag">{p["name"]} · {p["role"]}</span>'
        for p in event_data["people"]
    )

    # ... 其他占位符类似

    html = html.replace("{{event_name}}", event_data["name"])
    html = html.replace("{{current_time}}", event_data["time"])
    html = html.replace("{{one_line_summary}}", event_data["summary"])
    html = html.replace("{{timeline_events}}", timeline_html)
    html = html.replace("{{people_cards}}", people_html)
    html = html.replace("{{stances}}", event_data["stances"])
    html = html.replace("{{controversies}}", event_data["controversies"])
    html = html.replace("{{to_watch}}", event_data["to_watch"])
    html = html.replace("{{source_list}}", event_data["sources"])

    Path(output_path).write_text(html, encoding="utf-8")

产出docs/吃瓜_YYYY-MM-DD_<event>/report.html

阶段 4:控制台摘要

这是必有的输出,HTML 是可选的。控制台摘要的结构:

🍉 吃瓜时间 · 2026-06-24 15:30
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

📌 一句话总结
[2-3 句话说清楚这瓜是什么、走到哪了、关键在啥]

⏱️ 时间线
• 2026-06-20 [来源] 事件起源...
• 2026-06-22 [来源] 关键转折...
• 2026-06-24 [来源] 最新进展...

👥 谁在局里
• [人物A] — [角色] — [目前态度]
• [人物B] — [角色] — [目前态度]

⚔️ 核心争议
[一句话讲清谁和谁吵、吵什么]

👥 吃瓜群众 & 粉丝视角

吃瓜群众(路人/反对派)
• 核心观点1:...(来源:...)
• 核心观点2:...(来源:...)
• 具体评论:"..."(来源:...)

粉丝(支持派)
• 核心观点1:...(来源:...)
• 核心观点2:...(来源:...)
• 具体评论:"..."(来源:...)

中间派/理性派
• 核心观点1:...(来源:...)
• 具体评论:"..."(来源:...)

❓ 待观察
[接下来可能怎么发展、关注什么]

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
⚠️ 信息均来自公开搜索,仅供参考
📄 完整报告: docs/吃瓜_XXX/report.html

信源规范

吃瓜对信源的要求比研究更严,因为八卦容易被造谣。

信源等级

  • A 级(可单引):新华社、人民日报、央视、财新、Reuters、AP、Bloomberg、公司官方公告、监管机构公告
  • B 级(需交叉验证):36 氪、虎嗅、华尔街见闻、FT、NYT、WSJ、第一财经
  • C 级(线索源):微博热搜、知乎热榜、小红书、Twitter/X trending、Reddit
  • D 级(不单引):未署名自媒体、营销号、来源不明的截图

引用规则

  • 关键事实(A 级事件)→ 必须有至少 1 个 A 级信源
  • 争议性陈述 → 必须有 2 个独立信源
  • C 级信源 → 在报告里明写"据微博/小红书用户",不要当主信源
  • 找不到信源 → 明写"暂无公开报道",不要脑补

特别注意

  • 截图、聊天记录、单方面陈述 → 必须标"未经当事方证实"
  • 涉及个人隐私、名誉的 → 不传播未经证实的具体细节
  • 涉及上市公司的 → 优先用交易所/公司公告,不用社交媒体爆料

不中断原则

跟 research 报告一样,别中途停下来问。用户给你一个事件,搜 → 整理 → 输出一气呵成。

| 场景 | 怎么继续 | |------|---------| | 搜不到某个事实 | 写"暂无公开信源",继续往下 | | 多个信源说法不一 | 列出来,让用户自己判断 | | 事件还在发展中 | 标"截至搜索时点 YYYY-MM-DD HH:MM" | | 用户没说要 HTML | 默认只输出控制台摘要 + briefing.md | | 事件涉及敏感内容 | 转述事实不下判断;具体人名隐去或用"相关人士" | | 完全没有信源 | 老实说"搜不到",绝不用训练数据填 |

不做的事

  • ❌ 编造任何时间、人物、引语
  • ❌ 把传闻当事实
  • ❌ 替事件主角做道德判断
  • ❌ 输出一个"看起来很专业但内容是空的"报告
  • ❌ 跳过搜索直接出报告(这是底线)
  • ❌ 用"据说"、"听说"、"有人爆料"等模糊措辞作为主信源(这些只能作为线索)
  • ❌ 硬凑无关人物/关联(和核心争议没有直接关系的人/事就不写)

工作目录结构

docs/
  吃瓜_YYYY-MM-DD_<event_slug>/
    raw_search.md        # 阶段 1:原始搜索记录
    briefing.md          # 阶段 2:结构化梳理
    report.html          # 阶段 3:HTML 报告(可选)
    sources.md           # 信源清单

event_slug 用事件名拼音或简短英文,例如 腾讯_混元大模型_发布会Kimi_融资OpenAI_董事会

失败模式与恢复

| 现象 | 原因 | 处理 | |------|------|------| | 搜不到任何东西 | 事件太新/太小众,搜索引擎还没收录 | 换关键词、换语种、查官方账号 | | 搜出来的全是英文 | 事件海外为主 | 接受英文结果,中文翻译后给用户 | | 时间线对不上 | 不同信源时间戳不一致 | 列出来让用户判断,或用"约 6 月 22 日" | | 涉及多个事件混在一起 | 关键词歧义 | 主动问用户一次"你说的 X 是 A 还是 B",问完继续 | | 工具超时 | 临时网络问题 | 重试一次;连续失败就在报告里说"信源 X 暂时不可达" | | AI 想凭印象写 | 训练数据诱惑 | 强制再搜一次;搜不到就明说 | | 硬凑无关人物/关联 | 想让报告"更丰富",把不直接相关的人/事拉进来 | 删掉。吃瓜报告只写直接相关的人物和事件,不要硬凑关联。如果某个人物/事件和核心争议没有直接关系,就不写。 |

质量自检

出报告前必须过一遍:

def self_check(briefing_md, raw_search_md):
    """出报告前的自检"""
    checks = []

    # 1. 每条事实是否都挂信源
    facts = extract_facts(briefing_md)  # 简单正则提"日期+内容"
    no_source = [f for f in facts if not has_source(f)]
    checks.append(("每条事实挂信源", len(no_source) == 0,
                   f"{len(no_source)} 条无信源"))

    # 2. raw_search 至少 3 轮
    rounds = count_search_rounds(raw_search_md)
    checks.append(("搜索至少 3 轮", rounds >= 3, f"实际 {rounds} 轮"))

    # 3. 至少 1 个 A 级或 2 个 B 级信源
    tier_a = count_sources_by_tier(raw_search_md, "A")
    tier_b = count_sources_by_tier(raw_search_md, "B")
    checks.append(("A/B 级信源充足",
                   tier_a >= 1 or tier_b >= 2,
                   f"A={tier_a}, B={tier_b}"))

    # 4. 时间线节点不少于 3 个
    timeline_events = count_timeline_events(briefing_md)
    checks.append(("时间线 ≥ 3 节点", timeline_events >= 3,
                   f"实际 {timeline_events}"))

    # 5. 没有凭印象写的内容(用关键词嗅探)
    suspicious = ["我记得", "印象中", "应该", "好像", "听说", "据说", "据传"]
    no_proof = search_suspicious_phrases(briefing_md, suspicious)
    checks.append(("无凭印象/模糊措辞", len(no_proof) == 0,
                   f"{len(no_proof)} 处"))

    for name, ok, detail in checks:
        mark = "✓" if ok else "✗"
        print(f"{mark} {name}: {detail}")
    return all(ok for _, ok, _ in checks)

自检不通过 → 回去补搜索或删掉对应内容。

额外检查

  • ✅ 时间线是否精确到日?
  • ✅ 每个时间线节点是否挂了信源?
  • ✅ 是否有"吃瓜群众 & 粉丝视角"部分?
  • ✅ 是否硬凑了无关人物/关联?(如果有,删掉)