Skip to main content
Glama
732,119 tools. Updated 2026-11-01 13:35

"How to find or generate YouTube video transcripts" matching MCP tools:

  • YouTube Shorts & Transcript Scraper: Trigger: Call this tool when an agent needs video transcripts, metadata, view counts, and audio info from short-form YouTube videos. Input: 'query' (search string), 'limit' (integer, default 10). Output: structured video details and full spoken transcripts. (x402 M2M Cost: 0.008 USDC on Base)
    ConnectorNo auth
  • Upload a video FILE (MP4 in the ADSAP creative library) to YouTube for use in Google Ads video slots, and get back a YouTube video asset. Use this when the user has a video file but NO YouTube channel — the video goes to a Google-managed 'ad storage' YouTube channel owned by the ad account, stays UNLISTED, and never appears on any public channel. If the user already has the video on YouTube, skip this tool and pass the YouTube id/asset directly to the campaign tool instead. TWO STEPS, always: (1) action 'upload' with the storage_path of the file — returns upload_resource_name immediately; (2) action 'status' with that upload_resource_name — YouTube processing usually takes a few MINUTES, so poll every ~30s; while it is still processing you get state UPLOADED and still_processing: true, and once it reaches PROCESSED the tool mints the video asset automatically and returns asset_id + video_id. Feed the result into a video slot: adsap_google_create_demand_gen_campaign uses the VIDEO ID (ad.youtube_video_ids), while adsap_google_create_display_campaign (youtube_video_asset_ids) and adsap_google_create_app_campaign (video_asset_ids) use the ASSET ID. The video title CANNOT be changed after upload (Google marks it immutable) — set it correctly on the upload call. Max 256 MB. ad_account_id is the bare 10-digit customer ID. For Meta video uploads use adsap_upload_creative instead.
    ConnectorAPI key
  • Get transcripts for a YouTube channel's most recent videos (newest first) as timestamped markdown, one section per video. Use for research across a creator's recent output; for one known video use get_transcript. Read-only; requires an API key. Charges 1 credit per video that returns a transcript, including repeat calls; videos without captions are skipped free. A 10-video call typically costs up to 10 credits, so start with a small limit. Rate limit: 5 requests per 10 seconds.
    ConnectorNo auth
  • Get transcripts for the videos in a YouTube playlist (in playlist order) as timestamped markdown, one section per video. Use for working through a course, series, or curated list; for one known video use get_transcript. Read-only; requires an API key. Charges 1 credit per video that returns a transcript, including repeat calls; videos without captions are skipped free. A 10-video call typically costs up to 10 credits, so start with a small limit. Rate limit: 5 requests per 10 seconds.
    ConnectorNo auth
  • Get transcripts for a YouTube channel's most recent videos (newest first) as timestamped markdown, one section per video. Use for research across a creator's recent output; for one known video use get_transcript. Read-only; requires an API key. Charges 1 credit per video that returns a transcript, including repeat calls; videos without captions are skipped free. A 10-video call typically costs up to 10 credits, so start with a small limit. Rate limit: 5 requests per 10 seconds.
    ConnectorNo auth
  • Get transcripts for the videos in a YouTube playlist (in playlist order) as timestamped markdown, one section per video. Use for working through a course, series, or curated list; for one known video use get_transcript. Read-only; requires an API key. Charges 1 credit per video that returns a transcript, including repeat calls; videos without captions are skipped free. A 10-video call typically costs up to 10 credits, so start with a small limit. Rate limit: 5 requests per 10 seconds.
    ConnectorNo auth

Matching MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables ChatGPT conversations to fetch available captions and metadata from video IDs, URLs, creator uploads, playlists, chapters, and time ranges, returning cleaned Markdown or paginated cues. Cached snapshots, isolated per-video failures, and an outbound-only acquisition worker keep retrieval self-hosted without paid APIs or cookies.
    MIT

Matching MCP Connectors

  • Video how-to search for AI agents: 2,000+ video skills, tutorials and FFmpeg recipes. No key.

  • Transcripts of YouTube videos, playlists and channels with timestamps; SRT or WebVTT too.

  • Get the transcript (subtitles) of a YouTube video. Accepts a video id or any YouTube URL. Set video_metadata=true to get the title, channel and duration in the SAME call — do not call get_video_info first, that is a second billed call for data this one already returns. format=text returns plain readable text (default, cheapest to read); format=json returns timed segments with start/duration in seconds; srt/vtt return ready subtitle file bodies and srv3 the raw YouTube XML. Prefer text unless you need timestamps or a file. Costs 1 credit.
    ConnectorNo auth
  • Start transcribing a podcast episode, a YouTube or TikTok video, or a direct audio file. Pass a direct audio URL (.mp3/.m4a/.wav) OR a platform link. YouTube, TikTok, Spotify or Apple Podcasts, and it will be resolved for you; use lookup_podcast first only when you need to choose an episode from a show. Usually returns immediately with a transcription id and status "processing", and does NOT wait for the result: poll get_transcript until status is "completed". A YouTube video is the exception, it is read from the video's existing caption track, so it comes back already "completed" and there is nothing to poll. Everything except YouTube spends the account's credits.
    ConnectorAPI key
  • Disconnect your YouTube account from Youfiliate. IMPORTANT: Always confirm with the user before executing this action. The `confirm` parameter must be set to true. This removes stored OAuth tokens. You will need to reconnect to use the auto-migration feature. Does NOT modify any YouTube data or video descriptions. Common errors: - Not connected: no YouTube account to disconnect. - confirm=False: you must set confirm=True after getting user confirmation.
    Connector
    Destructive
    No auth
  • Generate specific video ideas for the signed-in user's own YouTube channel to make next, grounded in what already earns them subscribers there (their winners) and what their audience keeps asking for (their comments). Call this when the user asks what to make, film, or post next; for video ideas, content ideas, or topic suggestions; what their next video should be; to brainstorm ideas; or says they are out of ideas or stuck on what to make. This GENERATES ideas from scratch. To judge or package a specific idea the user already has in mind, use evaluate_idea instead. Needs no input: it reads their real connected YouTube channel directly. Never ask the creator anything first, not for context, not for a link, not for a title you could look up; call it immediately.
    ConnectorOAuth
  • SEARCH the signed-in user's own YouTube catalogue and LIST the videos that match, by what is written in their titles, descriptions and tags. This is RETRIEVAL, not ranking: call it whenever the user wants to FIND or LIST videos rather than judge them. Use it for 'which of my videos are about X', 'show me every video where I talked about X', 'find my videos mentioning X', 'which videos have a referral or affiliate link in the description', 'list all my videos', 'what have I made about X', or any question whose answer is a SET of their videos. Also use it to pull ONE video's full record (its complete description, tags, length, views): pass that video's title as `video`. Leave everything empty to browse the whole library newest first. Results are paginated: each answer says how many matched and the `offset` to pass to see the next page, so keep asking to walk a large catalogue rather than stopping at the first page. It searches only what the creator WROTE, never what is spoken in the video. For how a video PERFORMED use analyze_video; for the best performers use find_best_videos. Needs no input: it reads their real connected YouTube channel directly. Never ask the creator anything first, not for context, not for a link, not for a title you could look up; call it immediately.
    ConnectorOAuth
  • Transcribes one audio or video file the user owns or may use into timestamped text with SRT and VTT captions. Best for: "transcribe this podcast episode", "make subtitles for my video", "what is said in this file". Returns: language, length, timestamped segments, SRT and VTT (trim with include), transcript_id, expires_at (kept 24 hours, the media is never kept), minutes left today, and library_id when the caller has no user id. Input tips: give file (an upload) or url (a public TikTok, Instagram or other social video, or a direct media link), not both. Set confirm_rights true only after the user says they own the recording or have the rights (a public social video needs none); otherwise ask. Pass library_id from an earlier answer to keep transcripts in one library. Not for: YouTube (call get_transcript), private videos, over 15 MiB (15,728,640 bytes) or 15 minutes, whole channels. Formats: mp3, m4a, mp4, wav, ogg, flac, webm. A daily allowance of minutes applies.
    ConnectorNo auth
  • Read the transcript of a video, one page at a time. Use it only when you need the words themselves (quote, translate, copy, review). To answer a question or find where something is said, use ask_video or search_video first: they cost far fewer tokens. Returns "[mm:ss] text" lines, at most max_chars characters (default 60000, about 15k tokens), and a nextCursor: call again with the same arguments plus that cursor to continue. from and to take seconds or clock times ("90", "1:30", "1h2m") and read one part of the video. format: txt (default), md, srt, vtt or json. language is a BCP-47 hint. speakers is ignored without an API key (no speaker labels). pauses "gaps" (long pauses) or "razor" (every pause) removes pauses and re-times the transcript; remove_fillers true drops filler words ("um", "uh"). Both need word-level timing. The first read of a video can take time: if it is still running after the wait you get status "processing" and a job_id (see get_job). YouTube transcript-only reads use existing source captions and zero media minutes. Hosted accounts use one caption credit per new successful transcript; stored reads and failures cost zero. Missing captions never enter a media fallback. Listen and richer context are separate actions. Cached transcripts return at once and are free. The text is wrapped as untrusted video text. Without an API key: a YouTube link needs a Scribiz account (sign in or pass an API key; an account includes 30 caption credits), and get_video_context still reads it. Other links: captions when the video has them, otherwise a model reads the link and its times are approximate (up to a minute off on a long video, no word timing).
    ConnectorNo auth
  • Read the transcript of a video, one page at a time. Use it only when you need the words themselves (quote, translate, copy, review). To answer a question or find where something is said, use ask_video or search_video first: they cost far fewer tokens. Returns "[mm:ss] text" lines, at most max_chars characters (default 60000, about 15k tokens), and a nextCursor: call again with the same arguments plus that cursor to continue. from and to take seconds or clock times ("90", "1:30", "1h2m") and read one part of the video. format: txt (default), md, srt, vtt or json. language is a BCP-47 hint. speakers is ignored without an API key (no speaker labels). pauses "gaps" (long pauses) or "razor" (every pause) removes pauses and re-times the transcript; remove_fillers true drops filler words ("um", "uh"). Both need word-level timing. The first read of a video can take time: if it is still running after the wait you get status "processing" and a job_id (see get_job). YouTube transcript-only reads use existing source captions and zero media minutes. Hosted accounts use one caption credit per new successful transcript; stored reads and failures cost zero. Missing captions never enter a media fallback. Listen and richer context are separate actions. Cached transcripts return at once and are free. The text is wrapped as untrusted video text. Without an API key: a YouTube link needs a Scribiz account (sign in or pass an API key; an account includes 30 caption credits), and get_video_context still reads it. Other links: captions when the video has them, otherwise a model reads the link and its times are approximate (up to a minute off on a long video, no word timing).
    ConnectorNo auth
  • Bring a file into the media library from a Google Drive, Dropbox or YouTube URL. For a direct link to a media file on any other host, use livereacting_import_from_url; for a file on the customer's own computer, use livereacting_upload_file. The import runs in the background. This returns a fileId straight away; poll livereacting_get_import_status with it to find out when the file is ready. Only one import can run at a time per account. Only a single YouTube video imports here: a YouTube playlist page or channel URL is refused with VALIDATION_ERROR, so do not promise a customer that a playlist can be imported through this tool. Pass one video URL at a time.
    ConnectorAPI key
  • Use when the user wants the videos on a page: <video>/<source> files, og:video, YouTube/Vimeo/Wistia/Loom embeds, direct video links and the JSON-LD VideoObject a page declares (`source: "structured-data"`, how news sites describe a JS-mounted video), each tagged by source with a poster when declared. `source: "embed"` is a player page, not a downloadable file; a URL that is itself a video file comes back as the single result (source file). A YouTube, Vimeo, TikTok, Dailymotion or Loom video URL is answered from the URL alone with its player embed (`source: "platform"`, no fetch, never pass render for these) - tell the user the file itself cannot be downloaded through MiroMiro. When any other page loads a JS player and declares nothing else, the `hint` names the player: call again with render=true (+5 credits) then. Returns up to 40 by default; pass limit (up to 200) for more.
    ConnectorOAuth
  • Video comments. Top-level comments on a video, about 20 per page. Pass `pagination.cursor` back as `cursor` for the next page. Each item that has replies also appears in `replyCursors`; feed that cursor to `/v1/youtube/video/comment-replies`. Use `order=newest` when polling for new comments, since `top` is re-ranked by YouTube and will churn. Costs 1 credit.
    ConnectorNo auth
  • Roll back a completed migration, restoring original YouTube descriptions. IMPORTANT: This modifies YouTube video descriptions. Always confirm with the user before executing. This reverts all video descriptions to their pre-migration state. The rollback runs asynchronously. Requires a connected YouTube account. Common errors: - Migration not found or not in a rollback-eligible state. - YouTube not connected: reconnect first. - confirm=False: must set confirm=True after user confirmation.
    Connector
    Destructive
    No auth
  • Queue transcripts for MANY videos at once (up to 4000) and get a job_id back immediately — the work continues in the background. Use this instead of calling get_transcript in a loop for more than a handful of videos. Feed it video ids from list_channel_videos or list_playlist_videos (ids_only=true). Next: poll get_transcripts_job until status is 'done', reading finished transcripts from get_transcripts_results as they land. Costs 1 credit per video, charged on submit; duplicates are removed first. Requires a user key (sk_...).
    ConnectorNo auth
  • List every video in a YouTube playlist, in playlist order (courses and series keep their sequence). Accepts a playlist URL or bare playlist id (13, 18, 26 or 34 characters — all valid). Public and unlisted playlists only: YouTube reports a private playlist as nonexistent (error playlist_private) until its owner sets Visibility to Unlisted. Costs 1 credit.
    ConnectorOAuth
  • Import a long video from a link: YouTube, Twitch, Kick, or a public direct link to a video file. Checks long-video slots (max 8) first and fails with quota_exceeded if they are full; free a slot with list_videos and delete_video, then retry. Returns a job_id quickly; poll get_import_status until video_id is set, then call clip_video.
    ConnectorAPI key