Operated by Sourcelane✓ verified
Generates paste-ready YouTube chapter timestamp blocks, structured chapter metadata, SEO-friendly video descriptions and optimized tag lists by analyzing a video's transcript. The connector detects topic-change points in transcripts to produce chapter start times and concise titles, builds a formatted timestamp block for descriptions, produces a 120–250 word SEO-focused description with the main keyword up front, appends chapters to the description, and generates a trimmed set of search tags that fit YouTube tag-length limits. It enforces YouTube chapter rules (starts at 0:00, minimum number of chapters, minimum chapter duration, chronological order, and proper m:ss or h:mm:ss formatting), preserves existing chapter data for comparison, supports transcript languages and optional translation of chapter titles, descriptions and tags, processes long-form transcripts in one pass for extended content, and returns video metadata plus per-item processing status and error information.
Verified Sep 28, 3:56 AM
$0.05
per video
Up to 20 per call. Only pay for results returned; failed calls are refunded.
| Window | Uptime | Success rate | p50 | p95 | Calls |
|---|---|---|---|---|---|
| 24h | — | — | — | — | 0 |
| 7d | — | — | — | — | 0 |
| 30d | — | — | — | — | 0 |
Call it through Sourcelane's gateway or MCP server. We run the connector, apply your agent's spend guardrails, and bill only the results returned.
Call it via Sourcelane
curl -X POST https://api.usesourcelane.com/v1/call \
-H "Authorization: Bearer sl_live_your_agent_key" \
-H "Content-Type: application/json" \
-d '{"listing":"youtube-chapters-generator","params":{"videoUrls":["https://www.youtube.com/watch?v=8jPQjjsBbIc"]},"maxResults":10}'Request params
| Field | Type | Required | Description |
|---|---|---|---|
videoUrls | array | required | YouTube video URLs or 11-character video IDs, one per line. Up to 50 per run. The video needs captions (manual or auto-generated). |
chapterStyle | string | optional | How chapter titles are written. Keyword-rich leads each title with the phrases viewers search for, which helps chapters appear as key moments in Google and YouTube search. |
minChapterSeconds | integer | optional | Shortest allowed chapter. YouTube requires at least 10 seconds per chapter; 30-60 seconds reads better for most videos. |
maxChapters | integer | optional | Upper limit on chapters per video. YouTube requires at least 3. The count scales with video length up to this limit. |
outputLanguage | string | optional | Language for chapter titles, description and tags, e.g. English, Spanish, German. Leave empty to match the video's language. |
generateDescription | boolean | optional | Also write a 120-250 word YouTube description with the main keyword in the first line, plus a paste-ready version with the chapters appended. |
generateTags | boolean | optional | Also suggest 12-20 YouTube tags, trimmed to fit YouTube's 500-character tag limit. |
transcriptLanguages | array | optional | Optional caption language codes to use, in order of preference (e.g. en, es). Leave empty to use the video's own spoken language automatically. |
model | string | optional | Language model that reads the transcript and writes the chapters. The default handles very long videos in one pass. |
Each result contains
| Field | Type | Description |
|---|---|---|
inputUrl | string | Input URL |
videoId | string | — |
url | string | URL |
title | string | Title |
channelName | string | Channel |
durationSeconds | integer | Duration (s) |
hasExistingChapters | boolean | Had chapters |
existingChapters | array | — |
chapters | array | — |
chaptersText | string | Chapters (paste-ready) |
seoDescription | string | SEO description |
descriptionWithChapters | string | — |
tags | array | Tags |
chapterStyle | string | — |
transcriptLanguage | string | Transcript language |
transcriptIsAutoGenerated | boolean | — |
transcriptTruncated | boolean | — |
model | string | — |
status | string | Status |
error | null | Error |
Pick your tool and connect in under a minute. Then just ask — for example: “Get the transcript of this video and turn it into a blog outline: <url>”
Connect Claude
Web, desktop and mobile. Paste one URL.
Adds the Sourcelane MCP server with your key as a header.
claude mcp add --transport http sourcelane https://api.usesourcelane.com/mcp \
--header "Authorization: Bearer sl_live_your_agent_key"Alternative to the connector URL: add to claude_desktop_config.json, then restart Claude.
{
"mcpServers": {
"sourcelane": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://api.usesourcelane.com/mcp",
"--header",
"Authorization:${AUTH_HEADER}"
],
"env": {
"AUTH_HEADER": "Bearer sl_live_your_agent_key"
}
}
}
}Add to ~/.cursor/mcp.json (or Windsurf's mcp_config.json).
{
"mcpServers": {
"sourcelane": {
"url": "https://api.usesourcelane.com/mcp",
"headers": {
"Authorization": "Bearer sl_live_your_agent_key"
}
}
}
}Save as .vscode/mcp.json. VS Code prompts for your key once.
{
"servers": {
"sourcelane": {
"type": "http",
"url": "https://api.usesourcelane.com/mcp",
"headers": {
"Authorization": "Bearer ${input:sourcelane-key}"
}
}
},
"inputs": [
{
"type": "promptString",
"id": "sourcelane-key",
"description": "Sourcelane agent key",
"password": true
}
]
}Create a GPT → Actions → Import from URL, then Authentication: API Key, Bearer.
https://usesourcelane.com/openapi.jsonOne POST. Pass maxResults to cap cost.
curl -X POST https://api.usesourcelane.com/v1/call \
-H "Authorization: Bearer sl_live_your_agent_key" \
-H "Content-Type: application/json" \
-d '{"listing":"youtube-chapters-generator","params":{"videoUrls":["https://www.youtube.com/watch?v=8jPQjjsBbIc"]},"maxResults":10}'Wrap the REST call as a tool, or point an MCP client at the endpoint.
import requests
res = requests.post(
"https://api.usesourcelane.com/v1/call",
headers={"Authorization": "Bearer sl_live_your_agent_key"},
json={
"listing": "youtube-chapters-generator",
"params": {"videoUrls":["https://www.youtube.com/watch?v=8jPQjjsBbIc"]},
"maxResults": 10,
},
timeout=300,
)
body = res.json()
print(body["receipt"]["chargedMicros"], "micro-USD for", body["receipt"]["results"], "results")
print(body["data"])—
0 reviews
Leave a review
Loading reviews…