Show HN:Bullshit Detector——用于核查视频和文章事实的 Agent Skills
英文标题:🔶 Show HN: Bullshit Detector – agent skills that fact-check videos and articles
Bullshit Detector 是一组可移植的 Agent Skills,可对 YouTube 视频、文章、推文、PDF 和 TikTok 内容逐条提取并核查声明,输出带来源的验证报告和 0—10 分 BS 评分。该工具以纯 Markdown 和自包含 Python 脚本构建,可在 Claude Code、Codex、OpenCode 等支持 skills 格式并具备网页搜索能力的环境中运行。其核心设计将内容抓取与事实判断分离,抓取端无需 API Key,分析端则要求每项判定都由独立来源支撑,而不能仅依赖模型记忆。项目还提供摘要、解释和报告分享能力,并以实际视频、TikTok 及自身 README 的核查报告展示效果与局限。
106.7 KB
中文
用于核查互联网内容事实的 Agent Skills。将你的 agent 指向一段爆火的 YouTube 视频、文章、推文或 PDF,即可获得逐条声明的验证报告、来源,以及 0—10 分的 BS 评分,而不是照单全收诸如“用 AI 赚钱的 10 种方法 🤯”之类的内容。
可移植的 Agent Skills——纯 Markdown 加自包含 Python。它们可在 Claude Code、Codex、OpenCode,以及任何支持 skills 格式且具有网页搜索能力的 harness 中运行。
项目通过 Claude Code 开放构建——AI 帮助打造了这款用于核查 AI 炒作的工具,而这份示例报告则是它在审查自己的同类。
关注 @SerhiiFounder 以获取新 skills 和事实核查实验,或订阅新闻邮件,让内容直接发送到你的收件箱。
-
如果尚未安装,请先安装 uv(抓取脚本使用它来自动解决自身依赖)。
-
运行 skills.sh 安装器,并选择所需的 skills 和 agents:
npx skills@latest add SerhiiKorniienko/bullshit-detector
-
向你的 agent 提问:“is this bullshit? ”、“fact-check this video”、“summarize ”、“explain the part at 12:30”。
作为 Claude Code 插件安装
相比复制文件后自行维护,你是否更希望使用一个在新版本发布时会自动更新的托管套件?在 Claude Code 中运行:
/plugin marketplace add SerhiiKorniienko/bullshit-detector /plugin install bullshit-detector@serhii-korniienko
两种安装方式,两种理念:
- skills.sh 会将 skills 复制到你的环境中,因此你可以自行修改并将其变成自己的工具。适用于任何 agent(Claude Code、Codex、OpenCode 等)。
- 插件会将它们作为只读、始终保持最新的套件进行管理——适合只想直接使用,并希望随项目演进持续更新的用户。仅适用于 Claude Code。
二选一,不要两个都装——同时安装会让 Claude Code 获得每个 skill 的两份副本。
它也适用于 Claude Code 之外的环境——这些 skills 就是纯 Markdown 加自包含脚本。针对各类环境的完整操作说明及注意事项见 SETUP.md:
一个拥有 100 万播放量的财经博主告诉你,存在“仅有的 14 种用 AI 赚钱的方法”。其中有多少是真的?播放量、制作水准和自信都不是证据。解决办法很朴素:提取每一项声明,逐一通过独立来源进行核查,并对经得起检验的内容评分。这正是具备网页搜索能力的 agents 擅长、而人类通常懒得做的工作。
解决方案:bullshit-detector——提供逐条声明判定(✅ 已证实 / 🟡 合理可信 / 🟠 误导性表述 / ❌ 错误 / ❓ 无法验证)、炒作信号扫描、利益动机分析(“如果你相信这件事,谁会受益?”),以及 0—10 分 BS 评分。判定必须附带来源——该 skill 禁止仅凭模型记忆确认或驳斥某项说法。
#2:Agents 无法观看视频
你的 agent 无法坐下来观看一段 27 分钟的视频,而 YouTube 的官方 API 不会为你不拥有的视频提供字幕。推文也是类似情况:官方 API 现在按帖收费;付费墙文章亦然。
解决方案:fetch-content——一个无需 API Key、可将任意 URL 转换为干净文本和元数据的脚本:通过 yt-dlp 获取 YouTube 字幕和 TikTok 字幕,通过可读性提取处理文章,支持 PDF,并通过免费端点获取推文。每一种失败情况都会产生可操作的提示(付费墙 → 粘贴内容;没有字幕 → Whisper),而不是静默猜测。
#3:抓取与判断分离
内容摄取与分析是不同的工作。脚本负责确定性任务(抓取、解析、规范化);agent 负责推理任务(提取声明、搜索、判断)。由于分析 skills 只会接收规范化文本和元数据,未来增加 TikTok 支持时不需要改动任何分析逻辑——同一个检测器既能处理一条推文,也能处理一档 3 小时的播客。
一次针对播放量为 116 万的“用 AI 赚钱”视频的真实运行结果:examples/report-14-ways-to-make-money-with-ai.md。
BS 评分:5/10——真实工具、真实趋势、大师式算术,以及每四分钟一次的销售漏斗。 共验证 12 项声明:4 项已证实、2 项合理可信、3 项具有误导性、0 项错误、3 项无法验证。发现的问题包括:“Renaissance、D.E. Shaw、Two Sigma 只交易员工资金”(这只对其中一家公司的一只基金成立),以及市场统计数据来自该市场自身的公关材料。
另有一次 TikTok 测试——一段播放量 55.2 万的“我们的太阳有一个隐藏双胞胎”视频:examples/report-second-sun-binary-star.md(BS 评分:9/10——真实的天文学术语被拼接进一套虚构的宇宙学叙事)。
有人在 Hacker News 上提出了显而易见的测试:用它核查这份 README。结果见 examples/report-own-readme.md(BS 评分:3/10)。它发现了一个已过时两年的 API 价格,以及一句“30 秒完成设置”的说法——其流程却从安装包管理器开始;两者均已在 v0.4.2 中修复。它还发现一件无法通过编辑修复的问题:证明该工具准确性的唯一证据,是它针对由作者挑选的视频自行生成的报告。
是的,TikTok 也支持——用同样的方式提问:“is this bullshit?https://vt.tiktok.com/…”。
其底层工作方式如下:
-
优先使用内置字幕。 大多数 TikTok 都带有创作者字幕或自动生成字幕。
fetch-content脚本可原生处理这一点——TikTok URL(包括vt.tiktok.com短链接)会返回带时间戳的转录文本,以及观看量、点赞数和转发数,无需下载视频。手动操作同样可以:uvx yt-dlp --list-subs # check what's available uvx yt-dlp --write-subs --sub-langs "eng-US" --skip-download # grab the .vtt
-
没有字幕?使用 Whisper 兜底。 对于无字幕 TikTok 和 Reels,有一个经过验证的本地转录原型正在从 skills/in-progress 演进为
transcribeskill(在 Apple Silicon 上使用 mlx-whisper,无需系统 ffmpeg——PyAV 负责解码音频)。请使用whisper-large-v3-turbo——更小的模型会严重错误识别单词,进而破坏声明提取。
分析端不关心内容以何种方式获取——无论来自 7 分钟的 TikTok 还是 3 小时的播客,检测器接收到的都是规范化文本和元数据(这正是设计原则 #3)。
所有 skills 都是由模型调用的:你可以显式调用它们;当你的请求符合其使用场景时,agent 也会主动调用它们(例如“is this legit?”会触发检测器)。
对内容进行推理。与来源无关——它们从不在意文本来自哪里。
- bullshit-detector——提取每一项声明,通过网页搜索以独立来源逐条核查,扫描炒作信号,并生成包含逐项判定和 0—10 分 BS 评分的报告卡。
- summarize——结构化 TLDR,包含带时间戳的要点、值得注意的引文,以及诚实回答“是否值得花时间?”的结论。
- explain——从 ELI5 到深度解析,解释内容本身或其中任一概念,并提供术语表及原内容默认读者已具备的前置知识。
将任意来源转换为干净文本和元数据。
- fetch-content——支持 YouTube 转录文本、TikTok 字幕、文章、PDF、推文和本地文件。一个脚本,自动识别来源,无需 API Key。
将报告转为可分享的输出内容。
- share——可直接粘贴发布到 X(串文/单帖)、LinkedIn、Facebook、Reddit、Hacker News 或新闻邮件的文案;另附带品牌标识的图片轮播:适用于 X/Instagram 的 1080×1350 PNG 图片,以及 LinkedIn 文档帖所需的 PDF。
参见 skills/in-progress:compare(跨来源比较同一主题——谁是对的?)、transcribe(为无字幕 TikTok/Reels 提供 Whisper 转录——可用的 mlx-whisper 原型已落地,尚待 SKILL.md)、X 串文遍历。
我正以开放方式构建这些 skills——新的检测器、适配器和真实事实核查报告将随着开发持续加入。
MIT
English / 原文
Agent skills that fact-check the internet. Point your agent at a viral YouTube video, article, tweet, or PDF — get a claim-by-claim verification report with sources and a BS score (0–10) instead of taking "10 WAYS TO MAKE MONEY WITH AI 🤯" at face value.
Portable Agent Skills — plain markdown + self-contained Python. They work in Claude Code, Codex, OpenCode, and any harness that supports the skills format and has web search.
Built in the open with Claude Code — an AI helped build the tool that fact-checks AI hype, and the example report is it auditing its own kind.
Follow @SerhiiFounder for new skills and fact-check experiments, or join the newsletter to get them in your inbox.
-
Install uv if you don't have it (the fetch script uses it to self-resolve its dependencies).
-
Run the skills.sh installer and pick the skills and agents you want:
npx skills@latest add SerhiiKorniienko/bullshit-detector
- Ask your agent: "is this bullshit? ", "fact-check this video" , "summarize ", "explain the part at 12:30".
Install as a Claude Code plugin
Prefer a managed bundle that updates when a new version ships, instead of copied files you maintain yourself? Inside Claude Code:
/plugin marketplace add SerhiiKorniienko/bullshit-detector
/plugin install bullshit-detector@serhii-korniienko
Two ways to install, two philosophies:
- skills.sh copies the skills into your setup so you can hack on them and make them your own. Works with any agent (Claude Code, Codex, OpenCode, …).
- The plugin keeps them as a read-only, always-current bundle — best when you just want it to work and follow along as it evolves. Claude Code only.
Pick one, not both — installing both gives Claude Code two copies of every skill.
Works beyond Claude Code — the skills are plain markdown + self-contained scripts. Full walkthroughs with caveats per surface live in SETUP.md :
A finance guy with 1M views tells you the "only 14 ways to make money with AI". How much of it is real? Views, production value, and confidence are not evidence. The fix is boring: extract every claim, check each against independent sources, and score what survives. That's exactly the work agents with web search are good at and humans never bother doing.
The fix: bullshit-detector — per-claim verdicts (✅ confirmed / 🟡 plausible / 🟠 misleading / ❌ false / ❓ unverifiable), a hype-signal scan, an incentive analysis ("who benefits if you believe this"), and a 0–10 BS score. Verdicts require sources — the skill forbids confirming or refuting from model memory alone.
#2: Agents can't watch videos
Your agent can't sit through a 27-minute video, and YouTube's official API won't give you captions for videos you don't own. Same story with tweets, where the official API now bills per post, and with paywalled articles.
The fix: fetch-content — one script that turns any URL into clean text + metadata with no API keys: YouTube transcripts and TikTok captions via yt-dlp, articles via readability extraction, PDFs, tweets via free endpoints. Every failure mode produces an actionable hint (paywall → paste, no captions → Whisper) instead of a silent guess.
#3: Separation of fetching and judging
Ingestion and analysis are different jobs. Scripts do the deterministic work (fetch, parse, normalize); the agent does the reasoning (extract claims, search, judge). Because analysis skills only ever see normalized text + metadata, adding TikTok support one day touches zero analysis logic — and the same detector works on a tweet and a 3-hour podcast.
A real run against a 1.16M-view "make money with AI" video: examples/report-14-ways-to-make-money-with-ai.md.
BS score: 5/10 — real tools, real trends, guru math, and a funnel every four minutes. 12 claims verified: 4 confirmed, 2 plausible, 3 misleading, 0 false, 3 unverifiable. Among the catches: "Renaissance, D.E. Shaw, Two Sigma only trade employees' money" (true for one fund of one firm), and marketplace stats sourced from the marketplace's own PR.
And a TikTok run — a 552K-view "our Sun has a hidden twin" video: examples/report-second-sun-binary-star.md (BS score: 9/10 — real astronomy vocabulary stitched onto a fabricated cosmology).
Someone on Hacker News asked for the obvious test — run it on this README. examples/report-own-readme.md (BS score: 3/10). It caught a two-year-stale API price and a "30-second setup" that began with installing a package manager, both fixed in v0.4.2, and one thing that can't be fixed by editing: the only evidence this tool is accurate is reports it wrote about videos its author picked.
Yes, TikTok works — ask the same way: "is this bullshit?https://vt.tiktok.com/…".
How it works under the hood:
-
Built-in captions first. Most TikToks ship with creator or auto-generated captions. The
fetch-contentscript handles this natively — TikTok URLs (includingvt.tiktok.comshort links) return a timestamped transcript plus views/likes/reposts, no video download. The same thing by hand:uvx yt-dlp --list-subs <tiktok-url> # check what's available uvx yt-dlp --write-subs --sub-langs "eng-US" --skip-download <tiktok-url> # grab the .vtt -
No captions? Whisper fallback. For caption-less TikToks and Reels there's a validated local-transcription prototype (mlx-whisper on Apple Silicon, no system ffmpeg needed — PyAV decodes the audio) graduating from skills/in-progress as the
transcribeskill. Usewhisper-large-v3-turbo— smaller models garble words badly enough to break claim extraction.
The analysis side doesn't care either way — the detector sees normalized text + metadata whether it came from a 7-minute TikTok or a 3-hour podcast (that's design principle #3).
All skills are model-invoked : you can call them explicitly, and the agent also reaches for them when your request fits ("is this legit?" triggers the detector).
Reason about content. Source-agnostic — they never care where the text came from.
- bullshit-detector — Extract every claim, verify each against independent sources via web search, scan for hype signals, produce a report card with per-claim verdicts and a 0–10 BS score.
- summarize — Structured TLDR with timestamped key points, notable quotes, and an honest "worth your time?" call.
- explain — ELI5 → deep-dive explanation of the content or any concept in it, with a jargon glossary and the prerequisites the original assumes.
Turn any source into clean text + metadata.
- fetch-content — YouTube transcripts, TikTok captions, articles, PDFs, tweets, local files. One script, auto-detects source, no API keys.
Turn reports into shareable output.
- share — Ready-to-paste posts for X (thread/single), LinkedIn, Facebook, Reddit, Hacker News, or a newsletter — plus a branded image carousel: 1080×1350 PNGs for X/Instagram and the PDF that LinkedIn document posts want.
See skills/in-progress: compare (same topic across sources — who's right?), transcribe (Whisper for caption-less TikTok/Reels — working mlx-whisper prototype landed, SKILL.md pending), X thread walking.
I'm building these skills in the open — new detectors, adapters, and real fact-check reports as they land.
MIT