ScriptHaul
Free YouTube transcripts, no API key: videos, channel lists, latest uploads, bulk download links.
Sollte ich dies verwenden
Qualität und Sicherheit
Befunde (2)
- HIGH
- MEDIUMin get_transcript
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"transcripts": {
"url": "https://scripthaul.com/mcp"
}
}
}Remote-Endpunkte
https://scripthaul.com/mcpstreamable-httpWas es kann
Tool-Inventar
Tools (4)
🟢get_transcript(video_url, language, format)
Fetch the transcript of a single YouTube video by URL or 11-character video ID. Serves the permanent cache instantly when available and otherwise fetches from YouTube (uncached fetches are limited per IP per day). Formats: clean text, timestamped, both, srt, vtt, md, json. Costs 0 credits. Example prompt: "Get the transcript of https://youtu.be/jNQXAC9IVRw."
Eingabe-Schema
{
"type": "object",
"properties": {
"video_url": {
"type": "string",
"description": "YouTube video URL (watch, youtu.be, shorts, embed, live) or a bare 11-character video ID."
},
"language": {
"type": "string",
"description": "Preferred caption language code such as \"en\" or \"pt-BR\". Optional; defaults to English with fallback to whatever track exists."
},
"format": {
"type": "string",
"enum": [
"clean",
"timestamped",
"both",
"srt",
"vtt",
"md",
"json"
],
"description": "Output format. Default \"clean\" (plain text). \"timestamped\" prefixes each line with a timestamp; srt/vtt are subtitle files; json is structured."
}
},
"required": [
"video_url"
]
}Ausgabe-Schema
{
"type": "object",
"properties": {
"video_id": {
"type": "string",
"description": "The 11-character YouTube video ID."
},
"title": {
"type": "string",
"description": "Video title when known."
},
"channel": {
"type": "string",
"description": "Channel name when known."
},
"language": {
"type": "string",
"description": "Language of the DELIVERED track. May differ from the requested language when YouTube refuses on-the-fly translation; the text header says so when it happens."
},
"kind": {
"type": "string",
"enum": [
"manual",
"asr"
],
"description": "manual = creator captions, asr = auto-generated."
},
"format": {
"type": "string",
"description": "The output format that was rendered."
},
"characters": {
"type": "integer",
"description": "Length of the rendered transcript text."
}
},
"required": [
"video_id",
"language",
"kind",
"format",
"characters"
],
"description": "Transcript metadata. The transcript text itself is delivered in the text content block, not duplicated here."
}🟢list_videos(url, limit)
List the videos of a YouTube channel or playlist: date, video ID, and title for each. Use this to answer questions about a channel — pick the relevant videos by title, then call get_transcript for each one. Listings are cached for a few hours; a fresh enumeration counts against the same daily allowance as uncached fetches. Costs 0 credits. Example prompt: "List the videos in https://www.youtube.com/@TED."
Eingabe-Schema
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "YouTube channel or playlist URL (also accepts @handles)."
},
"limit": {
"type": "integer",
"description": "Maximum videos to list, newest first for channels. Default 100, maximum 200."
}
},
"required": [
"url"
]
}Ausgabe-Schema
{
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "Channel or playlist title when known."
},
"type": {
"type": "string",
"enum": [
"channel",
"playlist"
]
},
"video_count": {
"type": "integer",
"description": "Total videos in the listing snapshot."
},
"shown": {
"type": "integer",
"description": "How many are included below (bounded by limit)."
},
"truncated": {
"type": "boolean",
"description": "True when the source has more videos than one enumeration returns (500)."
},
"videos": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"published_at": {
"type": "string",
"description": "ISO date when known."
}
},
"required": [
"id"
]
}
}
},
"required": [
"type",
"video_count",
"shown",
"videos"
]
}🟢get_bulk_download_link(url)
For a YouTube channel or playlist URL, returns a prefilled scripthaul.com link where the user can download every transcript as a ZIP for free. Bulk jobs cannot run over this keyless MCP server; they need the website. Costs 0 credits. Example prompt: "Give me a download link for every transcript in https://www.youtube.com/@TED."
Eingabe-Schema
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "YouTube channel or playlist URL (also accepts @handles)."
}
},
"required": [
"url"
]
}Ausgabe-Schema
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Prefilled scripthaul.com link that starts the bulk download."
},
"type": {
"type": "string",
"enum": [
"channel",
"playlist"
],
"description": "What the input resolved to."
}
},
"required": [
"url",
"type"
]
}🟢get_latest_videos(channel, playlist)
Read up to the newest 15 public RSS entries from exactly one channel or playlist, cached for ten minutes. Costs 0 credits and no cold-fetch allowance. Separate allowance: 30 requests per IP per day shared across channels and playlists, including cached reads; resets at midnight UTC. Use a UC channel ID, an already-resolved channel alias, or a public playlist ID/URL; an unknown handle must first be resolved on the keyed API. This is a recent window, not a complete inventory. Example prompt: "What did channel UCAuUUnT6oDeKwE6v1NGQxug upload recently?"
Eingabe-Schema
{
"type": "object",
"properties": {
"channel": {
"type": "string",
"minLength": 1,
"maxLength": 300,
"description": "UC channel ID, a /channel/UC… URL, or an already-resolved alias."
},
"playlist": {
"type": "string",
"minLength": 1,
"maxLength": 300,
"description": "Public YouTube playlist ID or URL."
}
},
"oneOf": [
{
"required": [
"channel"
]
},
{
"required": [
"playlist"
]
}
],
"additionalProperties": false
}Ausgabe-Schema
{
"type": "object",
"properties": {
"ok": {
"const": true
},
"videos": {
"type": "array",
"maxItems": 15,
"items": {
"type": "object",
"properties": {
"video_id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{11}$"
},
"title": {
"type": "string"
},
"published_at": {
"type": "string",
"format": "date-time"
},
"url": {
"type": "string",
"format": "uri"
},
"cached": {
"type": "boolean"
}
},
"required": [
"video_id",
"title",
"published_at",
"url",
"cached"
]
}
}
},
"required": [
"ok",
"videos"
]
}Community
Nachweis