agentsclimarketplace

Chunk captions

Skill jperrello/C0BALT_CUT/.claude/skills/chunk-captions

Investigation on using Claude Code to automatically generate profitable YouTube videos.

Install
npx -y skills add jperrello/C0BALT_CUT --skill chunk-captions

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Group a clip's word-timed transcript into phrase-sized caption chunks via Claude. Replaces the rolling 4-word window in burn-subtitles. Each chunk is one self-contained phrase that swaps in as a whole unit.

SKILL.md

1.6 KB, as published. Nobody here has run it

chunk-captions

Claude reads a clip-local transcript and returns an ordered list of caption chunks. Each chunk is what one breath/clause would naturally hold (typically 3–6 words) and the chunks together cover every word in the transcript exactly once, in order.

Invoke

.claude/skills/chunk-captions/chunk-captions.sh <clip_transcript.json> <out.json>
  • clip_transcript: per-clip transcript with words[] (clip-local timestamps)
  • out: path for the chunks JSON

Output

{
  "chunks": [
    {
      "text": "I saw a car today",
      "t0": 0.0,
      "t1": 1.42,
      "words": [{"w": "I", "t0": 0.0, "t1": 0.15}, ...]
    },
    {
      "text": "and it was red",
      "t0": 1.42,
      "t1": 2.55,
      "words": [...]
    }
  ]
}

Rules

  • Every word in transcript.words appears in exactly one chunk, in source order.
  • Chunk t0 / t1 derive from the first/last word in the chunk.
  • Chunks are monotonic and non-overlapping.

How

build_prompt.py indexes every word 0..N-1 and asks Claude to return ordered groupings (lists of word indices). parse_reply.py reconstructs each chunk from its word indices, validates full coverage, and emits chunks.json. On malformed/missing reply it falls back to a deterministic 5-word grouping so the pipeline never stalls.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.