ScriptHaul

Free YouTube transcripts, no API key: videos, channel lists, latest uploads, bulk download links.

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
100%
Integridad del esquema
97%
Calidad de los nombres
100%
Riesgo de envenenamiento
80%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Hallazgos (2)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool description contains URL to non-standard domainen get_transcript

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~1,416Tokens (definiciones de herramientas)
~2.7 KBTamaño de respuesta típico
Impacto moderado en la atención (1.11% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

{
  "mcpServers": {
    "transcripts": {
      "url": "https://scripthaul.com/mcp"
    }
  }
}

Puntos de conexión remotos

https://scripthaul.com/mcpstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (4)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢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."

Esquema de entrada

{
  "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"
  ]
}

Esquema de salida

{
  "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."

Esquema de entrada

{
  "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"
  ]
}

Esquema de salida

{
  "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."

Esquema de entrada

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "YouTube channel or playlist URL (also accepts @handles)."
    }
  },
  "required": [
    "url"
  ]
}

Esquema de salida

{
  "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?"

Esquema de entrada

{
  "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
}

Esquema de salida

{
  "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"
  ]
}

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada4 herramientas
verificadoversión no registrada4 herramientas