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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions