How to Use YouTube Transcripts in ChatGPT (Custom GPT + API)
Updated 2026-06-03
ChatGPT can't run a local MCP server the way Claude, Cursor, and Windsurf do — it runs in OpenAI's cloud, not on your machine. But you can still give it YouTube transcripts by wiring Scribefy's REST API into a Custom GPT Action. Here's how.
MCP vs. Custom GPT Actions (the honest version)
The Scribefy MCP server (scribefy-mcp) is a local npx program — ideal for desktop assistants that speak stdio MCP. ChatGPT's extension point is different: a Custom GPT calls Actions, which are plain HTTPS endpoints described by an OpenAPI schema. Scribefy's MCP server and its REST API are the same engine underneath, so you get the same transcripts — just over HTTP instead of stdio.
(On Claude, Cursor, or Windsurf, the MCP route is simpler — see the overview for all assistants.)
What you'll need
- A Scribefy API key from the dashboard (the API + MCP plan).
- ChatGPT on a plan that lets you create Custom GPTs.
Step 1 — Create a Custom GPT
In ChatGPT, go to Explore GPTs → Create, give it a name ("YouTube Researcher"), and in Instructions describe its job, e.g.:
When the user gives a YouTube URL, call the
extractTranscriptaction and answer from the returned transcript, citing timestamps. If the user asks you to find videos, callsearchVideosfirst.
Step 2 — Add the Action
Open Configure → Actions → Create new action. Set Authentication to API Key, type Bearer, and paste your sk_live_… key. Then paste this OpenAPI schema (keep only the endpoints you want):
openapi: 3.1.0
info:
title: Scribefy
version: "1.0.0"
servers:
- url: https://api.scribefy.app
paths:
/api/extract:
post:
operationId: extractTranscript
summary: Extract a YouTube transcript with timestamps
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [url]
properties:
url:
type: string
description: Full YouTube URL
lang:
type: string
description: BCP-47 language code (e.g. en, es)
responses:
"200":
description: Transcript
/api/search:
post:
operationId: searchVideos
summary: Search YouTube videos
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [query]
properties:
query:
type: string
limit:
type: integer
responses:
"200":
description: Results
ChatGPT attaches the Authorization: Bearer … header automatically once you've set the API-key auth, so your key lives in the GPT's settings — not in the prompt.
Step 3 — Test it
Save, then ask your GPT: "Summarize this video with timestamps: youtu.be/…" It calls extractTranscript, gets the transcript, and answers. Add the /api/info (metadata) and /api/related (related videos) endpoints to the schema if you want those too.
Things to keep in mind
- Your key is in the GPT. Actions store the key server-side in the GPT's config. Don't paste it into the chat, and don't share the GPT's raw configuration.
- Sharing means sharing your credits. If you publish the GPT, anyone who uses it calls your Action with your key — and your credits. Keep it private or link-only unless you mean to foot the bill. (Every endpoint is auth-gated, so without the key it does nothing — but the GPT carries your key.)
- Cost. Only
extractTranscriptspends credits; cached videos are free. See pricing.
Frequently asked questions
Can ChatGPT use the MCP server directly?
Not the local stdio one. ChatGPT's integration model is Custom GPT Actions over HTTP. Desktop assistants like Claude, Cursor, and Windsurf use the MCP server.
Do I really need the OpenAPI schema?
Yes — Actions are defined by it. The snippet above is enough to start; it's the same REST API covered in the developer guide.
What about videos with no captions?
Scribefy reads existing captions (human or auto). For the caption-less case, see transcripts without captions.
Want the full API surface? See the developer guide, grab a key from the dashboard, and give your Custom GPT YouTube as a source.