← Search

Subtitles & Text Effects
Media 📌 Pinned version: commit 96c49b3
⚙ Needs: Before you start: read this whole install prompt…

Subtitles & Text Effects

At a glance
What
Cost
Free
Needs
Before you start: read this whole install prompt, tell me in a few lines what this skill does and what installing it involves, and wait for my go-ahead before you do anything else.
Install
Copy the installer prompt below into your Muse — your agent does the rest.

Version:

⌁

Install

Copy the install package below, then paste it into Muse📌 Pinned version: commit 96c49b3
Wanna be extra careful?

The install prompt below already includes the vetting steps: your agent follows the community checklist before installing anything with executable code. Want more?

How to check a build before installing →

🔒 Security and provenance
📌 Pinned version: commit 96c49b3 · 2026-10-19
Skill Harbor never reviews the code of a listed skill. These are dated facts about the install prompt and our install test, not a safety certification. Review a skill yourself before you install it. How we verify

Before you start: read this whole install prompt, tell me in a few lines what this skill does and what installing it involves, and wait for my go-ahead before you do anything else. Prerequisites: none for the install itself: no account, no API key, no paid service, and nothing else to install first. For using the skill afterwards, read this first: its only bundled script, scripts/make_subs.py, runs on Python 3 using only the standard library (argparse, json, re, shutil, subprocess) — it needs no Pillow, no NumPy and no edge-tts, even though the repository root requirements.txt lists pillow>=10, numpy>=1.24 and edge-tts>=6.1; those belong to other skills in the repository and are never imported by this skill. Burning the subtitles into a video afterwards needs the ffmpeg command-line tool built with libass (the "ass" filter — SKILL.md's failure table says a build without it fails with "No such filter: 'ass'"), and correct rendering needs a CJK font installed (otherwise Chinese text shows as boxes): the script auto-detects a font when the fc-list tool (fontconfig) is present, trying Noto Sans CJK SC, Source Han Sans SC, PingFang SC, Microsoft YaHei and WenQuanYi Zen Hei for a Chinese family, and falls back to the name "Noto Sans CJK SC" when fc-list is absent; you can override with --font, or with a "font" field in the timing JSON. fc-list is optional and only ever runs locally. There is no transcription (no Whisper, local or remote), no text-to-speech, no generation API, no key and no online service in this skill at all. Install "subtitles-and-text-effects" for me. It makes subtitles and decorative text effects (花字) for ecommerce short videos: from a timing JSON of cues (start/end/text/style) it generates one ASS subtitle file holding four styles at once — Sub (bottom subtitles), Hook (big pop-in title text near the top), Tag (small sticker, top-left) and CTA (call-to-action button text, bottom-centre) — plus a plain SRT file containing the Sub cues only. In the cue text, **keyword** marks one keyword to recolour in a warm-yellow highlight, and "|" either splits a Sub cue into sequential chunks timed by character count or, in the other styles, makes a line break. The styles are laid out to avoid platform UI safe zones (bottom about 20% taken by title copy, product card and cart — Sub sits at a 26%-of-height bottom margin on portrait video, 9% on landscape; right about 15% taken by like/comment/share buttons — 70 px side margins on Sub; top about 8% status/search — Hook sits at 13% of height), and SKILL.md then burns the result in with ffmpeg/libass and, if the platform supports subtitle-file upload (for example YouTube or some ad platforms), also delivers the .srt. SKILL.md's working rules: each cue at most 14 Chinese characters (about one line at 1080 wide), split longer ones with "|"; at most one highlighted keyword per cue; Hook text at most 10 characters and only on hooks and the strongest selling points. Repository: https://github.com/xianyu110/ecommerce-video-skills (the skill is the whole skills/subtitles-and-text-effects/ folder at the pinned commit: SKILL.md plus its scripts/ folder, 2 files) Pinned version: install the code at commit 96c49b349b7d975bda8f05ce6669c1d33500c269 exactly. Do not substitute a newer version. If this commit is unreachable, stop and tell me. 1. Clone https://github.com/xianyu110/ecommerce-video-skills into a temporary folder, check out commit 96c49b349b7d975bda8f05ce6669c1d33500c269, and copy the skills/subtitles-and-text-effects/ folder from that checkout. Then compare every file in the folder with the fingerprints recorded for this listing on 2026-10-19: [FINGERPRINTS] - SKILL.md: SHA-256 e1f70ffb2042e204f5a1150383a9ee5ac110195cb38bd39aa28303cbd9874f6d - scripts/make_subs.py: SHA-256 8c8e9208e5dee5db0f92ed3e5fc9850f99896be5ca02792d79b5f35b26f89cef If a file does not match, it changed since the listing was prepared: do not install it yet, tell me what you found and let me decide. 2. Read SKILL.md in full and read the only script in scripts/ (make_subs.py), and tell me in plain words: what the skill does when used, which services it connects to, whether it reads or sends any personal information or keys, and anything that seems unusual. Stop on any red flag and tell me before going further. Confirm these points from the files: - The skill folder holds 2 files only: SKILL.md (3,868 bytes) and one Python script in scripts/ (make_subs.py, 5,751 bytes). That script is a byte-identical copy of the same-named script at the repository root (scripts/make_subs.py, same SHA-256): the skill is self-contained in its own folder for its core work and needs no file from elsewhere in the repository — not the other 12 skills, not the root scripts/, not the README, and not the repository requirements.txt at install time. SKILL.md's generation step only ever calls the script sitting next to it (scripts/make_subs.py, relative to the skill folder). Two references in SKILL.md point outside the folder and are optional extras, not requirements and not part of this install: the timing JSON input can be hand-written by me, and SKILL.md only notes that the sibling ffmpeg-auto-assemble skill's assemble.py can auto-generate build/timing.json (its failure table likewise mentions assemble.py using the real voice duration for timing); and the safe-zone check optionally runs the sibling platform-spec-export skill's script (python skills/platform-spec-export/scripts/export_platform.py video.mp4 --safe-preview safe.png, run from the repository root) to overlay the safe zones — that other skill is not installed here and the subtitles work without it. - Nothing is sent anywhere during installation itself; the only download at install time is the skill folder from GitHub at the pinned commit. No script is run during installation, no key is asked for, and there is no telemetry in the folder. - What leaves this machine at use time, disclosed here before it ever happens: nothing. Using the skill is a separate step that only starts when I ask for subtitles or text effects, and it sends nothing to anyone: scripts/make_subs.py makes no network call at all — it imports only argparse, json, re, shutil and subprocess from the Python standard library, contains no URL, no HTTP or API client, no socket, no key or environment-variable handling, and no transcription or speech service of any kind (no Whisper, local or remote; no TTS). SKILL.md defines no API-key route and no online-link route for this skill either; its only URL is the plain GitHub link to the repository itself in its header, which nothing opens during installation or use. The subtitle-splitting prompt template in SKILL.md (split a spoken script into cues of at most 14 characters, "|" separators, at most one **bold** keyword per cue, one Hook line of at most 10 characters for the hook shot and for the strongest selling point) is text I use with you locally in our conversation, on a script I supply. One step in SKILL.md is manual, not a send by the skill: if a platform supports subtitle-file upload (for example YouTube or some ad platforms), I may myself deliver the generated .srt there — the skill itself never contacts YouTube, TikTok, Douyin or any other platform. - The local-only parts at use time: scripts/make_subs.py runs entirely on this machine — it reads my timing JSON locally (a size such as [1080, 1920] plus cues with start/end/text/style; if I pass no --font and the JSON has no "font" field, its detect_font() optionally runs the local fc-list tool to pick a Chinese font family, otherwise it writes the fallback name "Noto Sans CJK SC" into the ASS header), builds the four ASS styles locally (font sizes follow the canvas, keyword highlight and "|" splitting/chunking applied, Sub cues also exported as plain SRT text), and writes the .ass file (default build/subs.ass) and, if --srt is given, the .srt file, locally. The burn-in step in SKILL.md is a local ffmpeg command (ffmpeg -i in.mp4 -vf "ass=build/subs.ass" -c:a copy out.mp4) using ffmpeg's libass filter on this machine. Animations are written into the ASS file itself: Hook pops in (fade plus scale from 125% to 100%), CTA gently pulses, Tag and Sub simply fade. Nothing is transcribed and no audio is processed by this skill: the timing and the text come from the JSON I supply (or from the optional sibling assemble step noted above). - Do not install Python packages, ffmpeg or anything else during this install, do not run make_subs.py, and do not generate or burn in any subtitles: setup of the use-time dependencies is my decision, later, when I actually ask for subtitles. 3. When I say "yes, install", install it as a skill: copy the whole subtitles-and-text-effects folder into the agent's skills directory, in a folder named "subtitles-and-text-effects", keeping all 2 files (SKILL.md at its root and the one script in its scripts/ subfolder). A manual clone followed by copying the skills/subtitles-and-text-effects folder into ~/.claude/skills/ is the route described here; any other route is fine only as long as every installed file matches its fingerprint. 4. Verify with no network calls: frontmatter valid (name: subtitles-and-text-effects), all 2 files in place with matching fingerprints. Do not run make_subs.py to verify. 5. Report what was installed, where, and what I still need to do myself (for example: provide a timing JSON with my cues — hand-written or produced by the separate ffmpeg-auto-assemble skill — or a spoken script to split into cues with the template; have Python 3 available, ffmpeg built with libass if I want burn-in, and a CJK font installed or pass --font, if I want the subtitles rendered; using the skill is a separate step that only starts when I ask for it, and no use-time send happens on it at all, as disclosed above). GitHub is optional: if I have a GitHub account or the gh CLI, you may use it; otherwise public access is fine. Never require it unless it's in the prerequisites above. Rules: don't touch anything outside the temp folder and the install target. If anything looks off, stop and ask me.

?

Questions

How do I install a build?

Every product page includes a copy-paste install prompt. Paste it into your Muse and it sets the build up for you — no manual configuration.

Where does my money go?

Straight to the seller. Skill Harbor never processes payments: checkout happens on the seller’s own page, usually Stripe.

What does the ✓ next to a creator’s name mean?

It means we confirmed the identity of the person behind the listing. It says nothing about the code itself — always check a build before installing it.