mcpField
B
boring-youtube-mining

boring-youtube-mining

github.com/mrpaulscrivens营销与增长1339 次安装33 周前更新
代码仓库

关于 boring-youtube-mining

面向内容创作者的 YouTube 研究技能,可从指定频道提取近期视频并整理字幕,再从回应角度和内容空白生成具体创意。可选用 World Code 筛选创意,并保存结果。

主要功能

  1. 01使用 yt-dlp 获取频道近期视频
  2. 02下载并缓存英语字幕
  3. 03生成回应型与空白型创意
  4. 04在可用时映射到 World Code
  5. 05保存带日期的创意文件

适用场景

  1. 01从指定频道寻找帖子或视频主题
  2. 02围绕某个视频形成回应角度
  3. 03发现视频未解答的受众问题

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mrpaulscrivens/boring-zoo --skill boring-youtube-mining

安装后在 Claude Code 中输入/boring-youtube-mining确认已加载。

详细介绍

YouTube 挖掘 — World Code 版

从预先选定的 YouTube 频道提取近期视频,下载视频字幕,并生成用户切实可用的内容创意。一轮完成,无需来回沟通。

开始前 — 检查依赖项

静默运行:

which yt-dlp

如果未安装 yt-dlp,请停止并告知用户:

必须安装 yt-dlp 才能继续。

根据你的平台安装:

  • macOS: brew install yt-dlp
  • Windows: winget install yt-dlp
  • Linux: pip install yt-dlp 或使用你的包管理器
  • 通用: pip install yt-dlp

然后再次运行 /boring-youtube-mining。

没有 yt-dlp 不要继续。请平稳停止。


开始前 — 加载 World Code(可选)

尝试静默读取这些文件:

  • world-code/voice.md — 语气规则(不应用于输出——这是研究内容,不是发布内容)
  • world-code/conversation.md — Bridge 结构(障碍、挣扎、小恶魔、宝藏)

如果 conversation.md 存在: 使用 Bridge 筛选并确定创意的优先级。每个创意都要对应一个障碍、挣扎或小恶魔。与它们都没有关联的创意应降低优先级(仍需列出,只需标注为“无 Bridge 关联”)。

如果 conversation.md 不存在: 仅根据字幕分析生成创意。不要因为文件缺失而反复提醒。


步骤 1:加载频道列表

读取 settings/youtube-channels.md。

如果文件不存在,请创建该文件并添加示例内容,然后告知用户:

我创建了 settings/youtube-channels.md,其中包含一些示例频道。在 Obsidian 中编辑该文件,添加你想挖掘的频道,然后再次运行 /boring-youtube-mining。

settings/youtube-channels.md 的初始内容:

# YouTube Channels

Add channels you want to mine for content ideas. Use the @ handle format.
Add a short description so Claude knows the context.

- @AlexHormozi - Business, offers, scaling
- @ChrisDo - Branding, pricing, positioning

创建文件后停止。先让用户完成配置。


步骤 2:获取近期视频

对列表中的每个频道运行:

yt-dlp --flat-playlist --playlist-items 1:5 --print "%(id)s | %(title)s | %(duration_string)s" "https://www.youtube.com/@{handle}/videos" 2>/dev/null

按顺序处理频道(不要并行处理),以避免触发速率限制。

将结果以编号列表形式呈现:

## Recent Videos

### @AlexHormozi
1. [dQw4w9WgXcQ] How to Price Your Offer (12:34)
2. [abc123def] The $100M Framework Nobody Uses (18:22)
...

### @ChrisDo
3. [xyz789ghi] Why Your Brand Is Invisible (9:45)
...

询问用户:

应该分析哪些视频?请输入编号(例如“1, 3, 5”)或“all”。

如果频道句柄无法解析,请报告并继续处理其余频道:

无法获取 @BadHandle 的视频 — 请检查 settings/youtube-channels.md 中的句柄。


步骤 3:下载字幕

对每个选中的视频,先检查是否存在缓存字幕:

ls "content/youtube-transcripts/{video_id}.md" 2>/dev/null

如果已缓存: 跳过下载,直接读取缓存。告知用户:

“{title}”的字幕已缓存 — 跳过下载。

如果未缓存: 下载自动生成的英文字幕:

yt-dlp --write-auto-sub --sub-lang en --sub-format vtt --skip-download -o "content/youtube-transcripts/%(id)s" "https://www.youtube.com/watch?v={video_id}" 2>/dev/null

然后清理 VTT 文件并保存为 Markdown。必要时创建目录:

mkdir -p "content/youtube-transcripts"
清理 VTT 字幕

原始 VTT 文件包含时间戳和重复行。请清理:

  1. 删除所有时间戳行(匹配 XX:XX:XX.XXX --> XX:XX:XX.XXX 的行)
  2. 删除 WEBVTT 标头以及 Kind:/Language: 元数据行
  3. 删除连续重复的行(VTT 会在字幕提示边界处重复行)
  4. 删除 <c>、</c>、align:start position:0% 等位置/对齐标签
  5. 合并成段落(将句子分组,并在自然停顿处换行)

将文件保存为 content/youtube-transcripts/{video_id}.md,并添加 frontmatter:

---
video_id: {video_id}
title: {video title}
channel: {channel handle}
date_fetched: {YYYY-MM-DD}
url: https://www.youtube.com/watch?v={video_id}
---

# {video title}

**Channel:** {channel handle}
**URL:** https://www.youtube.com/watch?v={video_id}

## Transcript

{cleaned transcript text}

转换后删除原始 VTT 文件。

边缘情况
  • 没有可用的英文自动生成字幕: 跳过该视频并显示消息:

    “{title}”没有可用的英文字幕 — 跳过。

  • 字幕非常长(估计超过 10,000 个词): 在生成创意前分段总结。将字幕拆分为约 3,000 词的小节,总结每节的要点,然后使用这些总结生成创意。在输出中注明字幕已经过总结。


步骤 4:生成创意

对每份字幕,从两个角度生成创意:

视角 1:直接回应

用户会如何回应这段视频的观点?生成 2-3 个创意:

  • 认同并拓展 — 对方提出了你也认同的观点。你有什么独特的切入角度?
  • 不认同并反驳 — 对方说的某些内容与你的看法不同。你的观点是什么?
  • 延伸发挥 — 对方提到了某个话题,却没有深入展开。你会如何继续探讨?
视角 2:内容缺口创意

有哪些内容缺失?生成 1-2 个创意:

  • 对方提到但没有深入探讨的话题
  • 受众会感兴趣、但视频没有涉及的相关话题
  • 视频提出但没有回答的问题
每个创意需包含:
字段说明
创意标题简洁具体——不要写“关于定价的想法”,而要写“为什么按小时收费会扼杀个人企业”
切入角度直接回应(认同/反对/拓展)或内容缺口
来源视频标题 + 时间戳范围(若可识别)
你的观点(1-2 句话)你要提出的核心论点
桥接映射关联到哪个障碍/挣扎/小妖怪(如果存在 conversation.md)
内容类型帖子、串文、邮件、文章、视频脚本、轮播图
草稿钩子一句能让人停止刷屏的开场白
重质不重量
  • 每个视频产出 3-5 个创意。 不是 10 个,也不是 20 个。只要最好的 3-5 个。
  • 每个创意都必须通过“我真的会做这个吗?”的检验
  • 如果创意很泛泛(“内容很重要”),就舍弃
  • 没有明确切入角度的创意只是一种话题,不是真正的创意。话题没有用。
优先桥接筛选(存在 conversation.md 时)

生成所有创意后,按以下顺序排序:

  1. 强桥接关联 — 直接对应某个障碍、挣扎或小妖怪
  2. 弱桥接关联 — 与用户的领域相关,但没有直接对应关系
  3. 无桥接关联 — 有趣,但与用户的 World Code 脱节

第 3 类仍需列出,但要加以标记。是否值得继续,由用户决定。


步骤 5:保存输出

将输出文件保存到 content-ideas/youtube-mining-{YYYY-MM-DD}.md:

---
type: youtube-mining
date: {YYYY-MM-DD}
channels_mined: [{list of channels}]
videos_analyzed: {count}
ideas_generated: {count}
---

# YouTube Mining — {YYYY-MM-DD}

## Sources

| Video | Channel | Ideas |
|-------|---------|-------|
| {title} | {channel} | {count} |
...

## Ideas

### From: "{video title}" (@channel)

#### 1. {Idea Title}

- **Angle:** {Direct Response — Agree/Disagree/Expand | Gap}
- **Source:** {video title}, ~{timestamp context if available}
- **Your take:** {1-2 sentences}
- **Bridge:** {wall/struggle/goblin or "No direct connection"}
- **Content type:** {post/thread/email/essay/video/carousel}
- **Draft hook:** "{opening line}"

---

{repeat for each idea}

## Bridge Summary

### Strong Connections
- {idea} → {wall/struggle}
...

### No Connection
- {idea} — interesting but not tied to your current World Code
...

## Next Steps

- Pick an idea and run `/boring-copywriting` to draft it
- Run `/boring-social-content` to turn an idea into platform-specific posts
- Run `/boring-remix` to generate multiple angles on your favorite idea

步骤 6:结束

保存后,告知用户:

已将 {X} 个创意保存到 content-ideas/youtube-mining-{date}.md。

其中 {count} 个创意与 Bridge 有强关联,{count} 个没有。

选一个创意,我可以用 /boring-copywriting 起草内容,用 /boring-social-content 将它改写成社交媒体帖子,或用 /boring-remix 对它进行改编。

就这样。不必回顾流程,也不必讲解内容策略。


核心原则

  • 一轮完成,完整输出。 获取 → 转录文本 → 创意 → 保存。不要停下来问“要继续吗?”
  • 输出研究成果,而非已发布内容。 不应用个人风格,不做润色。保留原始的策略性创意。
  • 缓存不可妥协。 绝不重复下载转录文本。务必先检查缓存。
  • 有条件时优先桥接。 与 World Code 的关联,能让这些内容真正有用,而不只是有趣。
  • 按顺序处理频道。 不要并行请求,让 YouTube 不堪重负。
  • 每个视频产出 3-5 个优质创意。 克制是一种能力。谁都能生成 50 个平庸的创意。
  • 草稿钩子很重要。 没有钩子的创意只是一种话题,而话题不值钱。
  • 不解释流程。 用户不需要逐步了解“现在我正在下载转录文本”。直接执行并展示结果即可。

相关技能

  • boring-copywriting — 根据挖掘出的创意起草完整内容
  • boring-social-content — 将创意改写成适合不同平台的帖子
  • boring-remix — 为单个创意生成多个切入角度
  • boring-content-strategy — 利用挖掘出的洞见进行更全面的内容规划

评论

支持 Markdown