Skip to content

feat(subtitle): add ZapCap captions provider#128

Open
Najji wants to merge 1 commit into
calesthio:mainfrom
Najji:feat/zapcap-captions-provider
Open

feat(subtitle): add ZapCap captions provider#128
Najji wants to merge 1 commit into
calesthio:mainfrom
Najji:feat/zapcap-captions-provider

Conversation

@Najji

@Najji Najji commented Jun 22, 2026

Copy link
Copy Markdown

What

Adds ZapCap as a subtitle/captions provider so OpenMontage can burn animated, word-synced caption templates (Hormozi, Beast, Devin, ...) into a video via the ZapCap API.

Changes

  • tools/subtitle/zapcap_captions.py — new zapcap_captions BaseTool (capability=subtitle, provider=zapcap, runtime=API). Wraps the full flow — upload (local file or URL) → create task → poll → download — with a granular action dispatcher (list_templates, upload, create_task, get_task, approve_transcript, balance) for multi-template / multi-language fan-out via transcript_task_id + translate_to.
  • .agents/skills/zapcap-captions/SKILL.md — Layer 3 skill: flow, templates, renderOptions schema, translation/fan-out, failure modes.
  • Docsdocs/PROVIDERS.md provider section + env summary, AGENT_GUIDE.md Layer 3 table row, README.md subtitles row, .env.example key.

Subtitle capability goes from 2 → 3 providers (subtitle_gen, remotion_caption_burn, zapcap_captions).

Configuration

Single env var: ZAPCAP_API_KEY (requires a ZapCap Pro plan + API credits).

Verification

Verified end-to-end against api.zapcap.ai: free FFmpeg render → ZapCap caption (Hormozi 1 / Beast templates) → downloaded MP4. list_templates returns 29 templates; transcript came back accurate; output is a valid 1080×1920 MP4 with captions burned in.

Notes

  • .env and projects/ (verification artifacts) are gitignored and not included.

🤖 Generated with Claude Code

Add ZapCap as a subtitle/captions provider so OpenMontage can burn
animated, word-synced caption templates (Hormozi, Beast, Devin, ...)
into a video via the ZapCap API.

- tools/subtitle/zapcap_captions.py: new `zapcap_captions` BaseTool
  (capability=subtitle, provider=zapcap, runtime=API). Wraps the full
  flow — upload (local file or URL) -> create task -> poll -> download —
  with a granular `action` dispatcher (list_templates, upload,
  create_task, get_task, approve_transcript, balance) for multi-template
  / multi-language fan-out via transcript_task_id + translate_to.
  Auth via ZAPCAP_API_KEY; pinned to https://api.zapcap.ai.
- .agents/skills/zapcap-captions/SKILL.md: Layer 3 skill (flow,
  templates, renderOptions schema, translation/fan-out, failure modes).
- docs: PROVIDERS.md provider section + env summary, AGENT_GUIDE.md
  Layer 3 table row, README.md subtitles row, .env.example key.

Subtitle capability is now 3 providers (subtitle_gen, remotion_caption_burn,
zapcap_captions). Verified end-to-end against api.zapcap.ai: free FFmpeg
render -> ZapCap caption -> downloaded MP4, transcript accurate.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@Najji Najji marked this pull request as ready for review June 22, 2026 01:05
@Najji Najji requested a review from calesthio as a code owner June 22, 2026 01:05

@rajpratham1 rajpratham1 left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a substantial but well-structured feature addition that integrates ZapCap as a new subtitle provider across the project. The implementation is comprehensive—it includes the provider implementation, documentation, configuration, agent skills, and environment setup, making it straightforward for users to adopt. The separation between the provider logic and the existing subtitle tools is also clearly documented, and the granular API actions (upload, create_task, get_task, etc.) provide good flexibility for more advanced workflows.

@Anil-matcha

Copy link
Copy Markdown

Hey @Najji! Great contribution. Also wanted to mention — Text-To-Video-AI is a more actively maintained alternative to OpenMontage if you're looking for a project to contribute to long-term!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants