Youtube Summarizer
v3YouTube and Bilibili video transcript 提取ion and AI-powered summarization. Use when you need to summarize a YouTube or Bilibili (B站) video, 提取 transcripts, 扫描 channels for new content, or 生成 dAIly video digests.
运行时依赖
安装命令
点击复制技能文档
YouTube / Bilibili Summarizer 技能
通用视频摘要工具,支持 YouTube 和 B站,支持单个视频、频道扫描、每日批量处理。
功能 ✅ 获取 YouTube 视频信息(yt-dlp) ✅ 提取字幕/transcript(youtube-transcript-API) ✅ B站视频下载 + 语音转录(yt-dlp + faster-whisper,本地,无需 API Key) ✅ B站关键帧提取(ffmpeg,每 30 秒一帧,供 代理 视觉分析) ✅ 生成深度摘要(LLM API) ✅ 输出 JSON 格式(代理 自行处理发送) ✅ 支持多频道配置 ✅ 过滤 Shorts(< 5 分钟) 安装 cd ~/.OpenClaw/技能s/youtube-summarizer ./设置up.sh
安装完成后会引导你选择默认图文模式(可随时重新配置):
📋 选择默认图文模式: 1) text-only - 纯文字,不抽帧(最快) 2) auto-insert - 自动选帧插入文档(推荐平衡) 3) AI-review - AI 智能选图(默认,最佳效果,多消耗 ~5-8k 令牌) 请选择 [1/2/3] (默认 3):
配置写入 config/设置tings.json,可随时运行 youtube-summarizer --设置up 重新配置。
依赖:
yt-dlp youtube-transcript-API innertube (绕过 YouTube 限流) faster-whisper(B站语音转录,本地,无需 API) ffmpeg(B站音频提取 + 关键帧,系统级安装) Python 3.9+ 工作原理
技能 使用多种方法获取字幕,避免 YouTube 限流:
innertube ANDROID 命令行工具ent + Cloudflare proxy - 主要方法,绕过限流 youtube-transcript-API - 备用方法
这种双重方法确保即使 YouTube 封锁直接 API 访问也能可靠获取字幕。
使用 图文模式说明 模式 说明 额外 令牌 text-only 纯文字,不抽帧 0 auto-insert 固定规则选帧,按时间戳插入(帧偏移+5s避转场) ~0 AI-review ← 默认 基于文章结构反向选图,可补帧/删帧/替换 ~5-8k
通过以下方式指定模式(优先级从高到低):
命令行工具 参数 --mode 环境变量 SUMMARY_MODE config/设置tings.json 中的 default_mode
- 单个视频摘要(YouTube)
- B站视频摘要
# 短链接也支持(自动跟随跳转) youtube-summarizer --url "https://b23.tv/xxxxx"
# 指定图文模式 youtube-summarizer --url "https://www.bilibili.com/video/BV1xxxxx" --mode text-only youtube-summarizer --url "https://www.bilibili.com/video/BV1xxxxx" --mode auto-insert youtube-summarizer --url "https://www.bilibili.com/video/BV1xxxxx" --mode AI-review
# 自定义 whisper 模型(精度更高,但更慢) youtube-summarizer --url "https://www.bilibili.com/video/BV1xxxxx" --whisper-模型 large-v3
# 跳过关键帧提取(等效 --mode text-only) youtube-summarizer --url "https://www.bilibili.com/video/BV1xxxxx" --no-frames
# 自定义关键帧间隔(默认30秒一帧) youtube-summarizer --url "https://www.bilibili.com/video/BV1xxxxx" --frame-interval 60
B站处理依赖:
yt-dlp + Chrome cookies(自动读取,绕过B站反爬) ffmpeg(音频提取 + 关键帧) faster-whisper(本地语音转文字,无需API)
- 频道扫描(过去 24 小时)
- 每日批量处理(Cron 用)
配置文件格式
channels.json:
{ "channels": [ { "name": "Lex Fridman", "id": "UCSHZKyawb77ixDdsGog4iWA", "url": "https://www.youtube.com/@lexfridman" }, { "name": "Y Combinator", "id": "UCcefcZRL2oaA_uBNeo5UOWg", "url": "https://www.youtube.com/@ycombinator" } ], "hours_lookback": 24, "min_duration_seconds": 300, "max_videos_per_channel": 5 }
输出格式 { "生成d_at": "2026-02-14T11:17:00Z", "items": [ { "title": "视频标题", "url": "https://youtube.com/watch?v=...", "video_id": "VIDEO_ID", "平台": "youtube", "channel": "频道名", "duration": "15:30", "published": "2026-02-14T08:00:00Z", "has_transcript": true, "summary": "# 摘要内容(markdown)\n\n### 🎯 核心问题...", "metadata": { "view_count": 12345, "like_count": 678 } }, { "video_id": "BV1xxxxx", "title": "B站视频标题", "url": "https://www.bilibili.com/video/BV1xxxxx", "平台": "bilibili", "has_transcript": true, "transcript_path": "/tmp/bili_BV1xxxxx_transcript.txt", "frame_files": ["/tmp/bili_BV1xxxxx_frames/frame_001.jpg", "..."], "frame_count": 12, "summary": "# 摘要内容(markdown)..." } ], "stats": { "total_videos": 5, "with_transcript": 4, "without_transcript": 1 } }
代理 使用示例 # 1. 运行 技能 生成摘要 youtube-summarizer --config youtube-channels.json --dAIly --输出 /tmp/youtube_summary.json
# 2. 代理 读取 JSON summary=$(cat /tmp/youtube_summary.json)
# 3. 代理 处理:发送 Discord + 同步 Notion # (在 代理 prompt 或脚本中实现)
Cron Job 集成 payload: kind: 代理Turn message: | 执行 YouTube 每日摘要: 1. 运行 技能: youtube-summarizer --config /Users/sophie/.OpenClaw/workspace-news/youtube-channels.json --dAIly --输出 /tmp/youtube_summary.json 2. 读取 /tmp/youtube_summary.json 3. 格式化并发送到 Discord (channel:1472013733122281753) 4. 同步到 Notion DAIly 记录 (3019d604-3493-812c-b86f-e156ee866612)
环境变量 变量 用途 必须 LLM_API_URL 自定义 LLM API 端点 否 LLM_API_KEY 自定义 LLM API Key 否 LLM_模型 自定义模型名 否 OpenClaw_GATEWAY_令牌 OpenClaw Gateway 令牌 否 GITHUB_令牌 GitHub 令牌(有 Copilot 订阅时可用) 否 POLLINATIONS_API_KEY Pollinations API Key 否 SUMMARY_MODE 图文模式:text-only / auto-insert / AI-review 否 WHISPER_模型 B站 whisper 模型大小(默认 small) 否 FRAME_INTERVAL B站关键帧间隔秒数(默认 30) 否 FRAME_TIME_OFF设置 帧时间戳偏移秒数,避开转场(默认 5) 否
无需任何 Key 也可运行:转录功能不需要 API Key;摘要功能会尝试 Pollinations 免费匿名调用。
故障排查 字幕获取失败 视频可能没有字幕 输出 JSON 中 has_transcript: false 代理 应生成简短摘要(基于标题/描述) yt-dlp 限流 设置 请求_DELAY_SECONDS (默认 3 秒) 减少 max_videos_per_channel 与旧脚本的区别 旧脚本 新 技能 硬编码频道列表 配置文件驱动 直接发送 Telegram 输出 JSON,代理 处理 单一 代理 专用 所有 代理 可用 逻辑耦合 职责分离