UNPKG

@kevinwatt/yt-dlp-mcp

Version:

An MCP server implementation that integrates with yt-dlp, providing video and audio content download capabilities (e.g. YouTube, Facebook, Tiktok, etc.) for LLMs.

140 lines (139 loc) 4.26 kB
import type { Config } from "../config.js"; /** * Video metadata interface containing all fields that can be extracted */ export interface VideoMetadata { id?: string; title?: string; fulltitle?: string; description?: string; alt_title?: string; display_id?: string; uploader?: string; uploader_id?: string; uploader_url?: string; creators?: string[]; creator?: string; channel?: string; channel_id?: string; channel_url?: string; channel_follower_count?: number; channel_is_verified?: boolean; timestamp?: number; upload_date?: string; release_timestamp?: number; release_date?: string; release_year?: number; modified_timestamp?: number; modified_date?: string; duration?: number; duration_string?: string; view_count?: number; concurrent_view_count?: number; like_count?: number; dislike_count?: number; repost_count?: number; average_rating?: number; comment_count?: number; age_limit?: number; live_status?: string; is_live?: boolean; was_live?: boolean; playable_in_embed?: string; availability?: string; media_type?: string; playlist_id?: string; playlist_title?: string; playlist?: string; playlist_count?: number; playlist_index?: number; playlist_autonumber?: number; playlist_uploader?: string; playlist_uploader_id?: string; playlist_channel?: string; playlist_channel_id?: string; webpage_url?: string; webpage_url_domain?: string; webpage_url_basename?: string; original_url?: string; filename?: string; ext?: string; categories?: string[]; tags?: string[]; cast?: string[]; location?: string; license?: string; series?: string; series_id?: string; season?: string; season_number?: number; season_id?: string; episode?: string; episode_number?: number; episode_id?: string; track?: string; track_number?: number; track_id?: string; artists?: string[]; artist?: string; genres?: string[]; genre?: string; composers?: string[]; composer?: string; album?: string; album_type?: string; album_artists?: string[]; album_artist?: string; disc_number?: number; extractor?: string; epoch?: number; [key: string]: unknown; } /** * Extract video metadata without downloading the actual video content. * Uses yt-dlp's --dump-json flag to get comprehensive metadata. * * @param url - The URL of the video to extract metadata from * @param fields - Optional array of specific fields to extract. If not provided, returns all available metadata * @param config - Configuration object (currently unused but kept for consistency) * @returns Promise resolving to formatted metadata string or JSON object * @throws {Error} When URL is invalid or metadata extraction fails * * @example * ```typescript * // Get all metadata * const metadata = await getVideoMetadata('https://youtube.com/watch?v=...'); * console.log(metadata); * * // Get specific fields only * const specificData = await getVideoMetadata( * 'https://youtube.com/watch?v=...', * ['id', 'title', 'description', 'channel'] * ); * console.log(specificData); * ``` */ export declare function getVideoMetadata(url: string, fields?: string[], _config?: Config): Promise<string>; /** * Get a human-readable summary of key video metadata fields. * This is useful for quick overview without overwhelming JSON output. * * @param url - The URL of the video to extract metadata from * @param config - Configuration object (currently unused but kept for consistency) * @returns Promise resolving to a formatted summary string * @throws {Error} When URL is invalid or metadata extraction fails * * @example * ```typescript * const summary = await getVideoMetadataSummary('https://youtube.com/watch?v=...'); * console.log(summary); * // Output: * // Title: Example Video Title * // Channel: Example Channel * // Duration: 10:30 * // Views: 1,234,567 * // Upload Date: 2023-12-01 * // Description: This is an example video... * ``` */ export declare function getVideoMetadataSummary(url: string, _config?: Config): Promise<string>;