Not in the top 1,000 by GitHub stars

imlewc/video-to-subtitle-summary-skill

视频转字幕与AI总结 (抖音/小红书/B 站等)支持 faster-whisper 本地转写和 YouTube 字幕抓取 | Convert short videos to subtitles with AI summary

History

Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.

View weekly changes

SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

cbb4b6e5124f → cbb4b6e5124f

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → cbb4b6e5124f

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit cbb4b6e5124fce8a3c448bb813c6aa9599235fb0

248GitHub stars
8stars in 7 days
1skill in this repository
1commit in 30 days

Heat

6.5
  • Star growth, last 7 daysNot available
  • Star growth, last 24 hoursNot available
  • Rank movement, last 7 daysNot available
  • Commits, last 30 daysNot available
  • Accounts asking about it through MCP, last 7 daysNot available
  • Hot votes this weekNot available

Heat never changes the order by stars, and sponsorship never touches it. How heat works

Stars over time

Oct 25, 2026Nov 7, 2026248

30-day change not yet available: not enough history.

Individual skills in this repository

How it works

video-to-subtitle-summary

When your agent uses it

Use when user provides a short video platform URL or local video/audio file and wants subtitles/AI summary, or when user asks to list their own AI Douyin historical tasks. Triggers on v.douyin.com, xhslink.com, bilibili.com, b23.tv, YouTube URLs, local .mp4/.mp3/.wav files, or task history requests.

What it loads into context

Frontmatter

124 tokens

Always available to the agent

SKILL.md

7,260 tokens

When the skill is activated

Reference documents

14,413 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. Overview
  2. When to Use
  3. 外部依赖
  4. 环境变量
  5. 执行步骤
  6. 输出格式
  7. 常见问题

Scripts executed separately

  • scripts/download_video_candidates.py
  • scripts/download_youtube_subtitles.py
  • scripts/install_faster_whisper.py
  • scripts/list_ai_douyin_tasks.py
  • scripts/transcribe_faster_whisper.py
  • tests/test_download_video_candidates.py
  • tests/test_download_youtube_subtitles.py
  • tests/test_install_faster_whisper.py
  • tests/test_list_ai_douyin_tasks.py
  • tests/test_transcribe_faster_whisper.py

Files

  • .env.exampleasset1,033 bytes
  • .gitignoreasset34 bytes
  • LICENSEasset1,065 bytes
  • README.mddoc12,019 bytes
  • README_en.mddoc10,919 bytes
  • SKILL.mdcore23,159 bytes
  • SKILL.mdcore23,159 bytes
  • SKILL.mdcore23,159 bytes
  • SKILL.mdcore23,159 bytes
  • SKILL.mdcore23,159 bytes
  • SKILL.mdcore23,159 bytes
  • SKILL.mdcore23,159 bytes
  • SKILL.mdcore23,159 bytes
  • SKILL.mdcore23,159 bytes
  • SKILL.mdcore23,159 bytes
  • SKILL.mdcore23,159 bytes
  • SKILL.mdcore23,159 bytes
  • SKILL.mdcore23,159 bytes
  • SKILL.mdcore23,159 bytes
  • SKILL.mdcore23,159 bytes
  • SKILL.mdcore23,159 bytes
  • SKILL.mdcore23,159 bytes
  • SKILL.mdcore23,159 bytes
  • SKILL.mdcore23,159 bytes
  • SKILL.mdcore23,159 bytes
  • SKILL.mdcore23,159 bytes
  • SKILL.mdcore23,159 bytes
  • SKILL.mdcore23,159 bytes
  • SKILL.mdcore23,159 bytes
  • SKILL.mdcore23,159 bytes
  • SKILL.mdcore23,159 bytes
  • SKILL.mdcore23,159 bytes
  • SKILL.mdcore23,159 bytes
  • SKILL.mdcore23,159 bytes
  • docs/ai-douyin-setup.mddoc2,523 bytes
  • docs/bytedance-vc-setup.mddoc5,273 bytes
  • docs/faster-whisper-setup.mddoc3,966 bytes
  • docs/plans/2026-05-22-ai-douyin-credit-proxy-plan.mddoc13,837 bytes
  • docs/tikhub-setup.mddoc1,996 bytes
  • docs/volcengine-console.jpegasset416,549 bytes
  • scripts/download_video_candidates.pyruns3,736 bytes
  • scripts/download_youtube_subtitles.pyruns4,951 bytes
  • scripts/install_faster_whisper.pyruns4,803 bytes
  • scripts/list_ai_douyin_tasks.pyruns5,298 bytes
  • scripts/transcribe_faster_whisper.pyruns8,551 bytes
  • tests/test_download_video_candidates.pyruns3,391 bytes
  • tests/test_download_youtube_subtitles.pyruns2,048 bytes
  • tests/test_install_faster_whisper.pyruns1,988 bytes
  • tests/test_list_ai_douyin_tasks.pyruns3,204 bytes
  • tests/test_transcribe_faster_whisper.pyruns4,293 bytes
Read SKILL.md

# 视频转字幕与 AI 总结技能

## Overview

将短视频平台(抖音、小红书、B 站、YouTube 等)视频或本地视频/音频文件转换为字幕文本并生成 AI 摘要。

**核心流程:**
- **在线视频:** 获取视频信息 → 下载视频/直接抓字幕 → 选择字幕后端 → 生成字幕 → AI 总结
- **本地文件:** 提取音频(如需) → 选择字幕后端 → 生成字幕 → AI 总结

默认使用本地 `faster-whisper`,也支持通过环境变量切换到火山引擎 VC API。
YouTube 优先使用 `yt-dlp` 直接抓取人工字幕或自动字幕;只有没有可用字幕时,才需要下载音视频并回退到 ASR。

## When to Use
View the complete source on GitHub

Skills included

  • video-to-subtitle-summary

Repository facts

License
MIT
Created
Feb 19, 2026
Last pushed
Oct 28, 2026
Forks
24
Open issues
0
Project activity
Active

Before you install

Network or broad shell

Automated signals, not a guarantee

Checked Nov 6, 2026

Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.

Show 28 notes
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
Show all 305 signals by file

.env.example

  • Network accessline 6
    # 配置教程: docs/ai-douyin-setup.md VIDEO_INFO_PROVIDER=ai-douyin AI_DOUYIN_API_BASE=https://top9.cc
  • Network accessline 7
    [Credential-related source omitted]
  • Network accessline 8
    AI_DOUYIN_API_BASE=https://top9.cc
  • Access to secretsline 9
    [Credential-related source omitted]

.gitignore

  • Access to secretsline 1
    [Credential-related source omitted]

README.md

  • Network accessline 19
    请安装并使用 https://github.com/imlewc/video-to-subtitle-summary-skill ,先阅读 README.md 和 SKILL.md,自动完成适合当前 agent 的安装、依赖检查和配置,默认使用本地 faster-whisper,已有安装和配置则直接复用;缺少 API Key 时再提示我填写,不要输出密钥。完成后提取以下视频的字幕并生成中文摘要、核心要点,提供字幕文件路径:〔视频链接或本地文件路径〕
  • Network accessline 34
    > 抖音、小红书、B 站默认推荐使用 [AI Douyin](https://top9.cc) 解析下载直链:注册后可用免费额度试用,成功解析一次扣 1 积分。已有 TikHub 用户也可以改用自有 `TIKHUB_TOKEN`。YouTube 直接由 `yt-dlp` 抓字幕。ASR 字幕识别后端由 `ASR_BACKEND` 控制。
  • Network accessline 40
    - [https://top9.cc](https://top9.cc)
  • Network accessline 83
    | 依赖 | 说明 | |------|------| | Codex 或 [Claude Code](https://docs.anthropic.com/en/docs/claude-code) | 支持本地 Skill 的 Agent 环境 |
  • Network accessline 84
    |------|------| | Codex 或 [Claude Code](https://docs.anthropic.com/en/docs/claude-code) | 支持本地 Skill 的 Agent 环境 | | [FFmpeg](https://ffmpeg.org/) | 音视频处理工具 |
  • Network accessline 85
    | Codex 或 [Claude Code](https://docs.anthropic.com/en/docs/claude-code) | 支持本地 Skill 的 Agent 环境 |
  • Network accessline 86
    | [FFmpeg](https://ffmpeg.org/) | 音视频处理工具 |
  • Network accessline 87
    | [yt-dlp](https://github.com/yt-dlp/yt-dlp) | 视频下载和 YouTube 字幕抓取工具(B 站 / YouTube 需要) |
  • Network accessline 88
    | [AI Douyin](https://top9.cc) API Key | 推荐的视频解析/下载代理;新用户免费额度,可避免单独注册 TikHub |
  • Network accessline 89
    | [TikHub](https://tikhub.io/) 账号 | 可选视频接口获取方案:自带 Token 直接解析抖音/小红书/B 站 |
  • Network accessline 90
    | Python 3.9+ + [faster-whisper](https://github.com/SYSTRAN/faster-whisper) | 当 `ASR_BACKEND=faster-whisper` 时需要 |
  • Network accessline 91
    | [火山引擎](https://www.volcengine.com/) 账号 | 当 `ASR_BACKEND=volcengine` 时需要 |
  • Dangerous shell operationline 130
    sudo apt install ffmpeg
  • Network accessline 149
    # 克隆仓库 git clone https://github.com/imlewc/video-to-subtitle-summary-skill.git video-to-subtitle-summary
  • Network accessline 150
    git clone https://github.com/imlewc/video-to-subtitle-summary-skill.git video-to-subtitle-summary
  • Network accessline 163
    如需处理抖音、小红书或 B 站,推荐注册 [AI Douyin](https://top9.cc) 并创建 API Key;YouTube 不需要视频解析代理。已有 TikHub 用户可改用自有 TikHub Token。然后配置你要使用的字幕后端。
  • Access to secretsline 165
    [Credential-related source omitted]
  • Access to secretsline 168
    [Credential-related source omitted]
  • Access to secretsline 169
    [Credential-related source omitted]
  • Network accessline 178
    # 默认推荐:AI Douyin 代理(成功解析下载直链后扣 1 积分) export VIDEO_INFO_PROVIDER="ai-douyin" export AI_DOUYIN_API_BASE="https://top9.cc"
  • Network accessline 179
    [Credential-related source omitted]
  • Network accessline 180
    export AI_DOUYIN_API_BASE="https://top9.cc"
  • Access to secretsline 181
    [Credential-related source omitted]
  • Access to secretsline 184
    [Credential-related source omitted]
  • Access to secretsline 191
    [Credential-related source omitted]
  • Access to secretsline 198
    [Credential-related source omitted]
  • Network accessline 212
    请帮我提取这个视频的字幕并总结:https://v.douyin.com/xxxxxx/
  • Network accessline 216
    请帮我总结这个小红书视频:https://www.xiaohongshu.com/explore/xxxxxx
  • Network accessline 220
    请帮我总结这个B站视频:https://www.bilibili.com/video/BVxxxxxxxxxx/
  • Network accessline 224
    请帮我总结这个 YouTube 视频:https://www.youtube.com/watch?v=O87FdYIPeQk
  • Network accessline 230
    /video-to-subtitle-summary https://v.douyin.com/xxxxxx/
  • Network accessline 252
    python3 ~/.codex/skills/video-to-subtitle-summary/scripts/download_youtube_subtitles.py \   "https://www.youtube.com/watch?v=O87FdYIPeQk" \
  • Network accessline 253
    "https://www.youtube.com/watch?v=O87FdYIPeQk" \
  • Access to secretsline 262
    [Credential-related source omitted]
  • Access to secretsline 277
    [Credential-related source omitted]

README_en.md

  • Network accessline 26
    > Douyin, Xiaohongshu, and Bilibili use [AI Douyin](https://top9.cc) by default to resolve download URLs. New users can try the free quota; each successful download URL resolution costs 1 credit. Existing TikHub users can switch to their ow
  • Network accessline 64
    | Dependency | Description | |-----------|-------------| | Codex or [Claude Code](https://docs.anthropic.com/en/docs/claude-code) | Agent environment with local Skill support |
  • Network accessline 65
    |-----------|-------------| | Codex or [Claude Code](https://docs.anthropic.com/en/docs/claude-code) | Agent environment with local Skill support | | [FFmpeg](https://ffmpeg.org/) | Audio/video processing tool |
  • Network accessline 66
    | Codex or [Claude Code](https://docs.anthropic.com/en/docs/claude-code) | Agent environment with local Skill support | | [FFmpeg](https://ffmpeg.org/) | Audio/video processing tool | | [yt-dlp](https://github.com/yt-dlp/yt-dlp) | Video dow
  • Network accessline 67
    | [FFmpeg](https://ffmpeg.org/) | Audio/video processing tool | | [yt-dlp](https://github.com/yt-dlp/yt-dlp) | Video download and YouTube subtitle tool (Bilibili / YouTube) | | [AI Douyin](https://top9.cc) API Key | Recommended video parsin
  • Network accessline 68
    | [yt-dlp](https://github.com/yt-dlp/yt-dlp) | Video download and YouTube subtitle tool (Bilibili / YouTube) |
  • Network accessline 69
    | [AI Douyin](https://top9.cc) API Key | Recommended video parsing/download proxy; free trial quota for new users |
  • Network accessline 70
    | [TikHub](https://tikhub.io/) account | Optional video API provider if you want to use your own TikHub token |
  • Network accessline 71
    | Python 3.9+ + [faster-whisper](https://github.com/SYSTRAN/faster-whisper) | Required when `ASR_BACKEND=faster-whisper` |
  • Network accessline 72
    | [Volcengine](https://www.volcengine.com/) account | Required when `ASR_BACKEND=volcengine` |
  • Dangerous shell operationline 111
    sudo apt install ffmpeg
  • Network accessline 130
    # Clone the repository git clone https://github.com/imlewc/video-to-subtitle-summary-skill.git video-to-subtitle-summary
  • Network accessline 131
    git clone https://github.com/imlewc/video-to-subtitle-summary-skill.git video-to-subtitle-summary
  • Network accessline 144
    If you need Douyin, Xiaohongshu, or Bilibili, register [AI Douyin](https://top9.cc) and create an API Key. YouTube does not require a video parsing proxy. Existing TikHub users can switch to their own TikHub token. Then set the subtitle bac
  • Access to secretsline 149
    [Credential-related source omitted]
  • Access to secretsline 150
    [Credential-related source omitted]
  • Network accessline 158
    # Recommended default: AI Douyin proxy export VIDEO_INFO_PROVIDER="ai-douyin" export AI_DOUYIN_API_BASE="https://top9.cc"
  • Network accessline 159
    [Credential-related source omitted]
  • Network accessline 160
    export AI_DOUYIN_API_BASE="https://top9.cc"
  • Access to secretsline 161
    [Credential-related source omitted]
  • Access to secretsline 164
    [Credential-related source omitted]
  • Access to secretsline 171
    [Credential-related source omitted]
  • Access to secretsline 178
    [Credential-related source omitted]
  • Network accessline 192
    Please extract subtitles and summarize this video: https://v.douyin.com/xxxxxx/
  • Network accessline 196
    Please summarize this Xiaohongshu video: https://www.xiaohongshu.com/explore/xxxxxx
  • Network accessline 200
    Please summarize this Bilibili video: https://www.bilibili.com/video/BVxxxxxxxxxx/
  • Network accessline 204
    Please summarize this YouTube video: https://www.youtube.com/watch?v=O87FdYIPeQk
  • Network accessline 210
    /video-to-subtitle-summary https://v.douyin.com/xxxxxx/
  • Network accessline 232
    python3 ~/.codex/skills/video-to-subtitle-summary/scripts/download_youtube_subtitles.py \   "https://www.youtube.com/watch?v=O87FdYIPeQk" \
  • Network accessline 233
    "https://www.youtube.com/watch?v=O87FdYIPeQk" \
  • Access to secretsline 242
    [Credential-related source omitted]
  • Access to secretsline 257
    [Credential-related source omitted]

SKILL.md

  • Network accessline 49
    ASR_BACKEND="faster-whisper" VIDEO_INFO_PROVIDER="ai-douyin" AI_DOUYIN_API_BASE="https://top9.cc"
  • Network accessline 50
    [Credential-related source omitted]
  • Network accessline 51
    AI_DOUYIN_API_BASE="https://top9.cc"
  • Access to secretsline 52
    [Credential-related source omitted]
  • Network accessline 67
    export ASR_BACKEND="faster-whisper" export VIDEO_INFO_PROVIDER="ai-douyin" export AI_DOUYIN_API_BASE="https://top9.cc"
  • Network accessline 68
    [Credential-related source omitted]
  • Network accessline 69
    export AI_DOUYIN_API_BASE="https://top9.cc"
  • Access to secretsline 70
    [Credential-related source omitted]
  • Access to secretsline 71
    [Credential-related source omitted]
  • Access to secretsline 78
    [Credential-related source omitted]
  • Access to secretsline 85
    [Credential-related source omitted]
  • Access to secretsline 115
    [Credential-related source omitted]
  • Access to secretsline 143
    [Credential-related source omitted]
  • Network accessline 157
    [ -z "$VIDEO_INFO_PROVIDER" ] && VIDEO_INFO_PROVIDER="ai-douyin" AI_DOUYIN_API_BASE="$(read_env AI_DOUYIN_API_BASE)" [ -z "$AI_DOUYIN_API_BASE" ] && AI_DOUYIN_API_BASE="https://top9.cc"
  • Network accessline 158
    [Credential-related source omitted]
  • Network accessline 159
    [ -z "$AI_DOUYIN_API_BASE" ] && AI_DOUYIN_API_BASE="https://top9.cc"
  • Access to secretsline 160
    [Credential-related source omitted]
  • Access to secretsline 173
    [Credential-related source omitted]
  • Access to secretsline 175
    [Credential-related source omitted]
  • Access to secretsline 199
    [Credential-related source omitted]
  • Network accessline 217
    - `ASR_BACKEND=faster-whisper`:优先运行 `python3 "$SKILL_DIR/scripts/install_faster_whisper.py"`,或参考 [docs/faster-whisper-setup.md](./docs/faster-whisper-setup.md) - `ASR_BACKEND=volcengine`:参考 [docs/bytedance-vc-setup.md](./docs/bytedance-vc-s
  • Network accessline 219
    [Credential-related source omitted]
  • Access to secretsline 219
    [Credential-related source omitted]
  • Network accessline 234
    AI Douyin 适合不想单独注册 TikHub 的用户。注册 [https://top9.cc](https://top9.cc) 后领取免费额度并创建 API Key,成功解析下载直链后扣 1 积分;失败不扣。余额不足时接口返回 HTTP `402` / `insufficient balance`。
  • Access to secretsline 239
    [Credential-related source omitted]
  • Network accessline 249
    AI_DOUYIN_API_BASE="$(read_env AI_DOUYIN_API_BASE)" [ -z "$AI_DOUYIN_API_BASE" ] && AI_DOUYIN_API_BASE="https://top9.cc"
  • Network accessline 250
    [ -z "$AI_DOUYIN_API_BASE" ] && AI_DOUYIN_API_BASE="https://top9.cc"
  • Access to secretsline 251
    [Credential-related source omitted]
  • Network accessline 253
    # API Base 支持填 https://top9.cc 或 https://top9.cc/api/v1 case "$AI_DOUYIN_API_BASE" in   */api/v1) AI_DOUYIN_DOWNLOAD_URL_ENDPOINT="$AI_DOUYIN_API_BASE/video/download-url" ;;
  • Network accessline 260
    [Credential-related source omitted]
  • Access to secretsline 260
    [Credential-related source omitted]
  • Access to secretsline 261
    [Credential-related source omitted]
  • Network accessline 269
    if [ "$HTTP_CODE" = "402" ]; then   echo "ERROR: AI Douyin 余额不足(insufficient balance)。请到 https://top9.cc 购买积分,或改用 VIDEO_INFO_PROVIDER=tikhub + TIKHUB_TOKEN。"
  • Network accessline 270
    echo "ERROR: AI Douyin 余额不足(insufficient balance)。请到 https://top9.cc 购买积分,或改用 VIDEO_INFO_PROVIDER=tikhub + TIKHUB_TOKEN。"
  • Access to secretsline 273
    [Credential-related source omitted]
  • Network accessline 301
    curl -s -X GET "https://api.tikhub.io/api/v1/hybrid/video_data?url={ENCODED_URL}&minimal=true" \
  • Network accessline 315
    curl -s -X GET "https://api.tikhub.io/api/v1/xiaohongshu/web/get_note_info_v7?share_text={ENCODED_URL}" \
  • Network accessline 323
    curl -s -X GET "https://api.tikhub.io/api/v1/bilibili/web/fetch_one_video_v3?url={ENCODED_URL}" \
  • Access to secretsline 350
    [Credential-related source omitted]
  • Network accessline 361
    [ -d "$SKILL_DIR" ] || SKILL_DIR="$HOME/.claude/skills/video-to-subtitle-summary" python3 "$SKILL_DIR/scripts/download_youtube_subtitles.py" \   "https://www.youtube.com/watch?v={VIDEO_ID}" \
  • Network accessline 362
    python3 "$SKILL_DIR/scripts/download_youtube_subtitles.py"    "https://www.youtube.com/watch?v={VIDEO_ID}"
  • Network accessline 363
    "https://www.youtube.com/watch?v={VIDEO_ID}" \
  • Network accessline 389
    mkdir -p /tmp/video_analysis/{BVID} yt-dlp -o /tmp/video_analysis/{BVID}/video.mp4 "https://www.bilibili.com/video/{BVID}/"
  • Network accessline 390
    yt-dlp -o /tmp/video_analysis/{BVID}/video.mp4 "https://www.bilibili.com/video/{BVID}/"
  • Access to secretsline 439
    [Credential-related source omitted]
  • Access to secretsline 444
    [Credential-related source omitted]
  • Network accessline 448
    [Credential-related source omitted]
  • Access to secretsline 448
    [Credential-related source omitted]
  • Access to secretsline 450
    [Credential-related source omitted]
  • Access to secretsline 459
    [Credential-related source omitted]
  • Access to secretsline 464
    [Credential-related source omitted]
  • Network accessline 468
    [Credential-related source omitted]
  • Access to secretsline 468
    [Credential-related source omitted]
  • Access to secretsline 469
    [Credential-related source omitted]
  • Access to secretsline 574
    [Credential-related source omitted]
  • Dangerous shell operationline 581
    | FFmpeg 找不到 | macOS: `brew install ffmpeg` / Linux: `sudo apt install ffmpeg` / Windows: `choco install ffmpeg` |

docs/ai-douyin-setup.md

  • Network accessline 13
    1. 打开 [https://top9.cc](https://top9.cc)
  • Network accessline 20
    VIDEO_INFO_PROVIDER=ai-douyin AI_DOUYIN_API_BASE=https://top9.cc
  • Network accessline 21
    AI_DOUYIN_API_BASE=https://top9.cc
  • Access to secretsline 22
    [Credential-related source omitted]
  • Network accessline 32
    curl -sS -X POST "https://top9.cc/api/v1/video/download-url" \
  • Network accessline 33
    [Credential-related source omitted]
  • Network accessline 35
    -d '{"url":"https://v.douyin.com/xxxxxx/"}'
  • Network accessline 41
    {   "download_url": "https://...",
  • Network accessline 42
    "download_url": "https://...",
  • Network accessline 43
    "download_urls": ["https://...", "https://..."],
  • Network accessline 44
    "extracted_url": "https://v.douyin.com/xxxxxx/",
  • Access to secretsline 61
    [Credential-related source omitted]

docs/bytedance-vc-setup.md

  • Network accessline 5
    > 官方 API 文档:https://www.volcengine.com/docs/6561/80909
  • Network accessline 11
    **https://console.volcengine.com**
  • Network accessline 19
    **https://console.volcengine.com/speech/service/9**
  • Access to secretsline 51
    [Credential-related source omitted]
  • Network accessline 59
    # 准备一个测试音频文件(mp3格式),然后执行: curl -s -X POST "https://openspeech.bytedance.com/api/v1/vc/submit?appid=$BYTEDANCE_VC_APPID&language=zh-CN" \
  • Network accessline 60
    [Credential-related source omitted]
  • Access to secretsline 60
    [Credential-related source omitted]
  • Access to secretsline 62
    [Credential-related source omitted]
  • Network accessline 77
    POST https://openspeech.bytedance.com/api/v1/vc/submit
  • Network accessline 96
    curl -s -X POST "https://openspeech.bytedance.com/api/v1/vc/submit?appid=$APPID&language=zh-CN" \
  • Network accessline 104
    curl -s -X POST "https://openspeech.bytedance.com/api/v1/vc/submit?appid=$APPID&language=zh-CN" \
  • Network accessline 105
    [Credential-related source omitted]
  • Network accessline 107
    -d '{"url":"https://example.com/audio.mp3"}'
  • Network accessline 113
    GET https://openspeech.bytedance.com/api/v1/vc/query
  • Network accessline 166
    **Q: AppID 和 Token 在哪里找?** A: 直接访问 [控制台](https://console.volcengine.com/speech/service/9),页面底部 **"服务接口认证信息"** 区域即可找到 APP ID 和 Access Token。
  • Network accessline 167
    A: 直接访问 [控制台](https://console.volcengine.com/speech/service/9),页面底部 **"服务接口认证信息"** 区域即可找到 APP ID 和 Access Token。

docs/faster-whisper-setup.md

  • Network accessline 5
    官方参考: - [faster-whisper README](https://github.com/SYSTRAN/faster-whisper)
  • Network accessline 6
    - [faster-whisper README](https://github.com/SYSTRAN/faster-whisper)
  • Network accessline 7
    - [CTranslate2 Hardware Support](https://opennmt.net/CTranslate2/hardware_support.html)
  • Dangerous shell operationline 67
    sudo apt install ffmpeg

docs/plans/2026-05-22-ai-douyin-credit-proxy-plan.md

  • Network accessline 5
    **Goal:** 让 `video-to-subtitle-summary` skill 默认支持 `https://top9.cc` 作为视频解析/下载代理:用户无需注册 TikHub,只需注册 AI Douyin、领取免费额度、创建 API Key 后即可试用;后续可在 AI Douyin 购买积分,或改回自有 TikHub Token。
  • Access to secretsline 7
    [Credential-related source omitted]
  • Network accessline 144
    ### Task 1.4: 线上 API 使用说明与 curl 示例
  • Network accessline 155
    curl -sS -X POST 'https://top9.cc/api/v1/video/download-url' \
  • Network accessline 156
    [Credential-related source omitted]
  • Network accessline 158
    -d '{"url":"https://v.douyin.com/.../"}'
  • Network accessline 163
    {   "download_url": "https://...mp4...",
  • Network accessline 164
    "download_url": "https://...mp4...",
  • Network accessline 165
    "extracted_url": "https://v.douyin.com/.../",
  • Network accessline 186
    2. 创建一个 API Key。 3. 在 skill 的 .env 中配置:    AI_DOUYIN_API_BASE=https://top9.cc
  • Network accessline 187
    [Credential-related source omitted]
  • Access to secretsline 187
    [Credential-related source omitted]
  • Network accessline 188
    AI_DOUYIN_API_BASE=https://top9.cc
  • Access to secretsline 189
    [Credential-related source omitted]
  • Network accessline 228
    # 推荐:AI Douyin 代理,注册即可领取免费额度 AI_DOUYIN_API_BASE="https://top9.cc"
  • Network accessline 229
    AI_DOUYIN_API_BASE="https://top9.cc"
  • Access to secretsline 230
    [Credential-related source omitted]
  • Access to secretsline 252
    [Credential-related source omitted]
  • Network accessline 253
    - 否则若 `TIKHUB_TOKEN` 存在,走 TikHub。   - 两者都没有时,提示:     1. 去 `https://top9.cc` 注册领取免费额度并创建 API Key;或
  • Network accessline 254
    - 两者都没有时,提示:     1. 去 `https://top9.cc` 注册领取免费额度并创建 API Key;或     2. 自行注册 TikHub 并填 `TIKHUB_TOKEN`。
  • Network accessline 255
    1. 去 `https://top9.cc` 注册领取免费额度并创建 API Key;或
  • Network accessline 260
    AI_DOUYIN_API_BASE="$(read_env AI_DOUYIN_API_BASE)" [ -z "$AI_DOUYIN_API_BASE" ] && AI_DOUYIN_API_BASE="https://top9.cc"
  • Network accessline 261
    [ -z "$AI_DOUYIN_API_BASE" ] && AI_DOUYIN_API_BASE="https://top9.cc"
  • Access to secretsline 262
    [Credential-related source omitted]
  • Network accessline 265
    if [ "$PLATFORM" != "youtube" ]; then   if [ -z "$AI_DOUYIN_API_KEY" ] && [ -z "$TIKHUB_TOKEN" ]; then     echo "ERROR: 缺少视频解析凭证。推荐注册 https://top9.cc 获取免费额度并创建 API Key;或配置自己的 TIKHUB_TOKEN。"
  • Network accessline 266
    [Credential-related source omitted]
  • Access to secretsline 266
    [Credential-related source omitted]
  • Network accessline 267
    echo "ERROR: 缺少视频解析凭证。推荐注册 https://top9.cc 获取免费额度并创建 API Key;或配置自己的 TIKHUB_TOKEN。"
  • Access to secretsline 287
    [Credential-related source omitted]
  • Network accessline 291
    **Curl equivalent:**
  • Network accessline 293
    [Credential-related source omitted]
  • Access to secretsline 293
    [Credential-related source omitted]
  • Access to secretsline 294
    [Credential-related source omitted]
  • Network accessline 315
    ### 不想注册 TikHub? 可以使用在线代理:注册 [AI Douyin](https://top9.cc) 后领取免费额度,创建 API Key,填入:
  • Network accessline 316
    可以使用在线代理:注册 [AI Douyin](https://top9.cc) 后领取免费额度,创建 API Key,填入:
  • Network accessline 318
    AI_DOUYIN_API_BASE=https://top9.cc
  • Access to secretsline 319
    [Credential-related source omitted]
  • Network accessline 345
    curl -sS -X POST 'http://localhost:18088/api/v1/video/download-url' \
  • Network accessline 346
    [Credential-related source omitted]
  • Network accessline 348
    -d '{"url":"https://v.douyin.com/.../"}' | jq
  • Access to secretsline 364
    [Credential-related source omitted]
  • Access to secretsline 365
    [Credential-related source omitted]
  • Access to secretsline 366
    [Credential-related source omitted]
  • Network accessline 375
    **Objective:** 线上 `https://top9.cc` 提供稳定代理能力。
  • Network accessline 402
    [Credential-related source omitted]
  • Access to secretsline 402
    [Credential-related source omitted]
  • Network accessline 403
    - TikHub 从必需改为可选。 - 免费试用入口:`https://top9.cc`。 - 余额不足时可充值或配置自有 TikHub。
  • Network accessline 404
    - 免费试用入口:`https://top9.cc`。

docs/tikhub-setup.md

  • Network accessline 9
    **https://user.tikhub.io/register?referral_code=2lyqStPc**
  • Access to secretsline 36
    [Credential-related source omitted]
  • Network accessline 43
    [Credential-related source omitted]
  • Access to secretsline 43
    [Credential-related source omitted]
  • Access to secretsline 44
    [Credential-related source omitted]

scripts/download_video_candidates.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 53
    output_path: Path,     *,     opener: Callable[..., Any] = urllib.request.urlopen,
  • Network accessline 54
    *,     opener: Callable[..., Any] = urllib.request.urlopen,     timeout: int = 30,
  • Network accessline 55
    opener: Callable[..., Any] = urllib.request.urlopen,
  • Network accessline 66
    request = urllib.request.Request(candidate, headers={"User-Agent": USER_AGENT})

scripts/download_youtube_subtitles.py

  • Executable scriptline 1
    #!/usr/bin/env python3

scripts/install_faster_whisper.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 26
    DEFAULT_MIRRORS = (     PyPIMirror("清华", "https://pypi.tuna.tsinghua.edu.cn/simple", "pypi.tuna.tsinghua.edu.cn"),
  • Network accessline 27
    PyPIMirror("清华", "https://pypi.tuna.tsinghua.edu.cn/simple", "pypi.tuna.tsinghua.edu.cn"),
  • Network accessline 28
    PyPIMirror("阿里", "https://mirrors.aliyun.com/pypi/simple", "mirrors.aliyun.com"),
  • Network accessline 29
    PyPIMirror("腾讯", "https://mirrors.cloud.tencent.com/pypi/simple", "mirrors.cloud.tencent.com"),
  • Network accessline 30
    PyPIMirror("中科大", "https://pypi.mirrors.ustc.edu.cn/simple", "pypi.mirrors.ustc.edu.cn"),
  • Network accessline 31
    PyPIMirror("官方", "https://pypi.org/simple", None),
  • Network accessline 45
    def probe_mirror(mirror: PyPIMirror, timeout: float) -> float | None:     target = mirror.index_url.rstrip("/") + "/faster-whisper/"     request = urllib.request.Request(target, headers={"User-Agent": "video-to-subtitle-summary/installer"})
  • Network accessline 46
    target = mirror.index_url.rstrip("/") + "/faster-whisper/"     request = urllib.request.Request(target, headers={"User-Agent": "video-to-subtitle-summary/installer"})     started = time.monotonic()
  • Network accessline 47
    request = urllib.request.Request(target, headers={"User-Agent": "video-to-subtitle-summary/installer"})
  • Network accessline 48
    started = time.monotonic()     try:         with urllib.request.urlopen(request, timeout=timeout) as response:
  • Network accessline 49
    try:         with urllib.request.urlopen(request, timeout=timeout) as response:             response.read(1024)
  • Network accessline 50
    with urllib.request.urlopen(request, timeout=timeout) as response:

scripts/list_ai_douyin_tasks.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 17
    DEFAULT_API_BASE = "https://top9.cc"
  • Access to secretsline 39
    [Credential-related source omitted]
  • Access to secretsline 53
    [Credential-related source omitted]
  • Network accessline 57
    status: str = "",     search: str = "",     opener: Callable[..., Any] = urllib.request.urlopen,
  • Network accessline 58
    search: str = "",     opener: Callable[..., Any] = urllib.request.urlopen,     timeout: int = 30,
  • Network accessline 59
    opener: Callable[..., Any] = urllib.request.urlopen,
  • Network accessline 71
    [Credential-related source omitted]
  • Network accessline 72
    [Credential-related source omitted]
  • Access to secretsline 72
    [Credential-related source omitted]
  • Access to secretsline 132
    [Credential-related source omitted]
  • Access to secretsline 149
    [Credential-related source omitted]
  • Access to secretsline 150
    [Credential-related source omitted]
  • Access to secretsline 151
    [Credential-related source omitted]
  • Access to secretsline 156
    [Credential-related source omitted]

scripts/transcribe_faster_whisper.py

  • Executable scriptline 1
    #!/usr/bin/env python3

tests/test_download_video_candidates.py

  • Executable scriptline 1
    Executable file
  • Network accessline 48
    module = load_module()         response = {             "download_url": "https://cdn.example/a.mp4",
  • Network accessline 49
    response = {             "download_url": "https://cdn.example/a.mp4",             "download_urls": [
  • Network accessline 50
    "download_url": "https://cdn.example/a.mp4",
  • Network accessline 51
    "download_urls": [                 "https://cdn.example/a.mp4",                 "https://cdn.example/b.mp4",
  • Network accessline 52
    "https://cdn.example/a.mp4",
  • Network accessline 53
    "https://cdn.example/b.mp4",
  • Network accessline 54
    "https://cdn.example/a.mp4",
  • Network accessline 60
    self.assertEqual(             candidates,             ["https://cdn.example/a.mp4", "https://cdn.example/b.mp4"],
  • Network accessline 61
    candidates,             ["https://cdn.example/a.mp4", "https://cdn.example/b.mp4"],         )
  • Network accessline 62
    ["https://cdn.example/a.mp4", "https://cdn.example/b.mp4"],
  • Network accessline 69
    def opener(request, timeout):             attempts.append(request.full_url)             if request.full_url == "https://cdn.example/bad.mp4":
  • Network accessline 70
    attempts.append(request.full_url)             if request.full_url == "https://cdn.example/bad.mp4":                 raise OSError("network stalled")
  • Network accessline 71
    if request.full_url == "https://cdn.example/bad.mp4":
  • Network accessline 76
    output_path = Path(tmpdir) / "video.mp4"             result = module.download_first_working_candidate(                 ["https://cdn.example/bad.mp4", "https://cdn.example/good.mp4"],
  • Network accessline 77
    result = module.download_first_working_candidate(                 ["https://cdn.example/bad.mp4", "https://cdn.example/good.mp4"],                 output_path,
  • Network accessline 78
    ["https://cdn.example/bad.mp4", "https://cdn.example/good.mp4"],
  • Network accessline 84
    self.assertEqual(result, "https://cdn.example/good.mp4")
  • Network accessline 85
    self.assertEqual(attempts, ["https://cdn.example/bad.mp4", "https://cdn.example/good.mp4"])
  • Network accessline 88
    [Credential-related source omitted]
  • Network accessline 90
    [Credential-related source omitted]

tests/test_download_youtube_subtitles.py

  • Executable scriptline 1
    Executable file
  • Network accessline 28
    command = module.build_ytdlp_command(             url="https://www.youtube.com/watch?v=O87FdYIPeQk",
  • Network accessline 29
    url="https://www.youtube.com/watch?v=O87FdYIPeQk",

tests/test_install_faster_whisper.py

  • Executable scriptline 1
    Executable file
  • Network accessline 25
    module = load_module()         mirrors = [             module.PyPIMirror("slow", "https://slow.example/simple", None),
  • Network accessline 26
    mirrors = [             module.PyPIMirror("slow", "https://slow.example/simple", None),             module.PyPIMirror("fast", "https://fast.example/simple", None),
  • Network accessline 27
    module.PyPIMirror("slow", "https://slow.example/simple", None),
  • Network accessline 28
    module.PyPIMirror("fast", "https://fast.example/simple", None),
  • Network accessline 29
    module.PyPIMirror("down", "https://down.example/simple", None),
  • Network accessline 43
    mirror = module.PyPIMirror(             "清华",             "https://pypi.tuna.tsinghua.edu.cn/simple",
  • Network accessline 44
    "清华",             "https://pypi.tuna.tsinghua.edu.cn/simple",             "pypi.tuna.tsinghua.edu.cn",
  • Network accessline 45
    "https://pypi.tuna.tsinghua.edu.cn/simple",
  • Network accessline 54
    self.assertEqual(command[0], "/tmp/fw-venv/bin/python")         self.assertIn("-i", command)         self.assertIn("https://pypi.tuna.tsinghua.edu.cn/simple", command)
  • Network accessline 55
    self.assertIn("-i", command)         self.assertIn("https://pypi.tuna.tsinghua.edu.cn/simple", command)         self.assertIn("--trusted-host", command)
  • Network accessline 56
    self.assertIn("https://pypi.tuna.tsinghua.edu.cn/simple", command)

tests/test_list_ai_douyin_tasks.py

  • Executable scriptline 1
    Executable file
  • Network accessline 41
    self.assertEqual(             module.build_tasks_endpoint("https://top9.cc"),
  • Network accessline 42
    module.build_tasks_endpoint("https://top9.cc"),
  • Network accessline 43
    "https://top9.cc/api/v1/tasks",
  • Network accessline 44
    )         self.assertEqual(             module.build_tasks_endpoint("https://top9.cc/api"),
  • Network accessline 45
    self.assertEqual(             module.build_tasks_endpoint("https://top9.cc/api"),             "https://top9.cc/api/v1/tasks",
  • Network accessline 46
    module.build_tasks_endpoint("https://top9.cc/api"),
  • Network accessline 47
    "https://top9.cc/api/v1/tasks",
  • Network accessline 48
    )         self.assertEqual(             module.build_tasks_endpoint("https://top9.cc/api/v1"),
  • Network accessline 49
    self.assertEqual(             module.build_tasks_endpoint("https://top9.cc/api/v1"),             "https://top9.cc/api/v1/tasks",
  • Network accessline 50
    module.build_tasks_endpoint("https://top9.cc/api/v1"),
  • Network accessline 51
    "https://top9.cc/api/v1/tasks",
  • Network accessline 58
    def opener(request, timeout):             requests.append((request, timeout))
  • Network accessline 59
    requests.append((request, timeout))
  • Network accessline 64
    response = module.fetch_tasks(             "https://top9.cc/api/v1/tasks",
  • Network accessline 65
    "https://top9.cc/api/v1/tasks",
  • Network accessline 92
    "taskId": "task_123",                         "title": "测试标题",                         "url": "https://v.douyin.com/demo/",
  • Network accessline 93
    "title": "测试标题",                         "url": "https://v.douyin.com/demo/",                     }
  • Network accessline 94
    "url": "https://v.douyin.com/demo/",

tests/test_transcribe_faster_whisper.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 76
    [Credential-related source omitted]

How the signals fit together

Facts from a static read of the files at the pinned commit. They describe what the code does, not why.

Some files could not be read; the facts below still hold.

Declared and executed: 5 facts
Signal confidence: 300 facts
  • Network access in code of documentationREADME.md:19Low confidence
  • Network access in prose of documentationREADME.md:34Low confidence
  • Network access in prose of documentationREADME.md:40Low confidence
  • Network access in prose of documentationREADME.md:83Low confidence
  • Network access in prose of documentationREADME.md:84Low confidence
  • Network access in prose of documentationREADME.md:85Low confidence
  • Network access in prose of documentationREADME.md:86Low confidence
  • Network access in prose of documentationREADME.md:87Low confidence
  • Network access in prose of documentationREADME.md:88Low confidence
  • Network access in prose of documentationREADME.md:89Low confidence
  • Network access in prose of documentationREADME.md:90Low confidence
  • Network access in prose of documentationREADME.md:91Low confidence
  • Dangerous shell operation in code of documentationREADME.md:130Low confidence
  • Network access in code of documentationREADME.md:149Low confidence
  • Network access in code of documentationREADME.md:150Low confidence
  • Network access in prose of documentationREADME.md:163Low confidence
  • Access to secrets in prose of documentationREADME.md:165Low confidence
  • Access to secrets in code of documentationREADME.md:168Low confidence
  • Access to secrets in code of documentationREADME.md:169Low confidence
  • Network access in code of documentationREADME.md:178Low confidence
  • Network access in code of documentationREADME.md:179Low confidence
  • Network access in code of documentationREADME.md:180Low confidence
  • Access to secrets in code of documentationREADME.md:181Low confidence
  • Access to secrets in code of documentationREADME.md:184Low confidence
  • Access to secrets in code of documentationREADME.md:191Low confidence
  • Access to secrets in prose of documentationREADME.md:198Low confidence
  • Network access in code of documentationREADME.md:212Low confidence
  • Network access in code of documentationREADME.md:216Low confidence
  • Network access in code of documentationREADME.md:220Low confidence
  • Network access in code of documentationREADME.md:224Low confidence
  • Network access in code of documentationREADME.md:230Low confidence
  • Network access in code of documentationREADME.md:252Low confidence
  • Network access in code of documentationREADME.md:253Low confidence
  • Access to secrets in prose of documentationREADME.md:262Low confidence
  • Access to secrets in prose of documentationREADME.md:277Low confidence
  • Network access in prose of documentationREADME_en.md:26Low confidence
  • Network access in prose of documentationREADME_en.md:64Low confidence
  • Network access in prose of documentationREADME_en.md:65Low confidence
  • Network access in prose of documentationREADME_en.md:66Low confidence
  • Network access in prose of documentationREADME_en.md:67Low confidence
  • Network access in prose of documentationREADME_en.md:68Low confidence
  • Network access in prose of documentationREADME_en.md:69Low confidence
  • Network access in prose of documentationREADME_en.md:70Low confidence
  • Network access in prose of documentationREADME_en.md:71Low confidence
  • Network access in prose of documentationREADME_en.md:72Low confidence
  • Dangerous shell operation in code of documentationREADME_en.md:111Low confidence
  • Network access in code of documentationREADME_en.md:130Low confidence
  • Network access in code of documentationREADME_en.md:131Low confidence
  • Network access in prose of documentationREADME_en.md:144Low confidence
  • Access to secrets in code of documentationREADME_en.md:149Low confidence

and 250 more

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeCompatibleStandard SKILL.md SKILL.md.claude/skills/<skill-name>/
CodexCompatibleStandard SKILL.md SKILL.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard SKILL.md SKILL.md.opencode/skills/<skill-name>/
  • Native The repository ships a manifest, folder or frontmatter field for this agent.
  • Compatible A standard SKILL.md that this agent can read.
  • Unknown No evidence either way.

Derived automatically from paths, manifests and frontmatter. Not tested on each agent.