| name | aside-youtube |
| description | Use this skill when you need to search YouTube, read video transcripts, or inspect comments without opening YouTube manually. |
| metadata | {"version":"0.1.0"} |
YouTube
Use the youtube global in the REPL tool. It uses direct YouTube HTTP endpoints and returns compact JSON; you do not need to inspect YouTube DOM.
Quick Reference
const search = await youtube.search('OpenAI DevDay 2025', { limit: 5 });
const videoId = search[0].videoId;
const [metadata, transcript, comments] = await Promise.all([
youtube.getMetadata(videoId),
youtube.getTranscript(videoId),
youtube.getComments(videoId, { limit: 20 }),
]);
Methods
youtube.search(query: string, opts?: YouTubeSearchOptions): Promise<YouTubeVideoSummary[]>
Search YouTube videos.
query — search query.
opts.limit — max video results. Defaults to 10.
opts.lang — YouTube UI language. Defaults to 'en'.
opts.region — YouTube region. Defaults to 'US'.
youtube.getMetadata(videoIdOrUrl: string, opts?: YouTubeMetadataOptions): Promise<YouTubeVideoMetadata>
Fetch compact video metadata such as title, channel, thumbnail, duration, view count, description, publish date, and live status.
Accepts normal watch URLs, Shorts URLs, live URLs, embed URLs, youtu.be URLs, or raw video IDs.
youtube.listTranscriptLanguages(videoIdOrUrl: string): Promise<YouTubeTranscriptLanguage[]>
List caption tracks available for a video.
youtube.getTranscript(videoIdOrUrl: string, opts?: { lang?: string; includeTimestamp?: boolean }): Promise<string>
Fetch transcript text. Omit lang to use YouTube's default caption track for that video. Pass a language code such as 'en' or 'ko' when you need a specific track. By default, it returns sentence-like plain text. Pass includeTimestamp: true to return one line per transcript segment formatted like [00:00 - 00:04] text.
youtube.getComments(videoIdOrUrl: string, opts?: YouTubeCommentsOptions): Promise<YouTubeCommentsResponse>
Fetch top-level comments.
opts.limit — max comments. Defaults to 20.
opts.continuation — pass the previous response's continuation for the next page.
opts.lang — YouTube UI language. Defaults to 'en'.
opts.region — YouTube region. Defaults to 'US'.
Types
interface YouTubeVideoSummary {
videoId: string;
url: string;
title: string;
channelName?: string;
thumbnailUrl?: string;
}
interface YouTubeVideoMetadata extends YouTubeVideoSummary {
durationSeconds?: number;
viewCount?: number;
description?: string;
publishDate?: string;
isLiveContent?: boolean;
}
interface YouTubeCommentsResponse {
videoId: string;
comments: Array<{
?: ;
: ;
?: ;
: ;
?: ;
?: ;
?: ;
}>;
: ;
?: ;
}