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.
How do I install this agent skill?
npx skills add https://github.com/lattifai/omni-captions-skills --skill omnicaptions-laicutIs this agent skill safe to install?
- Gen Agent Trust Hubpass
The omnicaptions-LaiCut skill facilitates caption timing alignment by installing vendor-provided Python packages. The main security consideration is the processing of untrusted external caption and media files, which represents a potential surface for indirect prompt injection, a common risk for content-processing tools.
- Socketpass
No alerts
- Snykfail
Risk: HIGH · 2 issues
- Runlayerfail
1/1 file flagged
What does this agent skill do?
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
| Option | Description |
|---|---|
-o, --output | Output file (default: <caption>_LaiCut.json) |
-f, --format | Output format (default: json) |
-k, --api-key | LattifAI API key |
--split-sentence | AI-powered semantic sentence segmentation |
-v, --verbose | Show 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:
- Tell user that LaiCut requires a valid LattifAI API key
- Ask user if they want to provide a new key
- Direct user to https://lattifai.com/dashboard/api-keys
- NEVER skip alignment step claiming "timing is already accurate enough"
Common Mistakes
| Mistake | Fix |
|---|---|
| API key invalid/expired | Ask user for new key, do NOT skip |
| No API key | Set LATTIFAI_API_KEY or use -k |
| Audio format error | Convert to WAV/MP3/M4A first |
| Empty output | Check caption has text content |
Related Skills
| Skill | Use When |
|---|---|
/omnicaptions:transcribe | Generate transcript first |
/omnicaptions:convert | Convert caption formats |
/omnicaptions:translate | Translate 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)
How can the creator link this skill?
Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.
<a href="https://skillzs.dev/skills/lattifai/omni-captions-skills/omnicaptions-laicut">View omnicaptions-LaiCut on skillZs</a>