agentsclimarketplace

Reel editor th

Skill PiNocPie/thai-claude-skills/skills/content/reel-editor-th

Turn a talking-head clip (a single person to camera, usually shot on a phone) into a finished vertical 9:16 Thai-subtitled Instagram Reel that is built to go viral: word-by-word Thai captions with green keyword highlights, a 3-second hook, optional on-screen demo cards (SKILL.md editor, Claude Code chat, Excel, etc.), a follow + link-in-bio CTA, sound-effect accents, and a matching Reel cover. Use this whenever you have an .mp4 of a single person talking and want subtitles, a reel, "ตัดคลิป", "ทำ reel", "ใส่ซับ", "subtitle", captions, or a viral IG/TikTok video — even if the ask is just "ทำให้ หน่อย" with a clip attached. Also use it when editing or re-rendering a reel already made with this pipeline (color, captions, CTA, cover tweaks). Do NOT use it for building a video from scratch with no footage (that is HyperFrames), for non-Thai narration, or for multi-person edits.From its SKILL.md

Install
npx -y skills add PiNocPie/thai-claude-skills --skill reel-editor-th

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.
  • 13 stars13 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.

SKILL.md

6.6 KB, ~1.6k tokens by cl100k_base, as published. Nobody here has run it

IG Reel (Thai talking-head)

A repeatable pipeline that turns one talking-head clip into a polished, viral-shaped 9:16 Thai reel. The hard parts (HDR color, Thai word segmentation, caption motion, compositing) are solved in bundled scripts. Your job per clip is to author one file — timeline.py — from the transcript, then run build.sh.

Default preferences (override per project)

  • Style = clean (translucent pill + green underline on the active word). It reads premium. bold (loud TikTok) and terminal (coder) also exist.
  • No color filter — true colors. Graded footage often looks unnatural. The pipeline does NOT grade; it only fixes HDR→SDR so colors are correct (see below). Do not add an eq/colorbalance grade unless explicitly asked.
  • No em dashes anywhere in copy — they read as an AI tell. Grep your text.
  • Accent green #0BDE85 on near-black. Highlight only payload words (nouns, numbers, the product name), not everything, or the highlight stops meaning anything.
  • CTA points to the BIO, not "comment a keyword" (edit the offer text). Plus a "กดติดตาม" chip. Keep a follow CTA.
  • Hook is provocative/"เสียดสุด" and lands on-screen text within the first second (most viewers watch muted).
  • Font is Sukhumvit Set (bundled on macOS). No Kanit/Prompt installed.

The HDR trap — read this first (it caused wrong skin/shirt color once)

Modern phones record HDR (HLG, BT.2020, 10-bit). The local Homebrew ffmpeg has no zimg/zscale/tonemap/libplacebo, so any plain ffmpeg pass mis-decodes HDR and the skin goes green and the shirt goes grey. build.sh fixes this in step 1 by tonemapping HDR→SDR bt709 with a tiny Swift/AVFoundation tool (scripts/tonemap.swift, the same tone map QuickTime uses). Always build on the tonemapped master, never the raw HDR file. Ground-truth check for any frame: qlmanage -t -s 1080 <clip>.mp4 -o <dir>.

Captions are rendered as PNG overlays (PIL) then composited, because this ffmpeg has no libass/drawtext. That is expected — do not try to burn subtitles with ffmpeg.

Workflow

Work in a fresh per-clip directory (e.g. ~/Desktop/ig/<clip-name>/).

1. Transcribe (Thai, word-level). Use mlx-whisper (fast on Apple Silicon). Turn OFF conditioning or the tail loops into garbage:

python3 -c "import mlx_whisper,json; r=mlx_whisper.transcribe('audio.wav', \
 path_or_hf_repo='mlx-community/whisper-large-v3-turbo', language='th', \
 word_timestamps=True, condition_on_previous_text=False, verbose=False); \
 [print(f\"[{s['start']:.1f}-{s['end']:.1f}] {s['text'].strip()}\") for s in r['segments']]"

Extract audio first: ffmpeg -i source.mp4 -vn -ar 16000 -ac 1 audio.wav. If a stretch still garbles, re-transcribe just that window (-ss/-t). Fix obvious ASR errors (Claude, Skill.md, brand names) by hand.

2. Author timeline.py. Copy scripts/timeline_template.py into the workdir as timeline.py and fill it: chunk captions into short 2-3 word phrases on the real segment timings, write the hook and punch lines, mark green emphasis words, and (optionally) place demo cards. Full guidance + examples: references/authoring-guide.md. A complete real example is scripts/timeline_example.py.

3. (Optional) Customize demo cards. If you use INSERTS, the card CONTENT in scripts/render_cards.py is topic-specific — edit the text to match this clip, or leave INSERTS = [] to ship captions-only. See the authoring guide.

4. Build:

bash ~/.claude/skills/reel-editor-th/scripts/build.sh <source.mp4> <workdir> clean

Output: <workdir>/out/reel_clean.mp4 + cover_*.jpg.

5. Verify before delivering. Sample a few frames (ffmpeg -ss <t> -i out/reel_clean.mp4 -frames:v 1 f.jpg) and actually LOOK: colors natural (skin not green), Thai tone marks intact, no tofu boxes (PIL has no emoji/glyph fallback — draw shapes, never render ⚡📌▌→ as text), captions clear of the bottom ~15% (IG UI) and not covering the face during hook/punch, CTA legible. Fix in timeline.py / the render scripts and re-run.

6. Deliver. Copy the mp4 + a cover + a caption doc into a clearly-named folder on the Desktop. macOS may block overwriting existing Desktop files from the shell — write to a new folder / new filename instead (the Write tool can overwrite Desktop text files; ffmpeg/cp often cannot). Include an IG caption + hashtags file alongside the mp4.

What each script does

  • tonemap.swift — HDR(HLG)→SDR bt709 via AVFoundation. Compiled on first build.
  • render_lib.py — fonts, easing, text drawing helpers.
  • render_captions.py — caption styles (STYLES: clean/bold/terminal), hook, punch, CTA. Edit draw_cta to change the bio offer text.
  • render_cards.py — the 4 demo cards (skillmd/arrow/claudechat/excel). Content is editable per clip.
  • render_overlay_video.py — renders the full RGBA overlay to a ProRes4444 alpha .mov.
  • render_cover.py — 3 Reel covers from a true-color frame.
  • build_audio.py — derives SFX from the timeline and mixes them under the voiceover.
  • build.sh — orchestrates the whole thing.

Common tweaks

  • Different caption look → change the style arg (clean/bold/terminal).
  • Reposition/resize captions → STYLES[...]["y"] and ["size"] in render_captions.py.
  • Change the CTA offer/number → draw_cta in render_captions.py.
  • More/less energy in audio → gains in build_audio.py or set SFX_EVENTS in timeline.
  • If a flatter/brighter look is wanted or (rarely) graded → add an eq/colorbalance after the tonemap in build.sh's composite step, and show him an A/B still first.

What ships with it: 12 files

54.9 KB alongside SKILL.md, 9 of them executable

references/

Keep looking

Skills are one crate of 325,949. 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.