AddThisFeature

Auto Captions

Every uploaded video gets timed captions without anyone typing them out.

involved Accessibility & Internationalization

What it adds

An automatic captioning pass over uploaded video that produces a timed caption track shown in the player.

What your agent is told to do

5
  1. 1

    Extend the app's existing Voice Transcription rather than adding a second speech pipeline. What is new here is timing, storage as a caption track, and player integration, not the recognition itself.

  2. 2

    Run captioning as a background job triggered after the upload finishes, and reuse the app's existing job progress reporting so the user can see where a long file has got to.

  3. 3

    Store the caption track as its own record linked to the media, with a language, a status, and a source marking it as machine-generated so a human correction can supersede it later.

  4. 4

    Expose the track through the app's existing player with a caption toggle, and remember the viewer's on or off choice across videos.

  5. 5

    Do not block the upload or the publish step on captioning. The video should be watchable immediately, with captions appearing when they are ready.

Edge cases it handles

8
  • Long files must be queued with visible progress rather than holding the upload request open. A ninety minute recording will otherwise time out somewhere between the browser and the worker.
  • Audio-only tracks, silent tracks, and pure music must resolve to a clear no-speech-detected state rather than writing an empty caption file that the player advertises as available captions.
  • Cap each caption line to a readable length and each cue to a sensible on-screen duration, and split long sentences across cues instead of pushing a wall of text over the picture.
  • When generation fails partway through a long file, keep the cues already produced, mark the track as partial, and offer a resume rather than discarding an hour of work.
  • Trimming, re-encoding, or replacing the source media invalidates the timings. Detect the change and either re-run the pass or mark the track as out of sync rather than showing captions that drift.
  • Multiple speakers, heavy accents, and background noise all reduce accuracy. Label machine-generated tracks as such in the player so viewers calibrate their trust.
  • Store a confidence signal per cue where the recognition provides one, so a later editing pass can highlight the lines most likely to be wrong.
  • A caption track puts whatever was said in the room onto a public page and into search results, transcribed automatically with nobody reading it first. Give the owner a review step before the track is published, and let them correct or suppress a single line rather than only switching the whole track off.

Definition of done

9
  • Uploading a video queues a captioning job without blocking the upload or publish.
  • Progress is visible for long files and reported through the app's existing job progress surface.
  • Completed tracks appear as a selectable caption option in the player and are labelled machine-generated.
  • Silent and audio-only sources produce a no-speech state, never an empty advertised track.
  • Cue length and on-screen duration stay within readable limits.
  • A failed run preserves partial results and can be resumed.
  • Replacing or trimming the source media invalidates or regenerates the track.
  • The feature matches the existing design system.
  • No existing functionality is broken.

Related features

How it works

  1. 1

    Copy the link

    Grab the Markdown instruction URL for this feature.

  2. 2

    Give it to your AI

    Paste it into Claude Code, Cursor, v0, Lovable — whatever you build with.

  3. 3

    It inspects, then implements

    Your agent reads your existing app first, then adds the feature to fit it.

Works with your stack

These instructions are written to adapt. They tell the agent to detect your framework, match your existing design system, and reuse what you already have — rather than assuming a particular stack.

Need it tighter than that? Customize the feature and tell it exactly what you're running.