Agent skill

Caption Titles

by nodetool-ai in nodetool-ai/nodetool

Add and animate a consistent text layer on an existing NodeTool timeline.

AGPL-3.0Auto-check passedMedia & Creative

Install Caption Titles

skills CLI
$ npx skills add nodetool-ai/nodetool --skill caption-titles -a claude-code

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

GitHub CLI
$ gh skill install nodetool-ai/nodetool caption-titles --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/nodetool-ai/nodetool.git skills-src && mkdir -p .claude/skills && cp -r skills-src/packages/system-skills/caption-titles .claude/skills/caption-titles && 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
caption-titles
GitHub stars
560
Token cost
~1.9k tokens
SKILL.md length
1,102 words
Files
1
Skills in repo
127
Repo updated
First seen
Licence
AGPL-3.0

At a glance

Add and animate a consistent text layer on an existing NodeTool timeline.

  • Deterministic scrambles
  • SKILL.md covers Type is post, never a render…, Hard gate, Lock one type system before… and Caption map, plus 2 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Caption Titles is an agent skill from nodetool-ai/nodetool. Add and animate a consistent text layer on an existing NodeTool timeline. Use for titles, lower-thirds, captions, callouts, end cards, number tickers, deterministic scrambles, and text on a path.

Its SKILL.md is about 1.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Media & Creative. The repository describes itself as: Agent-first Creative Workspace. The licence is AGPL-3.0.

When your agent uses it

  • Deterministic scrambles

Example prompts

  • “/caption-titles”

What it can do on your machine

Read from SKILL.md and the folder at commit 58765d3. 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

    No scripts in the folder and no shell commands in SKILL.md (its code samples are json).

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

  • Network

    No URLs in SKILL.md.

    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

Caption Titles loads about 1.9k tokens when it runs. Until then it costs about 53 tokens; SKILL.md has 1,102 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~53
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 passed

The automated check found no risky patterns in SKILL.md.

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 nodetool-ai/nodetool at commit 58765d3, republished under its AGPL-3.0 licence (© nodetool-ai). 1,102 words, ~1,917 tokens.

Download SKILL.mdSave it as .claude/skills/caption-titles/SKILL.md (or your agent's skills folder).
name
caption-titles
description
Add and animate a consistent text layer on an existing NodeTool timeline. Use for titles, lower-thirds, captions, callouts, end cards, number tickers, deterministic scrambles, and text on a path.
featured
true

Caption & Titles → Timeline Agent

Work directly with timeline capabilities and open-timeline tools. Do not build a workflow, fabricate a cut, or render video.

motion-graphics carries the op contract for every call named here. motion-principles gives the entry and exit durations and easing behind each tier's presets, frame-composition fixes the safe inset and where a tier sits, color-motion the scrim and contrast fixes when type does not read, and logo-reveal owns the brand mark at the head or tail.

Type is post, never a render prompt

Every board skill and every video prompting skill sends its on-screen copy here. A title card, a super, a lyric or a CTA is a text clip on the timeline, not words in a generate_video or generate_image prompt: generators letter unreliably, and copy baked into pixels cannot be corrected, translated or re-timed. When a board's shot action carries Text: …, that is the caption map's input, and the render prompt should not have asked for it.

Hard gate

List and read the selected timeline first. It must contain picture clips. If it is missing or empty, stop and ask for a real cut; route users to storyboard or script-to-timeline work instead. Snapshot the timeline before editing with create_timeline_version.

Read fps, width and height off get_timeline before setting a size: fontSizePx is authored against the sequence resolution, and the tiers below are fractions of height.

Lock one type system before adding text

Resolve type family and tier weights, five size tiers as fractions of frame height, text/accent/scrim palette, safe inset and maximum width, and per-tier motion presets. Prefer a supplied brand kit, then existing text on the timeline, then a platform-safe system. Keep these tiers consistent: T1 title/end card, T2 lower-third, T3 captions, T4 callouts, T5 CTA.

The family is one NodeTool ships — Inter, Space Grotesk, Bebas Neue, Playfair Display, Lora, JetBrains Mono — or every host resolves it against its own installed fonts, the editor and the render disagree on line widths, and validate_timeline reports font_not_portable. Sizes below 2.5% of frame height report text_illegible; body copy sits at 2.5–4%. motion-direction holds the same rule for the whole piece, so when a motion language already exists, take its type family rather than picking a second one.

Motion per tier follows motion-principles: fade or slide in at 300–500ms, out at 200–300ms, role-default easing. Stagger only on a T1 or a kinetic T3 line of five words or fewer, and work out the span (durationMs + offsetMs × (words − 1)) against the clip — a span that does not fit is compressed silently and only stagger_compressed says so.

Each tier has a shipped composition. Insert it with {"op": "insert_composition", "composition_id": "<id>", ...} and override its params rather than building the rig from bare clips — the timing and motion inside it are already balanced.

TierComposition id
T1 titletitle-card
T2 lower-thirdlower-third
T3 captionscaption-bar
T4 calloutscallout
T5 CTA / end cardcta-end-card

A brand mark at the head or tail is logo-sting.

Every live-picture T2–T4 element gets a matching scrim unless the plate is demonstrably controlled.

Caption map

Write the timed map before editing: tier, exact text, start/end, position, and scrim. Caption duration is at least max(1200ms, words × 350ms). Titles/end cards hold at least 2000ms. Lower-thirds arrive about 500ms after a person appears and hold 2500–4000ms. One text idea per frame. Unknown facts use [INPUT NEEDED: …].

Show full SKILL.md (549 more words)Show less

Animate the letters and their content

For a number that changes during a text clip, store textAnimator on an animation with kind: "ticker", from, and to. It also accepts decimals, padTo, prefix, and suffix. Set groupSeparator to "," to show thousands as 2,847; omitting it keeps existing tickers ungrouped. For a deterministic decode into the clip's authored text, use kind: "scramble" with a fixed seed and optional charset. These operate over the animation window, so a held final frame shows the finished value.

json
{"id": "count-in", "role": "in", "preset": "fade", "durationMs": 900,
 "textAnimator": {"kind": "ticker", "from": 1, "to": 7,
  "padTo": 2, "suffix": " / 07"}}

For unit-by-unit motion, set stagger.unit to character, word, or line and give it offsetMs. With a text stagger, styleTracks can target glyph.color, glyph.blurPx, or glyph.trackingPx. The colour uses CSS colour values; blur and tracking use sequence pixels. Use text.color or text.fill.stops.0.color for a whole line. A text fill gradient also exposes text.fill.angle and stop offsets. The target must refer to an existing style field; text.color is hidden while a gradient fill is set.

To lay a title along a curve, set textStyle.path to an SVG path in normalized canvas coordinates. This places the baseline on the path. It does not make each character travel along it. Shape and mask paths can morph through shape.d and mask.d style tracks when both paths have matching commands and point counts. Use followPath when the whole clip should move along a path.

edit_timeline's animate_clip input accepts presets and custom numeric curves, but does not accept textAnimator or styleTracks; those fields are dropped from that call. To author them, read the current document and use set_timeline_document with the animation fields in the clip. That call validates the complete document and snapshots the previous state. Preserve the other tracks and clips from the document. motion-graphics owns the full tool contract.

Build and verify

Add separate overlay and subtitle tracks. For each map item, add scrim before text, apply the locked tier style, then animate it with that tier’s entry and exit preset. No hard cut-on. Use stagger only for tone-appropriate kinetic captions. Keep all text within safe margins and clear of faces and product moments.

Two facts about stacking decide whether the text is seen at all. The lowest track index draws on top, so the scrim's track index sits between the picture's and the text's — picture, scrim, text, in descending index. And word-level captions generated from a voiceover clip composite above every real track regardless of where that clip sits, so no title can cover them: time a T1 around the narration rather than over it.

Verify in two passes, and they answer different questions. validate_timeline reads the document: text_illegible (size, or under 3:1 contrast against the text's own background plate or a full-frame shape behind it), font_not_portable, stagger_compressed, animation_exceeds_clip, overlaps, and clips shorter than a frame. Its contrast check refuses to guess — a translucent scrim, gradient type or a plate it cannot prove is behind the text produces no finding — so a silent pass is not a pass. Then preview_timeline_frame at each item's entry midpoint, a held moment, and its exit: that is where text over a busy plate, a scrim covering a face, or a caption still finishing when its clip ends shows up. Re-read the map against the frames: timing, reading floors, scrim ordering, one CTA at the end. Stop after authoring the text layer unless rendering is requested.

© nodetool-ai, AGPL-3.0. 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 packages/system-skills/caption-titles of nodetool-ai/nodetool.

Open the folder on GitHubat commit 58765d3

Compare with similar skills

Caption Titles 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.

Caption Titles compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Caption Titles this skillnodetool-ai/nodetool560—~1.9kAutomated safety check: PassAGPL-3.0
Guizang Social Cardsop7418/guizang-social-card-skill7.4k1 repos~7.8kAutomated safety check: PassAGPL-3.0
Weekly Changelog Videoheygen-com/hyperframes59k—~3.3kAutomated safety check: PassApache-2.0
Anthropic Brand Stylinganthropics/skills180k30 repos~559Automated safety check: PassApache-2.0
MoneyPrinterTurbo Video Generatorharry0703/MoneyPrinterTurbo129k—~2.1kAutomated safety check: WarnMIT
Brag Slim Launch Video Makerlatent-spaces/brag14k1 repos~1.9kAutomated safety check: PassMIT

Similar skills

  • Guizang Social Cards

    op7418/guizang-social-card-skill

    Produces social card sets for Xiaohongshu and WeChat: carousels, Live Photo motion cards and puzzle layouts, and WeChat cover pairs, rendered from single-file HTML.

    7.4k GitHub starsUsed in 1 repo~7.8k tokens
    Media & CreativeAuto-check passed
  • Weekly Changelog Video

    heygen-com/hyperframes

    Turns a weekly changelog markdown file into a branded HyperFrames video with voiceover, animated mock-UI scenes and captions, using fonts, background and scripts bundled in the skill.

    59k GitHub stars~3.3k tokensUpdated today
    Media & CreativeAuto-check passed
  • Anthropic Brand Styling

    anthropics/skills

    Official

    Applies Anthropic's brand colors and fonts to artifacts such as PowerPoint slides, using fixed hex values for text and accents, Poppins headings and Lora body text.

    180k GitHub starsUsed in 30 repos~559 tokens
    Media & CreativeAuto-check passed
  • MoneyPrinterTurbo Video Generator

    harry0703/MoneyPrinterTurbo

    Installs and runs MoneyPrinterTurbo to turn a topic or script into a finished short video with voice-over, subtitles, stock footage and music.

    129k GitHub stars~2.1k tokensUpdated today
    Media & CreativeAuto-check: warnings
  • Builds a short, shareable launch video with music and motion from a project directory or a website URL, using only tools already on the machine.

    14k GitHub starsUsed in 1 repo~1.9k tokens
    Media & CreativeAuto-check passed
  • HyperFrames Media Use

    heygen-com/hyperframes

    Finds, generates and edits media for HyperFrames video projects: music, sound effects, images, icons, logos, voiceovers, captions and color grades.

    59k GitHub stars~2.4k tokensUpdated today
    Media & CreativeAuto-check passed

More from nodetool-ai/nodetool

All 127 skills in this repo
  • Beat Sync Editing

    nodetool-ai/nodetool

    Cut a NodeTool timeline to music and shape its pacing — detect the beat grid, place cuts on phrases, pick a cut type, build speed ramps with time remap, and give the piece an arc.

    560 GitHub stars~2.6k tokensUpdated today
    Auto-check passed
  • Color Motion

    nodetool-ai/nodetool

    Choose and animate colour on a NodeTool timeline, including shape and text gradients, colour grades, 3D LUTs, and dither.

    560 GitHub stars~2.3k tokensUpdated today
    Auto-check passed
  • Commercial Beat Sheet

    nodetool-ai/nodetool

    Write a shootable, precisely timed commercial beat sheet and store it as a NodeTool storyboard, with a consistent entity roster behind every shot.

    560 GitHub stars~4.6k tokensUpdated today
    Auto-check passed
  • Elevenlabs Audio Prompting

    nodetool-ai/nodetool

    Direct ElevenLabs speech, dialogue, sound effects and music — the bracketed audio tags v3 acts on and why the voice decides whether a tag lands, stability as the delivery dial, punctuation instead…

    560 GitHub stars~1.9k tokensUpdated today
    Auto-check passed
  • Frame Composition

    nodetool-ai/nodetool

    Stage the frame on a NodeTool timeline — grids, focal placement, safe areas per aspect ratio, depth layers and parallax, camera moves, and where elements enter and leave.

    560 GitHub stars~3.5k tokensUpdated today
    Auto-check passed
  • Gpt Image 2 Prompting

    nodetool-ai/nodetool

    Prompt OpenAI's GPT Image 2 — the five-slot Scene/Subject/Details/Use case/Constraints template it responds to, the change-versus-preserve shape for edits, labelled multi-image compositing, and how…

    560 GitHub stars~1.6k tokensUpdated today
    Auto-check passed

Questions about Caption Titles

What does Caption Titles do?

Add and animate a consistent text layer on an existing NodeTool timeline. Caption Titles is an agent skill from nodetool-ai/nodetool. Add and animate a consistent text layer on an existing NodeTool timeline.

When should I use Caption Titles?

Caption Titles fits situations like: deterministic scrambles.

How do I install Caption Titles in Claude Code?

Run `npx skills add nodetool-ai/nodetool --skill caption-titles -a claude-code`. Or copy the skill folder (packages/system-skills/caption-titles in nodetool-ai/nodetool) into .claude/skills/caption-titles in your project. Claude Code loads it when a task matches its description.

How do I install Caption Titles in Codex?

Run `npx skills add nodetool-ai/nodetool --skill caption-titles -a codex`. Or copy the skill folder (packages/system-skills/caption-titles in nodetool-ai/nodetool) into .agents/skills/caption-titles in your project. Codex loads it when a task matches its description.

Can I use Caption Titles 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 nodetool-ai/nodetool --skill caption-titles -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/caption-titles, .gemini/skills/caption-titles, .github/skills/caption-titles and .opencode/skills/caption-titles in your project.

What does Caption Titles need to run?

SKILL.md names no scripts, command-line tools or credentials: Caption Titles is instructions for the agent only.

Does Caption Titles access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Caption Titles safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Caption Titles use?

Caption Titles is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Caption Titles 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 Caption Titles?

Skills that share tags, products or a category with Caption Titles: Guizang Social Cards (op7418/guizang-social-card-skill, 7.4k stars), Weekly Changelog Video (heygen-com/hyperframes, 59k stars), Anthropic Brand Styling (anthropics/skills, 180k stars) and MoneyPrinterTurbo Video Generator (harry0703/MoneyPrinterTurbo, 129k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Caption Titles?

nodetool-ai (a GitHub organization) maintains it in nodetool-ai/nodetool, which has 560 GitHub stars. The repository holds 127 skills in this directory. The repository was last updated on October 9, 2026.

Source: nodetool-ai/nodetool on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.