BulkTranscripts logo BulkTranscripts

Workflows

What people build with YouTube transcripts

Ten concrete recipes, each with a copy-paste agent prompt and the equivalent API calls. Study notes from a course, competitor briefs, RAG corpora, show notes, and more.

Which transcript workflow should I choose?

Start with the result you need: notes for a course, a searchable archive for research, or structured text for an application. For a file you can upload to an AI tool, use the web app to export a channel or playlist as one combined document. For repeated or automated tasks, follow the MCP or API recipes below.

What do these workflows include?

BulkTranscripts retrieves available captions and preserves source links. Your AI assistant or application performs the summarization, analysis, or indexing. Caption text does not capture equations or diagrams shown only on screen; check the original video when those details matter. Review generated answers against the linked sources.

What you’ll need

An MCP-capable assistant (Claude, ChatGPT, Cursor) connected to https://bulktranscripts.co/mcp (one sign-in includes 30 free credits), or a license key for the REST API. Transcripts already in your library are re-read free, so iterating on the same videos costs nothing after the first pass.

Workflow · Education

YouTube playlist → study notes

A 20-lecture course is ten hours of video and about ninety minutes of reading. This workflow turns the playlist into structured notes, one set per lecture, in the order the course intended.

  1. Give your assistant the playlist URL.
  2. It lists the playlist with get_playlist_videos, order preserved, so lesson 3 stays lesson 3.
  3. It fetches transcripts in batches with get_transcripts (up to 20 per call).
  4. It writes one notes block per video: summary, key concepts, definitions, and open questions.

Why order matters here

Course playlists build on themselves: the definition in lecture 2 is assumed by lecture 9. BulkTranscripts returns playlist videos in playlist order, so notes generated from it read as a course, not a pile. Each transcript carries the video title and link, so every note traces back to its lecture.

Agent prompt: paste into Claude, ChatGPT, or any assistant connected to the BulkTranscripts MCP server:

Get every transcript from this playlist, in order: [PLAYLIST URL]
For each video write: a 5-bullet summary, key terms with one-line definitions,
and one exam-style question. Format as Markdown with the video title and link
as the heading. Keep each video's notes under 250 words.

Or script it against the REST API:

# 1. list the playlist (1 credit)
curl "https://bulktranscripts.co/api/v1/playlist/videos?playlist=PLAYLIST_ID"
# 2. fetch each transcript (1 credit first time, repeats free)
curl "https://bulktranscripts.co/api/v1/transcript?video=VIDEO_ID&segments=0"

How long a playlist can this handle?

get_playlist_videos lists up to 1,000 videos; the assistant then batches transcripts 20 at a time. A 30-lecture course is a few minutes of work.

What about lectures without captions?

They are reported and skipped without failing the batch, and nothing is charged for them.

Workflow · Education

Lectures → flashcards & quizzes

Rewatching lectures is the least effective revision there is. Testing yourself on what was actually taught, generated from the transcript, is the most.

  1. Fetch transcripts for the lecture (or the whole playlist, in order).
  2. The assistant extracts testable facts, definitions, and derivations.
  3. It writes Q&A pairs: cloze deletions for definitions, open questions for concepts.
  4. Export as CSV for Anki, or keep it in chat as an interactive quiz with timestamped answers.

Grounded questions only

Flashcards invented by a model from its general knowledge test the model’s syllabus, not your course’s. Cards generated from the lecture transcript test exactly what your lecturer said, and each answer can cite the minute it was explained, so a failed card links straight to the remedial two minutes of video.

Agent prompt: paste into Claude, ChatGPT, or any assistant connected to the BulkTranscripts MCP server:

Get the transcripts for this lecture playlist in order: [PLAYLIST URL]
For each lecture, write 8 flashcards: 4 cloze-deletion cards for key
definitions, 4 open questions on the concepts. Include the answer and the
timestamp where it was taught. Output as CSV: front,back,source_link.

Or script it against the REST API:

curl "https://bulktranscripts.co/api/v1/playlist/videos?playlist=COURSE_PLAYLIST_ID"
curl "https://bulktranscripts.co/api/v1/transcript?video=LECTURE_VIDEO_ID"

Can I import the output into Anki?

Yes. Ask for CSV with front,back columns and import it directly; the timestamped source link fits on the back of the card.

Half my course has no captions. What happens?

Videos without any caption track are reported and skipped without charge; cards are generated from the lectures that have them.

Workflow · Marketing

Competitor channels → weekly brief

Watching three competitors’ channels is a part-time job. Checking what they published and reading only what matters is one scheduled prompt.

  1. List the competitor channels you care about.
  2. The assistant checks each with get_latest_videos. It's always free, so the check itself costs nothing.
  3. It fetches transcripts only for videos matching your topics.
  4. It writes a brief: what each competitor said, notable claims quoted, links included.

The trick: the check is free

get_latest_videos reads the channel’s RSS feed and never charges a credit. That makes polling economical: a daily or weekly run only spends credits when a competitor actually published something relevant. Most runs cost zero.

Agent prompt: paste into Claude, ChatGPT, or any assistant connected to the BulkTranscripts MCP server:

Check what these channels uploaded in the last 7 days:
@competitor1, @competitor2, @competitor3
For anything about [YOUR MARKET], read the transcript and summarize their
positioning in 3 bullets with one direct quote each. If nothing relevant
was published, just say so.

Or script it against the REST API:

# free: poll as often as you like
curl "https://bulktranscripts.co/api/v1/channel/latest?channel=@competitor1"
# 1 credit, only when a video is worth reading
curl "https://bulktranscripts.co/api/v1/transcript?video=NEW_VIDEO_ID&segments=0"

Can this run on a schedule?

Yes. Use your assistant's scheduled tasks, a cron job against the REST API, or the n8n pattern in our n8n guide. The free latest-uploads check is designed for exactly this.

How current is the upload feed?

It reads YouTube's own RSS feed, typically minutes behind a new upload, returning the latest 15 videos with publish timestamps.

Workflow · Developers

Playlist → RAG corpus

Video knowledge bases fail because nobody re-watches videos. Chunked transcripts with timestamps make a playlist searchable, and citable back to the exact moment.

  1. List the playlist once and store the video metadata.
  2. Fetch each transcript with segments included. Every segment has text, start, and duration.
  3. Chunk on segment boundaries (≈30–60s windows work well) and keep video_id + start as metadata.
  4. Embed the chunks; answers can now cite video + timestamp, linkable as watch?v=ID&t=START.

Segments are your chunker

The transcript endpoint returns per-line segments with start times: natural semantic boundaries that beat fixed-size character windows for spoken content. Keeping video_id and start beside each chunk means every retrieval result becomes a clickable citation into the video.

Or script it against the REST API:

# list the playlist (1 credit)
curl "https://bulktranscripts.co/api/v1/playlist/videos?playlist=PLAYLIST_ID" | jq -r '.videos[].id' \
| while read id; do
    # full transcript with timestamped segments (1 credit first time)
    curl "https://bulktranscripts.co/api/v1/transcript?video=$id" > "corpus/$id.json"
  done

Agent prompt: paste into Claude, ChatGPT, or any assistant connected to the BulkTranscripts MCP server:

Fetch every transcript in this playlist with timestamps: [PLAYLIST URL]
Chunk each one into ~45-second windows on segment boundaries and output
JSONL: {text, video_id, video_title, start_seconds, url_with_timestamp}.

Is re-running the ingestion expensive?

No. Transcripts already in your library are free on repeat reads, so re-chunking with different window sizes costs nothing after the first pass.

What formats can I export for offline processing?

JSON with segments from the API, or SRT/VTT/CSV exports from the web app if you prefer file-based pipelines.

Workflow · Content

YouTube video → blog post

The difference between “write a post about this video” and a post built from the transcript is accuracy: real quotes, the speaker’s actual argument, nothing invented.

  1. Fetch the video's transcript.
  2. The assistant extracts the argument structure and the 3–5 most quotable lines.
  3. It drafts the post in your voice, quoting the speaker verbatim where it counts.
  4. You edit. The facts and quotes are already right, so editing is style, not verification.

Why transcript-first beats summary-first

Models asked to “write about” a video they have not read will confidently invent quotes. Feeding the actual transcript inverts the failure mode: the raw material is verbatim, so the draft’s claims check out and direct quotes are real, which matters the moment your post names someone.

Agent prompt: paste into Claude, ChatGPT, or any assistant connected to the BulkTranscripts MCP server:

Get the transcript of [VIDEO URL] and draft a 900-word blog post from it.
Structure: hook, the speaker's core argument in my words, 3 direct quotes
(verbatim, attributed), one counterpoint, takeaway. My audience: [WHO].
My tone: [STYLE]. End with a link to the original video.

Or script it against the REST API:

curl "https://bulktranscripts.co/api/v1/transcript?video=VIDEO_ID&segments=0"

Does one post cost one credit?

One credit the first time that video enters your library; every redraft after that reads it free.

Can I do this for a whole channel's archive?

Yes. List the channel with get_channel_videos, then run this workflow per video. The bulk workspace can also export everything at once.

Workflow · Content

One video → a week of posts

The video already contains the hooks: the sharpest lines someone said out loud. The transcript is where you find them verbatim.

  1. Fetch the transcript of the video.
  2. The assistant pulls the strongest verbatim lines, the ones that stop a scroll.
  3. It drafts an X thread and a LinkedIn post, each built around a real quote.
  4. Every post links back to the video, timestamped to the quoted moment.

Verbatim is the edge

Generic repurposing tools summarize; summaries are forgettable. The lines that work on social are the ones actually said: specific, voiced, quotable. Working from the transcript means every hook is real and every attribution survives a community-notes check.

Agent prompt: paste into Claude, ChatGPT, or any assistant connected to the BulkTranscripts MCP server:

Get the transcript of [VIDEO URL]. Find the 5 most quotable verbatim lines.
Write: (1) an X thread with a hook from the best quote, 6 posts, each under 260
chars, ending with the timestamped video link; (2) a LinkedIn post with one
quote as the opener, 150 words, my take added: [YOUR ANGLE].

Or script it against the REST API:

curl "https://bulktranscripts.co/api/v1/transcript?video=VIDEO_ID"

Can I run this across a whole channel weekly?

Pair it with the new-upload alerts workflow: the free check finds what's new, and only fresh videos spend a credit before drafting.

Do repeat drafts cost extra?

No. Once a video is in your library, every re-read while you iterate on angles is free.

Workflow · Automation

New uploads → summarized alerts

“Did they post this week?” should not require opening YouTube. The check is free; credits are spent only on videos that are actually new.

  1. A scheduled job calls the free latest-uploads endpoint for each channel.
  2. It compares publish timestamps against the last run's cursor.
  3. New videos get their transcripts fetched. That's the only credited step.
  4. Summaries land wherever you work: Slack, email, Notion, or a daily note.

The cost structure is the feature

Most monitoring setups are expensive because the poll itself costs money. Here the poll is free RSS (get_latest_videos never charges), so a check every hour across ten channels costs exactly zero until something new appears. A quiet week is a free week.

Or script it against the REST API:

# cron-friendly: free check, then fetch only what's new
curl "https://bulktranscripts.co/api/v1/channel/latest?channel=@target" \
  | jq -r '.results[] | select(.published > "'$LAST_RUN'") | .id' \
  | while read id; do curl "https://bulktranscripts.co/api/v1/transcript?video=$id&segments=0"; done

Agent prompt: paste into Claude, ChatGPT, or any assistant connected to the BulkTranscripts MCP server:

Every morning, check @channel1 and @channel2 for uploads newer than 24 hours.
If there are any, fetch the transcripts and give me a 3-bullet summary per
video with a link. If nothing is new, reply with just: 'quiet day'.

Building this in n8n or Make instead? The exact node-by-node setup is in the n8n guide and Make guide.

How many channels can I monitor?

As many as you like. The check is free per channel. Rate limits are per-minute, so space a very large list across the hour.

Does the digest cost credits on quiet days?

No. Credits are only spent when a new video's transcript is actually fetched.

Workflow · Research

Channel archive → cited quotes

“He said it in some video” is not a citation. This workflow finds where, quotes it verbatim, and links the exact second.

  1. Search inside the channel with search_channel for the topic.
  2. Fetch transcripts for the matching videos, with timestamps on.
  3. The assistant extracts verbatim quotes with their start times.
  4. Each citation renders as quote + video link + &t= timestamp, checkable by anyone.

Verifiable beats plausible

Timestamped segments turn a claim into a checkable reference: youtube.com/watch?v=ID&t=214s drops the reader at the moment the words were said. For journalism, academic work, or just winning an argument, that is the difference between a quote and a rumor.

Agent prompt: paste into Claude, ChatGPT, or any assistant connected to the BulkTranscripts MCP server:

Search @channel for everything about [TOPIC]. Read the top 3 matching
transcripts with timestamps and give me every direct statement they made
about it. Verbatim quotes only, each with the video title and a link to
the exact timestamp. Note where statements from different videos conflict.

Or script it against the REST API:

# search inside one channel (1 credit)
curl "https://bulktranscripts.co/api/v1/channel/search?channel=@handle&q=TOPIC&limit=5"
# transcript with per-line timestamps (1 credit first time)
curl "https://bulktranscripts.co/api/v1/transcript?video=VIDEO_ID"

How accurate are the timestamps?

They come from the video's own caption track, the same timing YouTube uses to display captions, accurate to the second.

Can I search across many channels at once?

Use search_youtube for a keyword sweep across all of YouTube, then search_channel to go deep on specific creators.

Workflow · Creators

Episode → show notes & chapters

Show notes written from memory miss half the episode. Notes written from the transcript catch every name, number, and quotable moment, with timestamps that become YouTube chapters.

  1. Fetch the episode transcript with timestamps.
  2. The assistant segments the conversation into topics and marks where each begins.
  3. It drafts show notes: description, chapter list with timestamps, guest quotes, resources mentioned.
  4. Paste the chapter list into your YouTube description and the timestamps become clickable chapters.

Chapters for free

YouTube turns a timestamp list in the description into chapter markers automatically. Since transcript segments carry real start times, the chapter list falls out of this workflow as a side effect. No more scrubbing through your own episode hunting for topic changes.

Agent prompt: paste into Claude, ChatGPT, or any assistant connected to the BulkTranscripts MCP server:

Get the transcript of my episode with timestamps: [VIDEO URL]
Produce: (1) a 2-paragraph episode description, (2) a YouTube chapter list
(MM:SS Topic) at every topic change, (3) the 5 best guest quotes with
timestamps, (4) every book/tool/person mentioned as a resources list.

Or script it against the REST API:

curl "https://bulktranscripts.co/api/v1/transcript?video=EPISODE_VIDEO_ID"

Does this work for long episodes?

Yes. Caption tracks exist for multi-hour videos, and the segment list keeps the assistant oriented across the whole runtime.

Can I batch my back catalog?

List your channel with get_channel_videos and run the workflow per episode; already-fetched episodes re-read free while you refine the prompt.

Workflow · Teams

Whole channel → knowledge base

The answer exists, in minute 34 of a video nobody will rewatch. As text, the same archive is searchable in seconds and quotable with links.

  1. List the channel's videos (up to 1,000) with get_channel_videos.
  2. Batch-fetch transcripts, or run the whole channel through the bulk workspace in one job.
  3. Load the combined export into Notion, NotebookLM, or your internal search.
  4. New uploads get appended via the free latest-uploads check, so the base stays current.

One job, not one hundred

For archives this size the bulk workspace is usually the faster path: paste the channel URL, get every available transcript as individual files or one combined, AI-ready document with per-video headers. The API path below does the same thing scriptably.

Or script it against the REST API:

# the whole archive, scripted
curl "https://bulktranscripts.co/api/v1/channel/videos?channel=@yourchannel&limit=1000" \
  | jq -r '.videos[].id' \
  | while read id; do curl "https://bulktranscripts.co/api/v1/transcript?video=$id&format=md" \
      -o "kb/$id.md"; done

Agent prompt: paste into Claude, ChatGPT, or any assistant connected to the BulkTranscripts MCP server:

List every video on @yourchannel about [PRODUCT AREA], fetch those
transcripts, and organize them into a knowledge base outline: group by
topic, note which video covers what, and flag topics covered by no video.

What does a 200-video channel cost?

About 200 credits on first ingestion (one per new transcript). The $4.99 starter pack covers it. Keeping it current afterwards costs only what is newly published.

Which export should I feed to AI tools?

The combined AI-ready export (one file, every transcript, per-video headers with titles and links) was designed for NotebookLM, Claude Projects, and custom GPTs.

Bring your own idea

Every workflow here is built from ten tools: transcripts (single or batch), YouTube search, channel search, channel/playlist listings, free upload tracking, and server-side bulk jobs for whole channels. Anything that starts with "what was said in these videos" is buildable. The docs cover every call.

Updated