Home → Blog → Video transcripts on your site: why SEO needs them
Video transcripts on your site: why SEO needs them
A search engine does not watch video. It reads the title, the description and the text on the page — and if that is empty, your video never competes on content. A transcript turns an hour-long webinar into several thousand words the page can actually be found by.
What the text version buys you
- Long-tail queries. An hour of conversation contains dozens of phrasings you would never have written into a description by hand.
- Time on page. Readers who cannot watch stay and read instead of bouncing back to the results.
- Accessibility. A text version serves people with hearing loss and everyone scrolling with the sound off.
- Reuse. A newsletter, a post and an article all come out of the same transcript with no extra recording.
How to present a transcript
A wall of raw text works poorly for readers and for search engines alike. The format that works is:
- A short summary up front: three or four sentences on what the video covers.
- The transcript broken into thematic blocks with subheadings.
- Timestamps at the start of each block, linking into the video.
- Key quotes pulled out separately — those are what people cite and link to.
Do not hide the text behind a toggle or an invisible block: hidden content is valued less and sometimes reads as manipulation.
Page markup
A video page benefits from VideoObject markup, which tells the engine the duration, the thumbnail and the content. The transcript field carries the full text version.
{
"@context": "https://schema.org",
"@type": "VideoObject",
"name": "Connecting a transcription API",
"uploadDate": "2026-08-20",
"duration": "PT42M",
"transcript": "Full transcript text…"
}
Markup does not replace visible text — it describes it. The transcript must be on the page for human eyes as well.
Getting text with timestamps
from openai import OpenAI
client = OpenAI(base_url="https://voicesscribe.com/v1", api_key="your key")
with open("webinar.ogg", "rb") as f:
r = client.audio.transcriptions.create(
model="whisper-1", file=f, response_format="verbose_json")
for seg in r.segments:
m, s = divmod(int(seg["start"]), 60)
print(f'<a href="#t={int(seg["start"])}">{m:02d}:{s:02d}</a> {seg["text"].strip()}')
Those deep links help the reader and the crawler equally: they expose the structure of the recording.
Try it on your own recordings. Sign-up takes a minute, and the free minutes are enough to judge the quality.
Get a free API keyFrequently asked questions
Will a transcript be treated as duplicate content?
No, as long as the text lives on one page and is marked up there. Duplication means the same text on several URLs, not a video plus its transcript.
Do I need to edit the transcript?
Lightly: drop filler words, add paragraphs and subheadings. Rewriting is unnecessary — spoken language reads fine.
How long does a webinar take to transcribe?
An hour of audio comes back in a couple of minutes, so the text version can go live together with the video.
Do platform captions replace an on-site transcript?
They help viewers, but traffic to your own site comes from text published on your own page.
Related reading
- How to transcribe a YouTube video to text — Three ways to get the text of a YouTube video: the built-in captions, downloading the audio track, and an API for bulk work — with code and the limits of each.
- How to add subtitles to short vertical videos quickly — Get captions for vertical videos: transcribe with word timing, rebuild short caption lines and burn them into the frame with a single ffmpeg command.
- How to turn a lecture or webinar into usable notes — How to transcribe a lecture or webinar recording and build notes from it: audio prep, timestamps, splitting long files and code you can copy.