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/:
SKILL.md -- expand the seo row: note it carries the auto-generated timestamped transcript (seo_data.transcript).
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.
Summary
An agent (Claude Code) using the
twentythreeskill 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 inseo 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: falsewebinar transcription list <webinar-id>->0 transcriptionsvideo 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:
Path:
data.data.seo_data.transcript[], each item{text[], timestamp_begin, timestamp_end}, ordered by start time, flaggedseo_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.mdresource index describesseoas just "SEO metadata management" -- zero hint it embeds the full timestamped transcript.subtitle/webinar transcriptionand stops when both are empty.Suggested fix (docs only)
In
packages/twentythree-skills/skills/:SKILL.md-- expand theseorow: note it carries the auto-generated timestamped transcript (seo_data.transcript).guide.md-- add a short "Getting a video's transcript" correctness rule with the check order (subtitle -> webinar transcription ->seo get) and thejqextraction 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.