名称: gettr-transcribe-summarize
描述: 从 GETTR 帖子(通过 HTML og:video)下载音频,在 Apple Silicon 上使用 MLX Whisper 进行本地转录(通过 VTT 生成时间戳),并将转录内容总结为要点和/或带时间戳的提纲。当用户提供 GETTR 帖子 URL 并要求生成转录或摘要时使用。
主页: https://gettr.com
元数据: {"clawdbot":{"emoji":"📺","requires":{"bins":["mlx_whisper","ffmpeg"]},"install":[{"id":"mlx-whisper","kind":"pip","package":"mlx-whisper","bins":["mlx_whisper"],"label":"安装 mlx-whisper (pip)"},{"id":"ffmpeg","kind":"brew","formula":"ffmpeg","bins":["ffmpeg"],"label":"安装 ffmpeg (brew)"}]}}
# 1. 从 URL 中解析 slug(直接读取即可,无需脚本)
# https://gettr.com/post/p1abc2def → slug = p1abc2def
# https://gettr.com/streaming/p3xyz → slug = p3xyz
# 2. 获取视频 URL
# 对于 /post/ 类型的 URL:使用提取脚本
python3 scripts/extract_gettr_og_video.py "<GETTR_POST_URL>"
# 对于 /streaming/ 类型的 URL:直接使用浏览器自动化(提取脚本不可靠)
# 关于浏览器自动化的说明,请参见下方的步骤 1
# 3. 运行下载 + 转录流水线
bash scripts/run_pipeline.sh "<VIDEO_URL>" "<SLUG>"
若要显式设置转录语言(推荐用于非英语内容):
bash scripts/run_pipeline.sh --language zh "<VIDEO_URL>" "<SLUG>"
常用语言代码:zh(中文)、en(英语)、ja(日语)、ko(韩语)、es(西班牙语)、fr(法语)、de(德语)、ru(俄语)。
输出文件位于:
- ./out/gettr-transcribe-summarize/<slug>/audio.wav
- ./out/gettr-transcribe-summarize/<slug>/audio.vtt
然后继续执行步骤 3(总结)以生成最终交付物。
向用户确认:
- GETTR 帖子 URL
- 输出格式:仅要点 或 要点 + 带时间戳的提纲
- 摘要长度:简短、中等(默认) 或 详细
- 语言(可选):如果视频为非英语且自动检测失败,请询问语言代码(例如 zh 代表中文)
注意事项:
- 本技能不处理需要身份验证的 GETTR 帖子。
- 本技能不进行翻译;输出内容保持视频的原始语言。
- 如果转录质量不佳或混有英语,请使用显式的 --language 标志重新运行。
mlx_whisper 并已加入 PATHffmpeg(推荐:brew install ffmpeg)直接从 GETTR URL 解析 slug — 只需读取最后一个路径段,无需脚本:
- https://gettr.com/post/p1abc2def → slug = p1abc2def
- https://gettr.com/streaming/p3xyz789 → slug = p3xyz789
输出目录:./out/gettr-transcribe-summarize/<slug>/
目录结构:
- ./out/gettr-transcribe-summarize/<slug>/audio.wav
- ./out/gettr-transcribe-summarize/<slug>/audio.vtt
- ./out/gettr-transcribe-summarize/<slug>/summary.md
方法取决于 URL 类型:
/post/ 类型的 URL — 使用提取脚本运行提取脚本,从帖子 HTML 中获取视频 URL:
python3 scripts/extract_gettr_og_video.py "<GETTR_POST_URL>"
此命令会将最佳候选视频 URL(通常是 HLS .m3u8 文件)打印到标准输出。
如果提取失败,请要求用户直接提供 .m3u8/MP4 URL(如果帖子是私密的、需要验证或 HTML 是动态生成的,这种情况很常见)。
/streaming/ 类型的 URL — 直接使用浏览器自动化不要对直播流 URL 使用提取脚本。 从静态 HTML 提取的 og:video URL 对于直播内容不可靠 — 要么完全失败,要么下载在接近结束时卡住并失败。
应使用浏览器自动化来获取一个新鲜的、动态签名的 URL:
1. 打开 GETTR 直播流 URL,等待页面完全加载(必须执行 JavaScript)。
2. 从渲染后的 DOM 中提取 og:video 元标签的内容:
javascript
document.querySelector('meta[property="og:video"]').getAttribute('content')
3. 在步骤 2 的流水线中使用这个新鲜的 URL。
如果无法使用浏览器自动化或自动化失败,请参阅 references/troubleshooting.md 了解如何指导用户从浏览器中手动提取新鲜的 URL。
将提取到的视频 URL 和 slug 输入流水线:
bash scripts/run_pipeline.sh "<VIDEO_URL>" "<SLUG>"
若要显式设置语言(推荐在自动检测失败时使用):
bash scripts/run_pipeline.sh --language zh "<VIDEO_URL>" "<SLUG>"
流水线执行两项操作:
1. 通过 ffmpeg 将音频下载为 16kHz 单声道 WAV 文件。
2. 使用 MLX Whisper 进行转录,输出带时间戳的 VTT 文件。
此错误在使用 /streaming/ URL 且签名 URL 已过期时发生。如果浏览器自动化返回了一个过期的 URL,请重新运行浏览器自动化以获取新的 URL,然后重试流水线。
如果无法使用浏览器自动化或自动化失败,请参阅 references/troubleshooting.md 了解如何指导用户从浏览器中手动提取新鲜的 URL。
注意事项:
- 默认情况下,语言是自动检测的。对于检测失败的非英语内容,请使用 --language。
- 如果速度太慢或内存占用过高,请尝试使用更小的模型:mlx-community/whisper-medium 或 mlx-community/whisper-small。
- 如果质量不佳,请尝试完整模型:mlx-community/whisper-large-v3(速度较慢但更准确)。
- 如果 --word-timestamps 导致问题,流水线会自动重试而不使用该选项。
将最终交付物写入 ./out/gettr-transcribe-summarize/<slug>/summary.md。
选择一个摘要长度(用户可选):
- 简短: 5–8 个要点;(如有提纲)4–6 个部分
- 中等(默认): 8–20 个要点;(如有提纲)6–15 个部分
- 详细: 20–40 个要点;(如有提纲)15–30 个部分
包含:
- 要点(根据上述长度)
- 可选的带时间戳的提纲(根据上述长度)
带时间戳的提纲格式(默认标题样式):
[00:00 - 02:15] 章节标题
- 1–3 个子要点
根据 VTT 提示构建提纲时:
- 将相邻的提示分组为连贯的章节。
- 使用章节中第一个提示的开始时间和最后一个提示的结束时间。
scripts/run_pipeline.sh:下载 + 转录流水线(接收视频 URL 和 slug)scripts/extract_gettr_og_video.py:获取 GETTR HTML 并提取 og:video URL(带重试/退避机制)scripts/download_audio.sh:从 HLS 或 MP4 URL 下载/提取音频为 16kHz 单声道 WAV/streaming/ URL 且签名 URL 已过期时发生。重新运行浏览器自动化以获取新的 URL(参见步骤 1);如果失败,请参阅 references/troubleshooting.md。有关常见问题的详细解决方案,请参阅 references/troubleshooting.md,包括:
- HTTP 412 错误(签名 URL 过期)
- 提取失败
- 下载错误
- 转录质量问题