Agent skill

TSX Vertical Shorts Builder

by hassancs91 in hassancs91/claude-faceless-shorts-creator

Builds a roughly 40-second vertical short end to end from a topic, scripting beats, rendering TSX compositions and layering voice and captions.

MITAuto-check: notesMedia & Creative

Install TSX Vertical Shorts Builder

skills CLI
$ npx skills add hassancs91/claude-faceless-shorts-creator --skill make-short -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install hassancs91/claude-faceless-shorts-creator make-short --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/hassancs91/claude-faceless-shorts-creator.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/make-short .claude/skills/make-short && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
make-short
GitHub stars
271
Token cost
~1.9k tokens
SKILL.md length
774 words
Files
1
Skills in repo
5
Repo updated
First seen
Licence
MIT

At a glance

Builds a roughly 40-second vertical short end to end from a topic, scripting beats, rendering TSX compositions and layering voice and captions.

  • Works in 6 steps: script + beats → the composition → QA (do not skip, it catches real bugs… → …
  • Making a new faceless short-video for a niche topic
  • SKILL.md covers Artifact contract, Stage 1 — script + beats, Stage 2 — the composition and Stage 3 — QA (do not skip, it…, plus 4 more sections
  • Calls python, node and npm

What it does

Each short gets its own folder with a `script.md` (hook, beat sheet, production notes) and a machine-readable `beats.json` contract covering format, voiceover timing and beat timeline. A shared component kit supplies captions, titles and other recurring pieces, and niche-specific libraries exist for topics like chess, math, algorithms and spreadsheets, with the rule of adding at most one new niche library per short so it stays generic enough for a series. An idea bank in IDEAS.md is read when picking a topic and grown while brainstorming.

The beat grammar runs about 38 to 42 seconds: a fully composed hook in the first few seconds, a setup, an optional quiz card, a reveal synced word by word to the voiceover, a twist, and a loop whose last frame matches the first so it replays as one continuous cycle. Voiceover is paced at roughly 2.7 words per second, and outros are told to skip old engagement calls to action and end on the payoff instead, trimming any dead air at the tail. Everything runs from the repo root with stdlib-only Python plus ffmpeg and Node.js on PATH.

When your agent uses it

  • Making a new faceless short-video for a niche topic
  • Adding narration and word-synced captions to an existing short
  • Continuing an existing short-N series in this repository

Example prompts

  • “Make a short about a classic chess opening trap for the series.”
  • “Add narration and captions to short-7-algo using the shared voice.”
  • “Pick a new niche idea from IDEAS.md and build the beats for it.”

Requirements

  • Python 3.10+ (standard library only)
  • ffmpeg and Node.js on PATH
  • API keys set in `.env`

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. script + beats
  2. the composition
  3. QA (do not skip, it catches real bugs every time)
  4. voice (ElevenLabs, word-exact captions)
  5. SFX (the suggest-sfx machinery, shorts flavor)
  6. music (optional, per video)

What it can do on your machine

Read from SKILL.md and the folder at commit 773054b. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • python
    • node
    • npm

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use npm, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

TSX Vertical Shorts Builder loads about 1.9k tokens when it runs. Until then it costs about 175 tokens; SKILL.md has 774 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~175
When it runs · the whole SKILL.md, loaded when a task matches
~1.9k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NoteMentions a .env fileSKILL.md:14
    must be on PATH; API keys live in `.env` (see `.env.example`).

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from hassancs91/claude-faceless-shorts-creator at commit 773054b, republished under its MIT licence (© hassancs91). 774 words, ~1,922 tokens.

Download SKILL.mdSave it as .claude/skills/make-short/SKILL.md (or your agent's skills folder).
name
make-short
description
Build a fully-synthetic vertical short (1080×1920, ~40s) end-to-end from a topic — script + beats.json, linked TSX beats over a persistent canvas, phone-scale QA, render, ElevenLabs voice with exact word-synced captions, SFX audition, optional music bed. Use when the user wants to "make a short", "create a shorts video", build a TSX short for a niche (chess, math, algorithms, dev tips, Excel…), add voice/captions to a short, or continue the short-N series in this repo. This is the 100%-TSX track — for video-model pixels use make-ai-short, for the paper-collage documentary look use make-vox. Defers raw TSX crash rules to vidtsx-2d-generator and SFX taste to suggest-sfx + brand §7.

make-short — fully-TSX vertical shorts, end to end

Everything is code: no footage, no stock. One short = one Remotion composition fed by a beats contract, with voice and SFX layered on after render. Proven across the 12 example shorts in shorts/. The idea bank + niche ranking lives in IDEAS.md — read it when picking a topic, and grow it when brainstorming.

Run everything from the repo root. Tools are stdlib-only Python 3.10+; ffmpeg/node must be on PATH; API keys live in .env (see .env.example).

Artifact contract

shorts/short-N-<niche>/
  script.md        — hook, beat sheet table (time | on screen | VO), production notes
  beats.json       — machine contract: format, vo[] (text+start/end+words), beats[], niche timeline
  voice/           — per-line TTS clips + voice.wav        (gen_voice.py)   [gitignored]
  sfx-plan.json    — cue sheet on the global timeline       (mix_sfx.py)
  output/          — short-N-sfx.mp4 (+ music auditions)                    [gitignored]
remotion/src/shots/short-N/
  ShortN<Name>.tsx — THE composition (registered by npm run gen)
  vo.gen.ts        — AUTO-GENERATED VO with exact word times (never hand-edit)

Shared kit: remotion/src/lib/shorts.tsx (Captions, Kicker, BigTitle, Stamp, PauseCard, StatChip, ProgressBar, ShortsBackdrop, SAFE areas, prog helper). Niche libs so far: lib/chess.tsx, lib/math.tsx, lib/algo.tsx, lib/sheet.tsx, lib/piano.tsx, lib/prob.tsx, lib/map.tsx, lib/orbit.tsx, lib/chart.tsx, lib/story.tsx… Add at most ONE new niche lib per short, generic enough for a series.

Stage 1 — script + beats

Beat grammar (~38–42s): HOOK (0–3.4s, frame 0 FULLY composed — the payoff already visible, no fade from black) → SETUP → optional QUIZ (PauseCard, ~2.5s — drives comments) → REVEAL in 2–4 steps, each synced to a VO word → TWIST → LOOP (last frame == frame 0, dissolving the payoff back into the intro so it replays seamlessly).

Outros — no fluff. NEVER end on an old-school engagement-CTA — no "what should I do next?", no "comment below", no "which one should I break down". They read as dated. End on the PAYOFF line, and let the visual LOOP blend back into the intro — the loop-into-intro is the ending. Prefer a clean visual dissolve/reset that lands the last frame exactly on frame 0. If a seamless loop genuinely isn't possible for a topic, just end on the payoff with no filler. Don't pad the tail: trim the composition so it ends shortly after the payoff, not seconds of dead air.

VO rules: ~100 words total, estimate line windows at ~2.7 words/sec with slack to the next line's start (tighter forces audible atempo squeeze — 3.3wps needed a 1.3× squeeze; 2.7wps peaked at 1.11×). Facts must be verified before scripting. Write script.md + beats.json (vo lines with estimated start/end; niche timeline in global SECONDS).

Stage 2 — the composition

  • One .tsx under remotion/src/shots/short-N/, compositionConfig 1080×1920 @30, ~42s. Follow vidtsx-2d-generator's hard rules (frame-based only, monotonic ranges, Easing.bezier).
  • Beats = <Sequence> scenes over ONE persistent canvas (the board/equation/array is the continuity — rewinds and evolutions happen in a single component's timeline, not cuts).
  • Captions lines={VO} + ProgressBar mounted at the ROOT (global time), scenes beneath.
  • THE recurring bug: frames inside a <Sequence> are LOCAL. Converting a global beat second to a scene cue is local_f = global_s*fps − sequence_from. Check every cue twice.
  • Frame-0 rule: hook scene uses warm props (BigTitle/EqRow) and negative ats so highlights/ stamps are already on at f0. Loop scene reverses the hook's punch-in (settle 1.06→1 vs grow 1→1.06) so the video loops seamlessly.
  • Safe areas: captions block centered ~y1500; nothing critical in bottom 340px / right 160px.
Show full SKILL.md (312 more words)Show less

Stage 3 — QA (do not skip, it catches real bugs every time)

cd remotion && npm run gen        # frames.mjs does NOT run gen-registry itself
node scripts/frames.mjs ShortNName 0,<beat-boundaries+hero-frames>,<last> --scale=0.5

READ every PNG (phone scale). Checklist: frame 0 composed & thumbnail-grade · every reveal synced to its beat · nothing covering the payoff element · kickers swap with the narration · captions clear of UI zones · loop frame ≈ frame 0. Fix, re-render frames, only then:

node scripts/render-all.mjs ShortNName --scale=1     # -> remotion/out/ShortNName.mp4

Stage 4 — voice (ElevenLabs, word-exact captions)

python tools/gen_voice.py --beats shorts/short-N-<niche>/beats.json \
    --voice TX3LPaxmHKxFdv7VOQHJ --emit-ts remotion/src/shots/short-N/vo.gen.ts
  • Per-line TTS with /with-timestamps → REAL per-word times (tempo-scaled, global) written into beats.json AND vo.gen.ts. The shot imports { VO } from './vo.gen' — captions then highlight on the exact spoken word. Never estimate when a voice track exists.
  • Clips are cached by text-hash: rewriting one line only re-bills that line.
  • Voice: the examples use ElevenLabs premade "Liam" (TX3LPaxmHKxFdv7VOQHJ); swap in any voice (including your own clone) with the --voice flag + regen.
  • Then re-render the composition (captions retimed) and mux: ffmpeg -i remotion/out/<Id>.mp4 -i shorts/.../voice/voice.wav -map 0:v -map 1:a -c:v copy -c:a aac -b:a 192k -t 42 remotion/out/<Id>-voiced.mp4

Stage 5 — SFX (the suggest-sfx machinery, shorts flavor)

Read brand.md §7 + media/library/sfx/catalog.json. Library-first; add generic recipes to palette.json + python tools/gen_sfx.py only for genuine misses. Author shorts/short-N-<niche>/sfx-plan.json (preview = the -voiced.mp4, out = output/short-N-sfx.mp4).

Shorts taste adaptations: diegetic action sounds are the content (piece thocks, digit pops) and may exceed long-form density; decorative cues stay optional: true; layer the 2–3 hero moments (capture+stamp, carry flight+landing+chime). Cue times from EXACT landing frames: at_s = (move.at + move.dur + sequence_from) / fps.

PYTHONIOENCODING=utf-8 python tools/mix_sfx.py shorts/short-N-<niche>/sfx-plan.json --print
PYTHONIOENCODING=utf-8 python tools/mix_sfx.py shorts/short-N-<niche>/sfx-plan.json

The mix is an AUDITION — the user's ear is the audit gate before anything is called final. Update catalog used_in afterwards.

Stage 6 — music (optional, per video)

Library beds in media/library/music/ (gen_music.py to grow). Audition over the SFX mix: python tools/mix_music.py --all --base shorts/short-N-<niche>/output/short-N-sfx.mp4 (or --bed <id>). Hard-ducked under voice.

Done =

script.md + beats.json authored (facts verified) · composition QA'd frame-by-frame · rendered at scale 1 · voice generated with word-exact captions and muxed · SFX plan authored + audition mixed (~−15.5 LUFS, awaiting the user's ear) · library used_in updated · IDEAS.md queue updated.

© hassancs91, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/make-short of hassancs91/claude-faceless-shorts-creator.

Open the folder on GitHubat commit 773054b

Compare with similar skills

TSX Vertical Shorts Builder next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

TSX Vertical Shorts Builder compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
TSX Vertical Shorts Builder this skillhassancs91/claude-faceless-shorts-creator271—~1.9kAutomated safety check: NotesMIT
Release Videohuytieu/COG-second-brain1.3k—~1.7kAutomated safety check: PassMIT
Video Productionspeechlab0210/video-production-skill105—~4.1kAutomated safety check: NotesMIT
ShowtimeFavioVazquez/showtime206—~3kAutomated safety check: PassMIT
Super Video MakerBomx/super-video-maker-skill309—~11kAutomated safety check: NotesNone
Hearyourvoicekillernay/HearYourVOICE140—~10kAutomated safety check: NotesMIT

Similar skills

  • Release Video

    huytieu/COG-second-brain

    Turn a product release (the list of shipped items plus real screen recordings) into a motion recap video and one explained demo per feature, with sound effects tied to on-screen motion and a…

    1.3k GitHub stars~1.7k tokensUpdated 7 days ago
    Media & CreativeAuto-check passed
  • Video Production

    speechlab0210/video-production-skill

    AI educational video production pipeline. An agent skill from speechlab0210/video-production-skill.

    105 GitHub stars~4.1k tokensUpdated 3 mo ago
    Media & CreativeAuto-check: notes
  • Showtime

    FavioVazquez/showtime

    A skill your agent uses when the user wants a video made, edited or finished: a launch or promo, product demo, explainer, trailer or teaser, tutorial or walkthrough, a screen recording turned into a…

    206 GitHub stars~3k tokensUpdated today
    Media & CreativeAuto-check passed
  • Super Video Maker

    Bomx/super-video-maker-skill

    End-to-end AI video production skill for agentic frameworks.

    309 GitHub stars~11k tokensUpdated 2 mo ago
    Media & CreativeAuto-check: notes
  • Hearyourvoice

    killernay/HearYourVOICE

    The repeatable workflow for short Thai documentary/explainer videos — one topic in, one finished MP4 out.

    140 GitHub stars~10k tokensUpdated 2 mo ago
    Media & CreativeAuto-check: notes
  • Render Brand Identity Reveal

    gooseworks-ai/goose-skills

    Render a 'brand identity reveal' video from a config — a single poster frame in a real, softly-lit space (real wall, soft-focus plant in the corner, dappled leaf shadow, illuminated poster) whose…

    1.2k GitHub stars~1.4k tokensUpdated today
    Media & CreativeAuto-check passed

More from hassancs91/claude-faceless-shorts-creator

  • VidTSX 2D Video Generator

    hassancs91/claude-faceless-shorts-creator

    Generates 2D Remotion-based TSX video files for VidTSX from a shot or scene description, with style presets and rules that keep renders from crashing.

    271 GitHub stars~2.8k tokensUpdated 1 mo ago
    Auto-check passed
  • AI Video Short Maker

    hassancs91/claude-faceless-shorts-creator

    Produces a vertical generative-video short end to end: a locked recurring character animated by a fal video model, ElevenLabs voice, Remotion captions and a clean loop.

    271 GitHub stars~1.6k tokensUpdated 1 mo ago
    Auto-check: notes
  • Layered-Collage Documentary Shorts

    hassancs91/claude-faceless-shorts-creator

    Builds a vertical collage-style documentary short from script to render: scene dissection into image layers, layer production, TSX assembly on a collage kit, frame checks and voice.

    271 GitHub stars~1.5k tokensUpdated 1 mo ago
    Auto-check passed
  • Sound Effects Planner for Shorts

    hassancs91/claude-faceless-shorts-creator

    Proposes beat-synced sound effects for a rendered short from a reusable library, then mixes an audition preview under the voice once you approve the plan.

    271 GitHub stars~2.6k tokensUpdated 1 mo ago
    Auto-check: notes

Questions about TSX Vertical Shorts Builder

What does TSX Vertical Shorts Builder do?

Builds a roughly 40-second vertical short end to end from a topic, scripting beats, rendering TSX compositions and layering voice and captions. json` contract covering format, voiceover timing and beat timeline. A shared component kit supplies captions, titles and other recurring pieces, and niche-specific libraries exist for topics like chess, math, algorithms and spreadsheets, with the rule of adding at most one new niche library per short so it stays generic enough for a series.

When should I use TSX Vertical Shorts Builder?

TSX Vertical Shorts Builder fits situations like: making a new faceless short-video for a niche topic; adding narration and word-synced captions to an existing short; continuing an existing short-N series in this repository.

How do I install TSX Vertical Shorts Builder in Claude Code?

Run `npx skills add hassancs91/claude-faceless-shorts-creator --skill make-short -a claude-code`. Or copy the skill folder (.claude/skills/make-short in hassancs91/claude-faceless-shorts-creator) into .claude/skills/make-short in your project. Claude Code loads it when a task matches its description.

How do I install TSX Vertical Shorts Builder in Codex?

Run `npx skills add hassancs91/claude-faceless-shorts-creator --skill make-short -a codex`. Or copy the skill folder (.claude/skills/make-short in hassancs91/claude-faceless-shorts-creator) into .agents/skills/make-short in your project. Codex loads it when a task matches its description.

Can I use TSX Vertical Shorts Builder in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add hassancs91/claude-faceless-shorts-creator --skill make-short -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/make-short, .gemini/skills/make-short, .github/skills/make-short and .opencode/skills/make-short in your project.

What does TSX Vertical Shorts Builder need to run?

Going by SKILL.md and its folder, TSX Vertical Shorts Builder needs the command-line tools its instructions call (python, node and npm). Our summary lists: Python 3.10+ (standard library only); ffmpeg and Node.js on PATH; API keys set in `.env`.

Does TSX Vertical Shorts Builder access the network?

SKILL.md contains no URLs. Its commands use npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is TSX Vertical Shorts Builder safe to install?

Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does TSX Vertical Shorts Builder use?

TSX Vertical Shorts Builder is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does TSX Vertical Shorts Builder use?

About 1.9k tokens (SKILL.md is roughly 7.7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to TSX Vertical Shorts Builder?

Skills that share tags, products or a category with TSX Vertical Shorts Builder: Release Video (huytieu/COG-second-brain, 1.3k stars), Video Production (speechlab0210/video-production-skill, 105 stars), Showtime (FavioVazquez/showtime, 206 stars) and Super Video Maker (Bomx/super-video-maker-skill, 309 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains TSX Vertical Shorts Builder?

hassancs91 (a GitHub user) maintains it in hassancs91/claude-faceless-shorts-creator, which has 271 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on August 18, 2026.

Source: hassancs91/claude-faceless-shorts-creator on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.