Turn YouTube tutorials into structured steps and topics

A tutorial walks through steps in order and names the tools as it goes. Ask for each step, what it does and the tools mentioned, and get an outline you can search, quiz on or link to.

Study guides and summaries built from course playlists.
Learning platforms indexing video lessons by topic.
Developer-tool teams tracking how their product is taught.
The schema

Describe the fields once

explanation is a string column, so it is written in the model's own words, while topic stays word for word.

schema
POST /v1
{
"multiple": true,
"columns": [
{
"name": "topic",
"type": "verbatim-string",
"description": "Short name of each step or topic the instructor covers, in the order covered"
},
{
"name": "explanation",
"type": "string",
"description": "What the instructor says this step does or why it matters, in one or two sentences"
},
{
"name": "tools",
"type": "string",
"multiple": true,
"description": "Each tool, library, command or setting the instructor names for this step"
}
]
}
rows
illustrative output
{
"results": [
{
"topic": "Install the dependencies",
"explanation": "Adds the web framework and the database driver the rest of the tutorial uses.",
"tools": [
"npm",
"Express",
"pg"
]
}
]
}

The output above shows the shape a video returns, not a recorded result. Types are enforced: numbers come back as numbers, list columns as arrays.

Good to know

What to expect

What it costs

A 12-minute video is 120 credits: 10 per started minute, however many rows come back. Videos that fail, such as those without captions, are never charged. See pricing.

  • TubeExtract reads the video’s existing captions, manual or auto-generated. It does not listen to audio or read the screen, and a video with no captions fails as no_captions.
  • Code that is only shown on screen is not read. If the instructor never says the command, it will not be in the rows.
  • A long course that lists dozens of steps will not yield every one; expect good coverage of what is explained at length.
  • Send a whole playlist in one call: up to 200 videos, one job id to track.
Run it

One call, up to 200 videos

Send the schema with your list of videos, then read the job once every video has finished.

curl https://api.tubeextract.dev/v1 \
-H "X-API-Key: $TUBEEXTRACT_KEY" \
-H "Content-Type: application/json" \
-d '{
"videos": [
"https://youtube.com/watch?v=…"
],
"schema": {
"multiple": true,
"columns": [
{
"name": "topic",
"type": "verbatim-string",
"description": "Short name of each step or topic the instructor covers, in the order covered"
},
{
"name": "explanation",
"type": "string",
"description": "What the instructor says this step does or why it matters, in one or two sentences"
},
{
"name": "tools",
"type": "string",
"multiple": true,
"description": "Each tool, library, command or setting the instructor names for this step"
}
]
}
}'
More use cases

Try it on your own videos

New accounts start with 1,000 credits, about 100 minutes of video. Paste the schema above, point it at a video, and check the rows.