YouTube
YouTube
Scan YouTube channels and videos, fetching metadata and transcripts for detection.
- Category
- Social Media
- Source type
- YOUTUBE
- Produces
- video
- Links
- YouTubeProduct
Video is data nobody searches. A demo recording that shows a live dashboard, a webinar where someone reads out an account number, a training video with a staging environment on screen — all invisible until the words and the pixels are turned into text.
What you need to connect
Either channel URLs or handles (@YourCompany), or explicit video URLs —
at least one of the two. Public videos need no credentials. For age-restricted
or members-only videos, supply a cookie file.
What Classifyre reads
One asset per video, whose content is a transcript:
- If the video has captions, they are used — in your preferred language order.
- If it doesn’t, the audio is transcribed by speech recognition.
- On-screen text is read from sampled frames, so a password visible in a screen recording is found even when nobody says it out loud.
Video metadata — title, description, channel, upload date, view count — is recorded alongside.
Metadata on every asset
Asset kind · video
| Field | Type | Always present | What it is |
|---|---|---|---|
| video_id | string | Yes | YouTube video id (11-char watch id) |
| title | string | Yes | Video title |
| channel_id | string | No | Channel id the video belongs to |
| channel_name | string | No | Channel/uploader display name |
| duration_seconds | integer | No | Video duration in seconds |
| view_count | integer | No | View count at extraction time |
| like_count | integer | No | Like count at extraction time |
| upload_date | string | No | Upload date (YYYYMMDD as reported by yt-dlp) |
| transcript_available | boolean | No | Whether a transcript/caption track was fetched |
| transcript_source | string | No | Origin of the transcript text: 'captions' (caption track) or 'whisper' (audio transcribed with faster-whisper) |
| transcript_language | string | No | Language code of the fetched transcript |
| transcript_is_generated | boolean | No | Whether the transcript is auto-generated (vs creator-uploaded) |
| caption_tracks | string[] | No | Available caption language codes |
Lineage
Lineage
This source records no lineage. Nothing in the system it reads describes data moving from one place to another, so no FLOW edges are produced. Related items are still linked — see Lineage & Relationships for what those links mean and how they differ from lineage.
Worth knowing
- Transcription costs time. A channel of hour-long videos is a long scan; the sampling strategy is what keeps each run bounded.
- Unlisted videos are scannable if you have the URL — and are exactly where internal recordings tend to live.
- A proxy can be configured when scanning at a scale that attracts rate limiting.
Configuration
Beyond the fields below, every source also has the settings shared by all of them: the sampling strategy, the detectors to run, the scan schedule, and the compute limits for its scan jobs.
Required
Without these, the source will not save.
| Field | Type | Required | What it does | Default |
|---|---|---|---|---|
| required | object | Yes | Provide at least one of channels or video_urls (enforced at runtime).no extra properties | — |
| channels | array | No | Channel URLs or handles to list videos from (e.g. https://www.youtube.com/@OpenAI or @OpenAI). At least one of channels/video_urls is required. | — |
| channels[] | string | No | — | — |
| video_urls | array | No | Explicit video watch URLs to scan (e.g. https://www.youtube.com/watch?v=dQw4w9WgXcQ). At least one of channels/video_urls is required. | — |
| video_urls[] | string | No | — | — |
Secrets
Stored encrypted and never shown again after you save them. See Configuration & Fields.
| Field | Type | Required | What it does | Default |
|---|---|---|---|---|
| masked | object | No | Optional credentials. Leave empty for public videos.no extra properties | — |
| cookies | string | No | Netscape-format cookie file contents, used by yt-dlp to access age-restricted or members-only videos. | — |
Optional
Everything you can tune. Sensible defaults apply when you leave them alone.
| Field | Type | Required | What it does | Default |
|---|---|---|---|---|
| optional | object | No | —no extra properties | — |
| connection | object | No | Network controls for yt-dlp and transcript fetching.no extra properties | — |
| connection.ignore_errors | boolean | No | Continue past individual videos that fail to extract instead of aborting the run. | true |
| connection.proxy_url | string | No | Optional HTTP/HTTPS/SOCKS proxy URL to mitigate rate-limiting when scanning at scale. | — |
| connection.request_timeout_seconds | integer | No | Socket timeout for yt-dlp network operations.min 1, max 300 | 30 |
| transcript | object | No | Transcript/caption fetching controls.no extra properties | — |
| transcript.languages | array | No | Preferred caption language codes in priority order (e.g. ["en"]). Empty means accept any available language. | — |
| transcript.languages[] | string | No | — | — |