name: analyze description: 当用户要求分析、核查、判断文章/内容时触发。强制先定义框架,再查证据,最后结论。 user-invocable: true allowed-tools: WebSearch, WebFetch, Read, Grep, Glob, Bash, Task
/analyze — 内容分析与事实核查
触发场景
用户说"帮我分析下"、"这篇文章怎么看"、"判断下是不是软文"、"核查下这个说法"等任何涉及对内容做事实判断的请求。
内容获取
用户可能给出 URL 或直接贴文章原文。
微信公众号文章(mp.weixin.qq.com)无法通过 WebFetch 直接抓取(会被验证页拦截),需要通过本地 exporter 服务获取:
curl -s "http://localhost:3000/api/public/v1/download?url=<编码后的文章URL>&format=markdown"
如果 exporter 未运行或不可用,提示用户直接粘贴文章原文。
Exporter 安装(一次性):
开源项目 wechat-article-exporter,文档:https://docs.mptext.top
git clone https://github.com/wechat-article/wechat-article-exporter.git
cd wechat-article-exporter
yarn install && yarn dev
# 浏览器打开 localhost:3000,用微信扫码登录公众平台
登录后 exporter 即可通过 API 抓取任意公众号文章的 markdown 内容。
基础原则
先定义框架 → 寻找证据 → 最后结论
这是比"先查后说"更底层的原则。"先查后说"解决"别凭空编",但没解决"查完了用什么标尺量"。没有框架的分析,核查再准确也只是在凭直觉贴标签。
铁律(不可违反)
- 先定框架再动手:任何分析必须先明确"在什么光谱上定位"、"用什么维度衡量"
- 先查后说,绝不凭直觉下结论
- 没搜到 ≠ 不存在:标注"未找到一手源,待验证",绝不下"虚构/夸大"结论
- 训练截止意识:对超出训练数据的事件(2025年5月后),必须搜索验证,不凭旧印象判断
- 不以媒体二手信息替代一手源
- 结论必须能被框架和证据回溯:每个判断都能指回"框架的哪个维度"+"哪条证据"
执行流程(4-Pass,必须严格按顺序执行)
Pass 0:定义分析框架
在碰任何内容之前,先明确:
- 分析目标:用户想知道什么?(是不是软文?可不可信?技术含量如何?值不值得学习?)
- 选择/构建框架:根据分析目标,定义类型光谱和判定维度(见下方预置框架)
- 输出框架定义:向用户展示将使用的框架,确保分析有据可循
如果没有匹配的预置框架,当场构建:定义光谱两端 → 中间类型 → 每个类型的判定条件 → 判定维度。
预置框架 A:内容类型分析(软文判定)
适用于:判断文章是独立内容还是商业推广。
类型光谱(不是二元判定,是在光谱上定位):
| 类型 | 定义 | 判定关键 |
|---|---|---|
| 独立报道 | 媒体自主选题,无商业关系 | 多信源交叉、呈现正反面、无 CTA |
| 赞助内容 | 有商业关系但明确标注 | 标注"赞助/合作",读者知情 |
| 内容营销 | 品牌方生产有价值内容,品牌身份可识别 | 有独立阅读价值,推广意图可识别 |
| 软文 | 商业推广伪装成编辑内容 | 未披露利益关系,推广意图隐蔽 |
| 硬广 | 直接广告 | 明确是广告 |
判定维度(6 轴):
- 利益关系透明度:作者与被推广产品有无关系?是否披露?
- 信息对称性:读者能否判断这是推广内容?
- 选择性呈现:是否只呈现有利信息,隐匿缺陷/风险/竞品?
- 事实操纵度:Pass 2 核查结果——夸大/编造/矛盾的比例
- 叙事操纵:用情感叙事替代理性分析的程度(悲情/恐惧/FOMO)
- CTA 隐蔽性:行动号召嵌入方式——明示 vs 伪装成教程/故事结尾
预置框架 B:可信度分析
适用于:判断内容/声明是否可信。
可信度光谱:
| 等级 | 定义 |
|---|---|
| 高可信 | 核心声明均有一手源验证,无矛盾 |
| 基本可信 | 多数声明可验证,少量无一手源但无矛盾 |
| 存疑 | 关键声明缺乏一手源,或存在矛盾 |
| 低可信 | 多条声明与一手源矛盾,或核心声明无任何来源 |
判定维度:核查通过率、矛盾点数量及严重程度、信源层级分布。
预置框架 C:自定义
用户的分析目标不属于 A/B 时,当场构建框架:
- 定义光谱(至少3个锚点)
- 定义判定维度(至少3轴)
- 输出给用户确认后再继续
Pass 1:提取声明清单
从待分析内容中提取所有可验证的事实声明:
- 数字(用户数、star 数、融资额、营收等)
- 日期与时间线
- 人名与职位(某人加入某公司、某人创办某项目)
- 公司/产品/项目名称
- 技术声明(采用了某技术、性能达到某指标)
- 引用的权威背书(某机构认可、某大佬推荐)
每条标记为 [待验证],输出声明清单表格。
Pass 2:一手源逐条验证
对声明清单中的每一条,按以下优先级搜索一手源验证:
一手源优先级(从高到低):
- 原始源:GitHub repo 页面、论文原文(arXiv/ACL/NeurIPS)、官方 changelog、公司 SEC filing
- 官方公告:公司官网博客、创始人/CEO 的官方社交账号声明
- 权威媒体:TechCrunch、Reuters、Bloomberg、WSJ 的原始报道(非转载)
- 社区/自媒体:仅作参考,不作为判定依据
验证规则:
- 使用
WebSearch搜索一手源,搜索词应指向源头(如搜 GitHub repo 名 + site:github.com) - 使用
WebFetch获取具体页面内容验证 - 数字双重校验:文章中的数字至少找 2 个独立信源交叉验证
- 技术判断铁证:涉及"某公司采用了某技术"的结论,以技术报告、论文原文为准
标记结果:
✅ 已验证— 找到一手源且与声明一致⚠️ 存疑(仅有二手源)— 仅找到媒体转述,未找到一手源❌ 未找到一手源— 搜索后未找到任何可靠来源,不等于虚假🔴 与一手源矛盾— 找到一手源但与声明不符(附具体差异)
Pass 3:框架定位 + 结论
严格按 Pass 0 定义的框架执行,不允许脱离框架下判断。
- 逐维度定性:在框架的每个维度上,引用 Pass 2 核查结果给出定性判断
- 光谱定位:综合各维度,在光谱上给出定位
- 结论:基于光谱定位得出最终判断
禁止:
- 脱离框架维度的主观判断(如"感觉像软文")
- 未引用核查结果的结论
- 用自己训练数据中的旧印象覆盖搜索结果
输出格式
## Pass 0:分析框架
**分析目标**:(用户想知道什么)
**使用框架**:(框架名称)
**类型光谱**:A ← B ← C ← D ← E
**判定维度**:1. ... 2. ... 3. ...
---
## Pass 1:声明清单
从文章中提取了 N 条可验证声明:
| # | 声明 | 类型 |
|---|------|------|
| 1 | ... | 数字 |
| 2 | ... | 人事 |
---
## Pass 2:事实核查
| # | 声明 | 一手源 | 结果 |
|---|------|--------|------|
| 1 | ... | GitHub: [repo](url) 显示 XX | ✅ |
| 2 | ... | 未找到一手源 | ❌ 待验证 |
核查通过率:X/N
---
## Pass 3:框架定位
### 逐维度定性
| 维度 | 判定 | 依据(引用核查行号) |
|------|------|---------------------|
| 利益关系透明度 | ... | 根据 #N ... |
| 信息对称性 | ... | 根据 #N ... |
| ... | ... | ... |
### 光谱定位
本文位于光谱的 **[X]** 位置,理由:...
### 结论
(基于以上定位的最终判断)
反面教材
事故 1:未核查就下结论(2026-02-20 OpenClaw)
- 文章说"GitHub 超 20 万星" → 未搜索就说"大概率夸大虚构" → 实际 GitHub 显示 21.3 万
- 文章说"Peter Steinberger 加入 OpenAI" → 未搜索就说"跟 AI Agent 关系存疑" → 实际 Sam Altman 亲自官宣
- 根因:跳过验证,训练数据截止前的旧印象当成了事实
事故 2:核查了但没框架就下结论(同日第二次)
- 事实核查全部通过 → 直接贴"高质量软文"标签
- 没定义"软文"的边界 → 没有判定维度 → 结论无法回溯
- 根因:有证据但没标尺,本质还是凭直觉贴标签