native-subtitle-quote-image skill

Skill that turns a video into tall subtitle collages: crops burned-in subtitles or draws reviewed lines onto real frames

  • 2,859 ★ on the repository
  • Last commit
  • MIT
Skill

Broad access

Why this level

  • When YouTube asks for sign-in, the skill may use browser cookies through `yt-dlp`, only after your permission
  • The skill downloads other people's videos, and publishing frames with other people's faces and lines can infringe copyright and image rights
  • The scripts write files to disk and install Python packages with your consent
All reasons and checks

chengyi-ai/native-subtitle-quote-image

Install

In your terminal, with SkillFoxx CLI

npx skillfoxx add skills/native-subtitle-quote-image

Detects the agents on your machine, shows the access level and pins the version.

Other ways to install

Access and checks

How we review

Broad accessThe tool can change data, run commands or handle secrets.

  • When YouTube asks for sign-in, the skill may use browser cookies through `yt-dlp`, only after your permission
  • The skill downloads other people's videos, and publishing frames with other people's faces and lines can infringe copyright and image rights
  • The scripts write files to disk and install Python packages with your consent

This is third-party code. Review the repository files before installing.

What it does

native-subtitle-quote-image turns a video into a tall image of real frames with subtitles, usually 3:4. The source is a local file or a YouTube link you have rights to process. The skill finds lines from the transcript, takes exact frames, builds the collage and checks every image. There are two modes and the skill never mixes them. In native subtitle mode the `render` command crops subtitle bands already burned into the video picture, with no recognition or redrawing. In script subtitle mode `render-script` draws your reviewed lines from JSON onto the real frame and marks them as added afterwards. If you name no mode, the agent asks first. The scripts also run without an agent: `check-source` checks resolution and decodes the first 10 seconds, `sample` builds a contact sheet of candidate frames, `band` shows the crop area. Links need `yt-dlp`, and before each task the skill checks the latest GitHub release once.

Who it is for. For social media authors and content managers who turn interviews, series and talks into quote images built from real frames.

Good fit when

  • You need a tall image with five lines from a video with burned-in subtitles, text left untouched
  • You need lines from a reviewed transcript or translation placed on real frames as marked subtitles
  • You need several images from a YouTube video on chosen topics, each one checked
  • You need frames away from subtitle changes: `sample` takes frames around given timestamps

Not a fit when

  • Subtitles are a separate toggle track: native mode cannot crop them, and the skill offers script mode only with your consent
  • You have no rights to the video: the skill is meant for material you may process
  • You need to edit a video clip: the skill makes still images only
  • You want to fabricate quotes: script lines must trace to a verifiable source and are marked

Example request

Use native-subtitle-quote-image: take this video with burned-in subtitles and build a native subtitle image from five lines

Limitations

Python 3 with the packages from `requirements.txt` is required. Links need `yt-dlp`, and Chinese, Japanese or Korean lines need suitable fonts, which `check_environment.py --script-mode` checks. YouTube sometimes asks for sign-in, and the skill then asks permission to use browser cookies. Video below 720p goes through only with your confirmation. The skill version lives in `VERSION`, and the skill only reports a new release without updating itself. The repository has tests in `tests/`.

How to disable. Delete the `native-subtitle-quote-image` folder from the agent's skills directory, for example `~/.claude/skills/` or `~/.codex/skills/`.

FAQ

How do I install native-subtitle-quote-image in Claude Code?

Clone the repository and run `mkdir -p ~/.claude/skills && cp -R skills/native-subtitle-quote-image ~/.claude/skills/`. Then install the packages from `requirements.txt` and run `check_environment.py`.

How do native subtitles differ from script subtitles?

Native subtitles are cropped from the video pixels and never redrawn, while script subtitles are drawn on the frame from reviewed JSON and marked as added afterwards. The skill does not swap one mode for the other without your consent.

Does the skill work with YouTube links?

Yes, through `yt-dlp`: it downloads the video and supporting tracks. After download `check-source` verifies the resolution is at least 720p and the first seconds decode.

Can I run the scripts without an agent?

Yes. `native_subtitle_stitch.py` takes the `check-source`, `sample`, `band` and `render` commands with a video path, and the README has examples.

What image sizes does it produce?

3:4 by default, though you can keep the original frame ratio or set your own. For several images the skill makes an overview sheet, `final_contact_sheet.jpg`.

Discussion

No questions or reviews yet.

Skills

The video-explainer skill turns a script into a vertical 9:16 explainer: narration, captions, Remotion and a pre-render review

SkillExtended access122Repository stars

A skill that turns a topic into a narrated 4K video: research, script, local TTS, Remotion composition and an FFmpeg mix

SkillExtended access1.7KRepository stars

A skill that finds B-roll and literal sources for lines, shows them in a Storyboard and hands over clips after you approve

SkillBroad access203Repository stars

A skill that pulls highlights from a long video: download, transcript, segmentation, analysis and clips with titles

SkillExtended access579Repository stars

A video-director skill: from one sentence it builds a project with footage, storyboard, captions, motion, an ffmpeg render and quality checks

SkillBroad access378Repository stars

ChatGPT short-video editing skills

ChatGPT 剪短影音 Skills

Two agent skills: set up the editing environment and build a vertical short video in eight verified steps

SkillExtended access615Repository stars

Comparison with similar tools

Cards that share the main search query, and how they differ.

ToolOfficialRepository starsMain difference
native-subtitle-quote-image (this card)no2,859
YouTube Clipper Skillno2,284cuts YouTube video clips and builds no images
Claude Videono19,950lets an agent watch video, without finished subtitle images

README in short

Docs come in Chinese, English and Korean, with a gallery of finished images, the workflow and script commands. The environment check is read-only, and missing parts install only after your consent.

README badge

Original SKILL.md

---
name: native-subtitle-quote-image
description: 将本地视频或用户有权处理的在线视频,经过来源获取、文字稿定位、选题选句、精确取帧、紧凑裁切、拼图和逐张质检,制作成 3:4 或保留画面原比例的视频字幕长图。支持两种明确分开的输出:保留画面内已烧录字幕的原生字幕模式,以及把已审核的时间点与台词绘制到真实视频帧上的脚本字幕模式。用户要求原生字幕截图、字幕帧拼图、YouTube 金句长图、台词截图、不重绘字幕、自定义中文台词,或调整主图比例、字幕区域、台词间隔和美感时使用。
---

# 视频字幕拼图

先确认用户想要的字幕模式,再判断素材是否支持。不要把两种模式混为一种,也不要默默从原生字幕切到绘制字幕。

## 开始时确认模式

如果用户没有明确指定模式,先用用户当前使用的语言询问,并简短说明两种选择。中文提问可直接使用:

> 您当前是选择原生字幕还是脚本字幕?原生字幕会保留视频画面里已有的字幕,不重绘文字;脚本字幕会把您确认过的台词或翻译后期绘制到真实视频帧上,并标明是后期字幕。

用户已明确说“原生字幕”“保留画面原字幕”“不重绘字幕”,或“脚本字幕”“把指定台词/翻译绘制到画面上”时,按其选择继续,不重复询问。用户尚未选择时,可以只读检查素材以说明哪种模式可行,但不要执行模式专属的渲染;等用户选择后再继续。若所选模式与素材不匹配,说明具体原因并征求用户是否改选,不能自行切换。

## 非阻塞版本检查

每个新任务开始、处理素材之前运行一次:

```bash
python3 "<SKILL_DIR>/scripts/check_update.py" --json
```

- 脚本从 Skill 内的 `VERSION` 读取本地版本,只访问本项目的 GitHub Latest Release;默认 24 小时内复用一次缓存。
- 结果为 `update_available` 时,用一句话告诉用户当前版本、最新版本和 Release 链接,然后继续当前任务。只提醒,不自动更新、不覆盖本地 Skill。
- 结果为 `up_to_date` 时无需打扰用户。结果为 `unavailable` 时也不要阻塞当前任务;若只是运行环境禁止联网,可申请对 GitHub API 的只读访问并用 `--force` 重试一次,未获授权就继续任务。
- 缓存只包含检查时间、最新版本号和 Release 链接,不写入仓库,也不记录账号、素材或使用行为。

## 模式路由

| 条件 | 模式 | 成品文字来源 | 命令 |
|---|---|---|---|
| 关闭播放器 CC 后,截图里仍有字幕;用户要求保留原字幕 | **原生字幕模式** | 视频画面像素 | `render` |
| 视频没有需要的烧录字幕,但用户要求把经确认的台词、翻译或观点排成案例风格 | **脚本字幕模式** | 已审核 JSON 中的 `text` | `render-script` |

- 原生模式不得 OCR 后重绘、翻译、改写或覆盖字幕。
- 脚本模式必须明确称为“脚本字幕”或“后期绘制字幕”,不得宣称文字是画面原字幕。
- 脚本台词必须能回到原视频、用户稿件或其他明确来源复核;不编造人名、数据、引语或翻译含义。
- 用户只说“保留原字幕”时,不能因为原字幕难处理就转脚本模式。

## 按任务读参考文件

- **YouTube 等 URL**:先读 [references/yt-dlp-and-transcripts.md](references/yt-dlp-and-transcripts.md),获取用户有权处理的视频、元数据和辅助时间轴。URL 任务不能在一次公开请求失败后直接退回“只支持本地视频”:若 YouTube 返回机器人登录验证、年龄验证或用户自己的非公开视频限制,先说明原因并取得授权,再按参考文件用 `yt-dlp --cookies-from-browser chrome` 继续。字幕和视频分两条命令下载;下载前用 `yt-dlp -F` 枚举变体并按 AV1 → VP9 → H.264 择优,下载后必须运行 `native_subtitle_stitch.py check-source VIDEO --min-height 720`(解码前 N 秒无错误、分辨率达标)才能继续;视频报 HTTP 403 或自检失败时按参考文件的格式回退表逐级换变体,低于 720p 的级别须先征得用户确认,每次尝试记入 `download-attempts.log`;字幕报 429 时缩减语言并放慢请求,都不要无限重试。
- **读长视频 → 选题 → 写文章/帖子 → 配图**:读 [references/end-to-end-workflow.md](references/end-to-end-workflow.md)。
- **台词条太高、间隔太宽、缺少美感**:读 [references/visual-style.md](references/visual-style.md)。
- **报错、出图异常或结果不对**:先查 [references/troubleshooting.md](references/troubleshooting.md),按「症状 → 先查什么 → 怎么处理」逐项排查。
- **本地短视频且时间点已确定**:直接执行下面的核心流程。

## 环境与路径

将 `<SKILL_DIR>` 解析为当前 `SKILL.md` 所在目录的绝对路径;不要假设 Agent 的工作目录就是 Skill 目录。

```bash
# 本地原生字幕
python3 "<SKILL_DIR>/scripts/check_environment.py"

# 中日韩脚本字幕
python3 "<SKILL_DIR>/scripts/check_environment.py" --script-mode

Report a problem

Foxx AInative-subtitle-quote-image
Foxx AI

I am Foxx AI and I have already vetted this tool. Ask about install, setup or anything else, and I will keep it simple.