agentsclimarketplace

Omnicaptions LaiCut

Skill lattifai/omni-captions-skills/skills/omnicaptions-LaiCut

Use when user needs accurate/precise caption timing, or aligning captions with audio/video using forced alignment. Corrects caption timing to match actual speech. Uses LattifAI Lattice-1 model.From its SKILL.md

Install
npx -y skills add lattifai/omni-captions-skills --skill omnicaptions-LaiCut

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

One thing to look at

  • 22 stars22 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

5.5 KB, as published. Nobody here has run it

LaiCut

LattifAI's audio-text processing toolkit. Currently supports forced alignment, with translate and speaker diarization coming soon.

Requires LattifAI API Key - Get from https://lattifai.com/dashboard/api-keys

When to Use

  • Accurate/precise timing needed - When user requests accurate timestamps or precise alignment
  • Sync misaligned captions - Fix timing drift in downloaded captions
  • Align manual transcripts - Match text to speech precisely
  • Post-transcription alignment - Improve timing from auto-generated captions
  • Multi-format support - SRT, VTT, ASS, LRC, TXT, MD

When NOT to Use

  • Need full transcription (use /omnicaptions:transcribe)
  • No existing caption/transcript (nothing to align)
  • Very short clips (<5 seconds)

Setup

pip install "omni-captions-skills[laicut]" --extra-index-url https://lattifai.github.io/pypi/simple/

API Key

Priority: LATTIFAI_API_KEY env → .env file → ~/.config/omnicaptions/config.json

If not set, ask user: Please enter your LattifAI API key (get from https://lattifai.com/dashboard/api-keys):

Then run with -k <key>. Key will be saved to config file automatically.

CLI Usage

# Basic alignment (default: JSON with word-level timing, RECOMMENDED)
omnicaptions LaiCut audio.mp3 caption.srt
# → caption_LaiCut.json

# Then convert to desired format (preserves word timing in JSON for future use)
omnicaptions convert caption_LaiCut.json -o caption_LaiCut.srt

# Smart sentence segmentation (for word-level captions like YouTube VTT)
omnicaptions LaiCut video.mp4 caption.vtt --split-sentence
OptionDescription
-o, --outputOutput file (default: <caption>_LaiCut.json)
-f, --formatOutput format (default: json)
-k, --api-keyLattifAI API key
--split-sentenceAI-powered semantic sentence segmentation
-v, --verboseShow progress

JSON Output (Recommended)

JSON output preserves word-level timing for downstream tasks:

[
  {
    "text": "Hello world",
    "start": 0.0,
    "end": 2.5,
    "words": [
      {"word": "Hello", "start": 0.0, "end": 0.5},
      {"word": "world", "start": 0.6, "end": 2.5}
    ]
  }
]

Convert JSON to other formats:

# For playback/editing
omnicaptions convert video.en_LaiCut.json -o video.en_LaiCut.srt

# For bilingual ASS
omnicaptions convert video.en_LaiCut.json -o video.en_LaiCut.ass --style bilingual

# For karaoke
omnicaptions convert lyrics_LaiCut.json -o lyrics_LaiCut_karaoke.ass --karaoke

For translation: Convert to SRT first (JSON is too large for Claude to read):

# 1. JSON → SRT
omnicaptions convert video.en_LaiCut.json -o video.en_LaiCut.srt

# 2. Claude 翻译 → video.en_LaiCut_Claude_zh.srt

# 3. 转换为带颜色 ASS
omnicaptions convert video.en_LaiCut_Claude_zh.srt -o video.en_LaiCut_Claude_zh_Color.ass \
  --line1-color "#00FF00" --line2-color "#FFFF00"

Ask User: Enable Smart Sentence Segmentation?

When input captions are word-level or poorly segmented (e.g., YouTube VTT), ask user whether to enable --split-sentence:

Is the caption word-level or poorly segmented (e.g., YouTube VTT)?
- Yes → Add --split-sentence (AI re-segments into natural sentences)
- No → Keep original segmentation

Use cases: YouTube VTT, word-aligned captions, messy auto-generated captions

LattifAI API Key Error Handling

LaiCut requires LattifAI API key (NOT Gemini API key)

Error example:

API KEY verification error: API KEY is invalid or expired.

Correct handling:

  1. Tell user that LaiCut requires a valid LattifAI API key
  2. Ask user if they want to provide a new key
  3. Direct user to https://lattifai.com/dashboard/api-keys
  4. NEVER skip alignment step claiming "timing is already accurate enough"

Common Mistakes

MistakeFix
API key invalid/expiredAsk user for new key, do NOT skip
No API keySet LATTIFAI_API_KEY or use -k
Audio format errorConvert to WAV/MP3/M4A first
Empty outputCheck caption has text content

Related Skills

SkillUse When
/omnicaptions:transcribeGenerate transcript first
/omnicaptions:convertConvert caption formats
/omnicaptions:translateTranslate after alignment

Workflow Examples

Important:

  • LaiCut outputs JSON by default (preserves word-level timing)
  • Convert to SRT/ASS when needed for playback or translation
  • Generate bilingual captions AFTER alignment
# No caption: transcribe → align (JSON) → convert → translate
omnicaptions transcribe video.mp4
# → video_GeminiUnd.md
omnicaptions LaiCut video.mp4 video_GeminiUnd.md
# → video_GeminiUnd_LaiCut.json
omnicaptions convert video_GeminiUnd_LaiCut.json -o video_GeminiUnd_LaiCut.srt
# → video_GeminiUnd_LaiCut_Claude_zh.srt (after translate)

# Has caption: download → align (JSON) → convert → translate
omnicaptions download "https://youtu.be/xxx"
# → xxx.en.vtt
omnicaptions LaiCut xxx.mp4 xxx.en.vtt
# → xxx.en_LaiCut.json
omnicaptions convert xxx.en_LaiCut.json -o xxx.en_LaiCut.srt
# → xxx.en_LaiCut_Claude_zh.srt (after translate)
# → xxx.en_LaiCut_Claude_zh_Color.ass (after convert with --style)

Keep looking

Skills are one crate of 627,801. 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.