Skip to content

Skill: video transcript is undiscoverable — it lives in seo get, not documented as a transcript source #3

Description

@Brikas

Summary

An agent (Claude Code) using the twentythree skill failed to retrieve a video's transcript because nothing in the skill points to where the transcript actually lives. The skill documents two transcript-ish sources, both of which return empty even when a transcript exists; the real one is in seo get, described only as "SEO metadata management."

What happened

Goal: pull the transcript for a webinar-recording video (the platform manage page clearly shows a "Video Transcript" / "Full transcription"). The agent reasoned "transcript = subtitles or webinar transcription" and checked exactly those:

  • video get <id> -> subtitles_p: false
  • webinar transcription list <webinar-id> -> 0 transcriptions
  • video subtitle list <id> -> []

All empty, so it concluded no transcript existed and started re-transcribing the audio via Whisper (which also failed first pass -- the 52 MB audio exceeds Groq's 25 MB limit). The transcript was available the whole time via:

twentythree seo get --object-id <id> --json | jq '.data.data.seo_data.transcript'

Path: data.data.seo_data.transcript[], each item {text[], timestamp_begin, timestamp_end}, ordered by start time, flagged seo_data.context.transcript_draft_p: true (machine-generated draft). This is exactly what the manage page renders as "Video Transcript."

Why the skill made this hard

  • SKILL.md resource index describes seo as just "SEO metadata management" -- zero hint it embeds the full timestamped transcript.
  • There is no "how to get a transcript" guidance anywhere, so an agent naturally tries subtitle / webinar transcription and stops when both are empty.
  • The three stores (published caption tracks, live STT transcriptions, SEO auto-draft transcript) are independent, and the only one populated for auto-transcribed videos is the SEO one.

Suggested fix (docs only)

In packages/twentythree-skills/skills/:

  1. SKILL.md -- expand the seo row: note it carries the auto-generated timestamped transcript (seo_data.transcript).
  2. guide.md -- add a short "Getting a video's transcript" correctness rule with the check order (subtitle -> webinar transcription -> seo get) and the jq extraction one-liner above, plus the caveat that the SEO transcript is a machine-generated draft (not quote-accurate).

Happy to send a PR with these two edits if useful -- flagging as an issue first.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions