name: youtube-intel description: YouTube内容情报与竞品监测。当用户需要分析YouTube频道、追踪竞品动态、发现内容机会时触发。功能:1) Monitoring - 监测指定频道的更新频率、内容方向、数据表现;2) Discovery - 输入类目/关键词,扫描市场机会与竞争程度。用于选题策划、竞品分析、内容策略制定。
youtube-intel · YouTube内容情报
版本: v2.0 — 重构版 核心理念: 情报工作不是搜一个词等结果就完了。需求分析 → 策略制定 → 数据获取 → 清洗识别 → 保存呈现,缺一不可。
两种模式
Monitoring(竞品监测)
触发词:
- "盯着 XXX 频道"
- "监测这几个频道"
- "这个频道最近发了什么"
Discovery(选题发现)
触发词:
- "我想做 XX 类目,有没有机会"
- "帮我扫描 XX 市场"
- "分析这个赛道"
⚠️ 注意:Discovery 模式按下方六步工作流执行,不是搜一个词就出报告。
Discovery 六步工作流
第一步:需求分析 ← 理解用户真正想要什么,识别模糊性
第二步:策略制定 ← 确定搜索词、子分类、数据源
第三步:数据获取 ← 执行搜索
第四步:数据清洗 ← 去重、过滤噪音、统一格式
第五步:识别筛选 ← 识别子分类、竞争度、机会点
第六步:保存呈现 ← 写入 memory,输出结构化报告
第一步:需求分析
目标: 拿到一个类目请求时,先理解用户真正要的是什么。
执行原则:永远先分析,再动手搜。
3. 判断类目粒度
| 粒度 | 示例 | 是否需要拆分 |
|---|---|---|
| 模糊大类 | "AI"、"内容创作"、"电商" | ❌ 需拆分 |
| 明确子分类 | "AI 图像生成"、"YouTube 剪辑技巧" | ✅ 可直接搜 |
| 竞品监测 | "盯着 @某某频道" | ✅ 进入 Monitoring |
4. 模糊类目必须拆分
如果用户说"AI 工具",直接拆解:
AI 工具
├── AI 图像工具(Midjourney、Stable Diffusion...)
├── AI 编程工具(Cursor、Copilot...)
├── AI 写作工具(Jasper、Claude...)
├── AI 视频工具(Sora、Runway...)
├── AI 语音/音频工具(ElevenLabs...)
└── AI 办公工具(Notion AI、Gamma...)
原则: 一个搜索词 = 一个明确的子分类。找不到子分类就问用户。
5. 需求记录
把分析结果明确告知用户:
分析:
- 你说的"XXX"我理解为:[具体是什么]
- 拆解为以下子分类:[列表]
- 每个子分类独立搜索:[关键词列表]
第二步:策略制定
目标: 为每个子分类制定搜索策略。
6. 制定搜索词矩阵
对每个子分类,确定:
子分类:AI 图像工具
├── 核心搜索词:AI image generator tools 2025
├── 长尾搜索词:best AI art tools comparison, free AI image generator
├── 竞品搜索词:Midjourney alternatives, Stable Diffusion vs DALL-E
└── 趋势搜索词:AI image generator viral 2025
7. 确定数据源优先级
| 数据源 | 用途 | 置信度 |
|---|---|---|
| YouTube 搜索(browser 抓取) | 热门视频、竞争度 | 🟢 高 |
| YouTube 频道页(browser 抓取) | 频道详细数据 | 🟢 高 |
| Social Blade | 订阅数、趋势 | 🟡 中 |
| Google 搜索 | 舆情热度佐证 | 🟡 中 |
| X(Twitter) | 新产品动态 | 🟡 中 |
8. 搜索执行计划
在开始抓取前,先告诉用户:
搜索策略:
- 类目:AI 图像工具
- 搜索词:AI image generator tools 2025
- 数据源:YouTube 搜索 + 频道页
- 预期结果数:20-30 条视频
- 置信度:🟡 中(YouTube 模糊化数据)
第三步:数据获取
使用 browser 工具执行搜索。
YouTube 搜索
URL 格式:https://www.youtube.com/results?search_query={关键词}
解析字段(from snapshot)
| 字段 | 解析规则 |
|---|---|
| 标题 | heading 或 link 的 text |
| 频道名 | "前往频道:XXX" 或 @xxx 格式 |
| 播放量 | "X万次观看" / "X次观看" → 转换为数字 |
| 发布时间 | "X个月前" / "X天前" / "X年前" → 天数 |
| 视频 URL | link href → /watch?v=XXX |
| 视频 ID | 从 URL 提取 video_id |
数据记录格式
每条视频记录:
video:
title: string
video_id: string # 从 URL 提取
url: string # https://www.youtube.com/watch?v=XXX
channel_name: string
channel_handle: string # @xxx 格式
views: number # 播放量(统一为数字)
views_display: string # 原始显示文本
published_days_ago: number
published_display: string
duration: string # 时长
is_short: boolean # 是否 Shorts
第四步:数据清洗
目标: 把原始数据变成可分析的情报。**
9. 过滤规则
必须过滤掉:
- 广告内容(sponsored content、推广视频)
- 与目标子分类明显无关的视频
- 重复视频(同一视频 ID 只保留一条)
保留观察:
- Shorts 和长视频分开标记(两者是不同的内容形态)
- 不同频道名但同一人的情况(合并分析)
10. 分类标记
对每条视频,标记:
video:
...
sub_category: string # 归属的子分类
content_type: "review" | "tutorial" | "list" | "comparison" | "news" | "other"
intent: "discover" | "learn" | "compare" | "工具推荐" | "行业趋势"
is_viral: boolean # 是否爆款(播放量 > 100万)
is_emerging: boolean # 是否新兴(发布 < 30天)
11. 频道聚合
同频道的视频合并,计算:
channel_profile:
name: string
handle: string
total_videos_in_results: number
avg_views: number
max_views: number
latest_video_days_ago: number
content_type_distribution: {}
is_established: boolean # 有多条视频且平均播放高
is_emerging: boolean # 新账号但有爆款
第五步:识别筛选
目标: 从清洗后的数据里识别机会和风险。**
12. 子分类竞争度评估
competition_assessment:
sub_category: string
total_videos: number
unique_channels: number
avg_views: number
top_video_views: number
established_channels: number
emerging_channels: number
saturation: "high" | "medium" | "low" | "blank"
competition_level: "red" | "yellow" | "green"
判断标准:
- 🔴 红(高竞争):头部视频 > 100万播放,成熟频道 > 5个
- 🟡 黄(中等竞争):头部 30-100万,有空间但需要差异化
- 🟢 绿(低竞争 / 空白):头部 < 30万,或新兴市场
- ⚪ 空白:新出现的子分类,无充分数据
13. 切入机会识别
opportunity:
type: "differentiation" | "niche" | "format" | "timing" | "data"
description: string
evidence: string[] # 数据支撑
suggested_angle: string # 建议切入角度
risk: string # 风险提示
常见机会类型:
- 差异化机会:头部都在泛谈,垂直场景无人占
- 格式机会:列表类视频多,教程类少
- 时机机会:新兴话题,供给还没跟上需求
- 数据机会:没人用真实数据做对比
14. 爆款识别
viral_signals:
video_id: string
title: string
views: number
published_days_ago: number
why_viral: string # 分析原因
lessons: string[] # 可复用的规律
第六步:保存与呈现
15. 保存到 Memory
每个子分类的分析结果保存为:
memory/content-discovery/{sub-category-slug}/{date}.md
文件结构:
# Content Discovery · {子分类名}
**日期:** YYYY-MM-DD
**搜索词:** xxx
**数据源:** YouTube 搜索(browser 抓取)
**置信度:** 🟡 中
## 需求分析
[分析过程]
## 搜索策略
[策略]
## 原始数据
[视频列表]
## 清洗后数据
[聚合后的频道数据]
## 竞争度评估
[竞争度评级]
## 机会识别
[机会列表]
## 爆款分析
[爆款规律]
16. 结构化报告输出
最终输出格式:
【Discovery 报告】{类目名}
生成时间:YYYY-MM-DD HH:mm
数据来源:YouTube 直接抓取(置信度:🟡 中)
---
## 🎯 需求确认
你所说的"XXX"已拆解为以下子分类:
1. AI 图像工具(搜索词:xxx)→ 竞争度:🔴 高
2. AI 编程工具(搜索词:xxx)→ 竞争度:🟡 中
...
## 🔍 子分类详细分析
[每个子分类的分析]
## 💡 最高价值机会
[排序后的机会列表,含切入角度和数据支撑]
## ⚠️ 风险提示
[注意事项]
## 📊 数据明细
[备查的原始数据]
Monitoring 模式
流程(保持不变):
1. 读取 memory 中的频道历史档案
2. browser 访问频道页抓最新数据
3. 对比历史:新增视频、播放变化、趋势判断
4. 更新 memory 档案
5. 输出变化报告
触发规则汇总
| 用户说 | 模式 | 工作流 |
|---|---|---|
| "帮我盯着 XXX 频道" | Monitoring | 直接抓频道 → 对比 → 输出 |
| "XX 类目有没有机会" | Discovery | 六步工作流 |
| "分析这个赛道" | Discovery | 六步工作流 |
| "XX 关键词竞争大吗" | Discovery | 六步工作流 |
| "最近有什么新产品" | Discovery | 六步工作流(以"新产品"为子分类) |
注意事项
- 永远先分析需求再搜索,不可以用一个搜索词直接出报告
- 模糊类目必须拆分,否则输出是垃圾
- 置信度必须标注,不掩盖数据来源的局限性
- Shorts 和长视频分开分析,两者是不同市场
- 数据保存到 memory,形成积累,不每次从零开始