{
  "description": "Extract timestamped transcripts and rich metadata from YouTube videos, channels, and playlists, with optional AI transcription.",
  "properties": {
    "channelUrls": {
      "description": "Channel URLs or handles (mode=channel), e.g. https://www.youtube.com/@TED, https://www.youtube.com/channel/UC..., or @TED. Each channel's latest uploads are enumerated and every video is transcribed.",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "title": "Channel URLs",
      "type": "array"
    },
    "includeAutoGenerated": {
      "default": true,
      "description": "Whether to include auto-generated captions when manual captions are not available.",
      "prefill": true,
      "title": "Include Auto-Generated Captions",
      "type": "boolean"
    },
    "includeWordTimings": {
      "default": false,
      "description": "Add a wordTimings array with word-level start/end times. Only auto-generated YouTube captions expose word timings; manual captions and AI transcripts do not.",
      "editor": "checkbox",
      "prefill": false,
      "title": "Include Word Timings",
      "type": "boolean"
    },
    "language": {
      "default": "",
      "description": "Caption language to fetch. Leave Auto-detect to use the video's original language.",
      "editor": "select",
      "enum": [
        "",
        "af",
        "sq",
        "am",
        "ar",
        "hy",
        "az",
        "eu",
        "be",
        "bn",
        "bs",
        "bg",
        "my",
        "ca",
        "ceb",
        "zh-Hans",
        "zh-Hant",
        "co",
        "hr",
        "cs",
        "da",
        "nl",
        "en",
        "eo",
        "et",
        "fil",
        "fi",
        "fr",
        "fy",
        "gl",
        "ka",
        "de",
        "el",
        "gu",
        "ht",
        "ha",
        "haw",
        "he",
        "hi",
        "hmn",
        "hu",
        "is",
        "ig",
        "id",
        "ga",
        "it",
        "ja",
        "jv",
        "kn",
        "kk",
        "km",
        "rw",
        "ko",
        "ku",
        "ky",
        "lo",
        "la",
        "lv",
        "lt",
        "lb",
        "mk",
        "mg",
        "ms",
        "ml",
        "mt",
        "mi",
        "mr",
        "mn",
        "ne",
        "no",
        "ny",
        "or",
        "ps",
        "fa",
        "pl",
        "pt",
        "pa",
        "ro",
        "ru",
        "sm",
        "gd",
        "sr",
        "sn",
        "sd",
        "si",
        "sk",
        "sl",
        "so",
        "st",
        "es",
        "su",
        "sw",
        "sv",
        "tg",
        "ta",
        "tt",
        "te",
        "th",
        "tr",
        "tk",
        "uk",
        "ur",
        "ug",
        "uz",
        "vi",
        "cy",
        "xh",
        "yi",
        "yo",
        "zu"
      ],
      "enumTitles": [
        "Auto-detect (video's original language)",
        "Afrikaans",
        "Albanian",
        "Amharic",
        "Arabic",
        "Armenian",
        "Azerbaijani",
        "Basque",
        "Belarusian",
        "Bengali",
        "Bosnian",
        "Bulgarian",
        "Burmese",
        "Catalan",
        "Cebuano",
        "Chinese (Simplified)",
        "Chinese (Traditional)",
        "Corsican",
        "Croatian",
        "Czech",
        "Danish",
        "Dutch",
        "English",
        "Esperanto",
        "Estonian",
        "Filipino",
        "Finnish",
        "French",
        "Frisian",
        "Galician",
        "Georgian",
        "German",
        "Greek",
        "Gujarati",
        "Haitian Creole",
        "Hausa",
        "Hawaiian",
        "Hebrew",
        "Hindi",
        "Hmong",
        "Hungarian",
        "Icelandic",
        "Igbo",
        "Indonesian",
        "Irish",
        "Italian",
        "Japanese",
        "Javanese",
        "Kannada",
        "Kazakh",
        "Khmer",
        "Kinyarwanda",
        "Korean",
        "Kurdish",
        "Kyrgyz",
        "Lao",
        "Latin",
        "Latvian",
        "Lithuanian",
        "Luxembourgish",
        "Macedonian",
        "Malagasy",
        "Malay",
        "Malayalam",
        "Maltese",
        "Maori",
        "Marathi",
        "Mongolian",
        "Nepali",
        "Norwegian",
        "Nyanja",
        "Odia",
        "Pashto",
        "Persian",
        "Polish",
        "Portuguese",
        "Punjabi",
        "Romanian",
        "Russian",
        "Samoan",
        "Scots Gaelic",
        "Serbian",
        "Shona",
        "Sindhi",
        "Sinhala",
        "Slovak",
        "Slovenian",
        "Somali",
        "Sesotho",
        "Spanish",
        "Sundanese",
        "Swahili",
        "Swedish",
        "Tajik",
        "Tamil",
        "Tatar",
        "Telugu",
        "Thai",
        "Turkish",
        "Turkmen",
        "Ukrainian",
        "Urdu",
        "Uyghur",
        "Uzbek",
        "Vietnamese",
        "Welsh",
        "Xhosa",
        "Yiddish",
        "Yoruba",
        "Zulu"
      ],
      "title": "Preferred Language",
      "type": "string"
    },
    "maxVideosPerChannel": {
      "default": 50,
      "description": "Maximum number of videos to enumerate from each channel (mode=channel). 1-1,000.",
      "maximum": 1000,
      "minimum": 1,
      "title": "Max Videos per Channel",
      "type": "integer"
    },
    "maxVideosPerPlaylist": {
      "default": 50,
      "description": "Maximum number of videos to enumerate from each playlist (mode=playlist). 1-1,000.",
      "maximum": 1000,
      "minimum": 1,
      "title": "Max Videos per Playlist",
      "type": "integer"
    },
    "maxWhisperMinutes": {
      "description": "Leave unset for the legacy behavior (AI enabled with no length limit). Set to 0 explicitly to disable AI transcription. A positive value only sends videos of that length or shorter to AI. AI still requires Use Whisper AI fallback.",
      "maximum": 1440,
      "minimum": 0,
      "title": "Max AI Length (minutes)",
      "type": "integer"
    },
    "mode": {
      "default": "videos",
      "description": "What to scrape: specific videos, a channel's uploads, or a playlist.",
      "editor": "select",
      "enum": [
        "videos",
        "channel",
        "playlist"
      ],
      "enumTitles": [
        "Video URLs",
        "Channel uploads",
        "Playlist videos"
      ],
      "prefill": "videos",
      "title": "Mode",
      "type": "string"
    },
    "outputFormat": {
      "default": "full",
      "description": "How transcript data is included. 'full' = segments and full_text; 'text_only' = full_text only; 'segments_only' = segments only; 'srt' / 'vtt' = ready-to-use subtitle text derived from the segments.",
      "editor": "select",
      "enum": [
        "full",
        "text_only",
        "segments_only",
        "srt",
        "vtt"
      ],
      "enumTitles": [
        "Full (segments + text)",
        "Text Only (no segments array)",
        "Segments Only (no full_text)",
        "SRT subtitles",
        "WebVTT subtitles"
      ],
      "title": "Output Format",
      "type": "string"
    },
    "playlistUrls": {
      "description": "Playlist URLs or IDs (mode=playlist), e.g. https://www.youtube.com/playlist?list=PL... or PL.... Every video in the playlist is transcribed.",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "title": "Playlist URLs",
      "type": "array"
    },
    "proxyCountry": {
      "default": "US",
      "description": "Country/region for the proxy IP. Useful if transcripts are geo-blocked in the default US region.",
      "editor": "select",
      "enum": [
        "US",
        "GB",
        "CA",
        "AU",
        "DE",
        "FR",
        "JP",
        "KR",
        "BR",
        "IN",
        "MX",
        "IT",
        "ES",
        "NL",
        "PL",
        "RU",
        "SE",
        "NO",
        "DK",
        "FI",
        "ZA",
        "SG",
        "HK",
        "TW",
        "ID",
        "MY",
        "TH",
        "PH",
        "AR",
        "CO",
        "CL"
      ],
      "enumTitles": [
        "United States",
        "United Kingdom",
        "Canada",
        "Australia",
        "Germany",
        "France",
        "Japan",
        "South Korea",
        "Brazil",
        "India",
        "Mexico",
        "Italy",
        "Spain",
        "Netherlands",
        "Poland",
        "Russia",
        "Sweden",
        "Norway",
        "Denmark",
        "Finland",
        "South Africa",
        "Singapore",
        "Hong Kong",
        "Taiwan",
        "Indonesia",
        "Malaysia",
        "Thailand",
        "Philippines",
        "Argentina",
        "Colombia",
        "Chile"
      ],
      "prefill": "GB",
      "sectionCaption": "Advanced",
      "title": "Proxy Country",
      "type": "string"
    },
    "useWhisper": {
      "default": true,
      "description": "When YouTube has no transcript (disabled captions, music-only, or blocked), download the audio and transcribe with Whisper AI (faster-whisper, CPU). Adds ~30-180 s per video. Enabled by default to guarantee transcript output even when YouTube captions are unavailable.",
      "editor": "checkbox",
      "prefill": true,
      "title": "Use Whisper AI fallback",
      "type": "boolean"
    },
    "videoUrls": {
      "description": "YouTube watch URLs, youtu.be short links, Shorts/embed URLs, or plain 11-character video IDs (mode=videos). Duplicate IDs are processed once.",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "prefill": [
        "https://www.youtube.com/watch?v=jNQXAC9IVRw"
      ],
      "title": "Video URLs",
      "type": "array"
    },
    "whisperModel": {
      "default": "base",
      "description": "Whisper model size to use when `useWhisper` is enabled. Larger = more accurate but slower and more RAM. 'base' is balanced.",
      "editor": "select",
      "enum": [
        "tiny",
        "base",
        "small",
        "medium",
        "large-v3-turbo"
      ],
      "enumTitles": [
        "Tiny (fastest, ~39 MB)",
        "Base (balanced, ~74 MB)",
        "Small (~244 MB)",
        "Medium (best quality/speed, ~769 MB)",
        "Large-v3-turbo (highest accuracy, ~800 MB)"
      ],
      "prefill": "tiny",
      "title": "Whisper Model",
      "type": "string"
    }
  },
  "schemaVersion": 1,
  "title": "YouTube Transcript Scraper Input",
  "type": "object"
}
