ClawSkills logoClawSkills

GETTR Transcribe + Summarize

从 GETTR 帖子下载音频(通过 HTML og:video),使用 Apple Silicon 上的 MLX Whisper 在本地转录(通过 VTT 提供时间戳),并总结转录内

介绍

# Gettr Transcribe + Summarize (MLX Whisper)

## 快速开始

```bash # 1. Parse the slug from the URL (just read it — no script needed) # https://gettr.com/post/p1abc2def → slug = p1abc2def # https://gettr.com/streaming/p3xyz → slug = p3xyz

# 2. Get the video URL # For /post/ URLs: use the extraction script python3 scripts/extract_gettr_og_video.py "<GETTR_POST_URL>"

# For /streaming/ URLs: use browser automation directly (extraction script is unreliable) # See Step 1 below for browser automation instructions

# 3. Run download + transcription pipeline bash scripts/run_pipeline.sh "<VIDEO_URL>" "<SLUG>" ```

要显式设置转录语言(建议用于非英语内容): ```bash 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 → 转录文本 → 摘要)

### 待确认的输入 请求提供: - GETTR 帖子 URL - 输出格式:**仅要点** 或 **要点 + 带时间戳的大纲** - 摘要长度:**短**、**中(默认)** 或 **详细** - 语言(可选):如果视频是非英语内容且自动检测失败,请询问语言代码(例如,中文为 `zh`)

注意: - 此技能**不**处理需要身份验证的 GETTR 帖子。 - 此技能**不**进行翻译;输出内容保留视频的原始语言。 - 如果转录质量较差或与英语混杂,请使用显式 `--language` 标志重新运行。

### 先决条件 (本地) - `mlx_whisper` 已安装并位于 PATH 中 - `ffmpeg` 已安装(推荐:`brew install ffmpeg`)

### 第 0 步 — 解析 slug 并选择输出目录

直接从 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`

### 第 1 步 — 获取视频 URL

方法取决于 URL 类型:

#### 对于 `/post/` URL — 使用提取脚本

运行提取脚本以从帖子 HTML 获取视频 URL:

```bash python3 scripts/extract_gettr_og_video.py "<GETTR_POST_URL>" ```

这会将最佳候选视频 URL(通常是 HLS `.m3u8`)打印到 stdout。

如果提取失败,请要求用户直接提供 `.m3u8`/MP4 URL(这在帖子为私有/受限制或 HTML 为动态内容时很常见)。

#### 对于 `/streaming/` URL — 直接使用浏览器自动化

**请勿对 streaming URL 使用提取脚本。** 从静态 HTML 提取的 `og:video` URL 对于流式内容并不可靠 —— 它要么直接失败,要么下载停滞并在接近结束时失败。

相反,使用浏览器自动化获取一个新的、动态签名的 URL: 1. 打开 GETTR streaming URL 并等待页面完全加载(必须执行 JavaScript) 2. 从渲染的 DOM 中提取 `og:video` meta 标签内容: ```javascript document.querySelector('meta[property="og:video"]').getAttribute('content') ``` 3. 将该新 URL 用于第 2 步中的流程

如果浏览器自动化不可用或失败,请参阅 `references/troubleshooting.md` 了解如何指导用户从其浏览器中手动提取新 URL。

### 第 2 步 — 运行流程(下载 + 转录)

将提取的视频 URL 和 slug 输入到流程中:

```bash bash scripts/run_pipeline.sh "<VIDEO_URL>" "<SLUG>" ```

要显式设置语言(建议在自动检测失败时使用): ```bash bash scripts/run_pipeline.sh --language zh "<VIDEO_URL>" "<SLUG>" ```

该流程做两件事: 1. 通过 ffmpeg 将音频下载为 16kHz 单声道 WAV 2. 使用 MLX Whisper 转录,输出带时间戳的 VTT

#### 如果流程因 HTTP 412 失败(签名 URL 过期)

当签名 URL 过期时,此错误会发生在 `/streaming/` URL 上。如果浏览器自动化返回了过期的 URL,请重试:重新运行浏览器自动化以获取新 URL,然后重试流程。

如果浏览器自动化不可用或失败,请参阅 `references/troubleshooting.md` 了解如何指导用户从其浏览器中手动提取新 URL。

注意: - 默认情况下,语言是自动检测的。对于检测失败的非英语内容,请使用 `--language`。 - 如果速度太慢或内存占用过高,请尝试较小的模型:`mlx-community/whisper-medium` 或 `mlx-community/whisper-small`。 - 如果质量较差,请尝试完整模型:`mlx-community/whisper-large-v3`(较慢但更准确)。 - 如果 `--word-timestamps` 导致问题,流程会自动重试而不使用该选项。

### 第 3 步 — 摘要 将最终交付物写入 `./out/gettr-transcribe-summarize/<slug>/summary.md`。

选择一个 **摘要长度**(用户可选): - **短:** 5–8 个要点;(如果包含大纲)4–6 个部分 - **中(默认):** 8–20 个要点;(如果包含大纲)6–15 个部分 - **详细:** 20–40 个要点;(如果包含大纲)15–30 个部分

包括: - **要点**(根据上述长度) - 可选的 **带时间戳的大纲**(根据上述长度)

带时间戳的大纲格式(默认标题样式): ``` [00:00 - 02:15] Section heading - 1–3 sub-bullets ```

从 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

### 错误处理 - **非视频帖子**:提取脚本会检测图片/文本帖子并提供有用的错误消息。 - **网络错误**:自动重试,采用指数退避(最多 3 次尝试)。 - **无音频轨道**:下载脚本会验证输出,并在源没有音频时进行报告。 - **HTTP 412 错误**:当签名 URL 过期时发生在 `/streaming/` URL 上。重新运行浏览器自动化以获取新 URL(见第 1 步);如果失败,请参阅 `references/troubleshooting.md`。

## 故障排除 请参阅 `references/troubleshooting.md` 了解常见问题的详细解决方案,包括: - HTTP 412 错误(过期的签名 URL) - 提取失败 - 下载错误 - 转录质量问题

更多产品