{"id":"jimmysadek-youtube-fetcher-to-markdown","name":"youtube-fetcher-to-markdown","homepage":null,"repo_url":"https://github.com/JimmySadek/youtube-fetcher-to-markdown","category":"ai-ml","subcategories":[],"tags":["youtube","transcript","markdown","obsidian","knowledge-base","yt-dlp","python","claude-code-skill"],"what_it_does":"Provides a Claude Code “skill” (and a standalone Python script) that takes a YouTube URL, fetches captions/transcript and video metadata (optionally chapters/description/duration via yt-dlp), and outputs an Obsidian-ready Markdown file with YAML frontmatter (plus optional JSON/SRT exports).","use_cases":["Building an Obsidian/Logseq transcript knowledge base from YouTube videos","Creating queryable Markdown notes with title/channel metadata, chapters, and transcripts","Exporting transcripts as SRT or JSON for other pipelines","Batching collection of learning materials while preserving source attribution"],"not_for":["Videos without captions (or where captions are unavailable/disabled by the uploader)","Highly sensitive/private video sources (the tool may fetch over the public web depending on access)","A production API service with multi-user authentication and rate-limit guarantees"],"best_when":"You want local, repeatable generation of structured transcript notes for personal knowledge management, with optional enrichment when yt-dlp is installed.","avoid_when":"You need strict privacy controls, enterprise governance, or a documented, stable network/API interface rather than a local script/skill.","alternatives":["Whisper-based transcription workflows for videos without captions","Other YouTube transcript extractors (captions-only) plus separate metadata enrichment","Manual transcript export from YouTube + custom templating","yt-dlp + a caption parsing script tailored to your note format"],"af_score":65.0,"security_score":41.2,"reliability_score":33.8,"package_type":"skill","discovery_source":["openclaw"],"priority":"high","status":"evaluated","version_evaluated":null,"last_evaluated":"2026-03-30T15:38:16.220821+00:00","interface":{"has_rest_api":false,"has_graphql":false,"has_grpc":false,"has_mcp_server":false,"mcp_server_url":null,"has_sdk":false,"sdk_languages":[],"openapi_spec_url":null,"webhooks":false},"auth":{"methods":["No authentication for local skill usage (public web access to YouTube/oEmbed and caption endpoints)"],"oauth":false,"scopes":false,"notes":"No API keys or user auth described; access depends on availability of YouTube resources and any restrictions on the target videos."},"pricing":{"model":null,"free_tier_exists":false,"free_tier_limits":null,"paid_tiers":[],"requires_credit_card":false,"estimated_workload_costs":null,"notes":"Self-hosted/local tool; costs are primarily compute and any third-party service usage indirectly through YouTube access."},"requirements":{"requires_signup":false,"requires_credit_card":false,"domain_verification":false,"data_residency":[],"compliance":[],"min_contract":null},"agent_readiness":{"af_score":65.0,"security_score":41.2,"reliability_score":33.8,"mcp_server_quality":0.0,"documentation_accuracy":70.0,"error_message_quality":0.0,"error_message_notes":"README includes exit codes (0 success, 1 runtime error, 2 missing dependencies, 3 duplicate skipped) and a brief description of limitations, but does not show structured error formats or detailed failure guidance.","auth_complexity":100.0,"rate_limit_clarity":10.0,"tls_enforcement":70.0,"auth_strength":10.0,"scope_granularity":0.0,"dependency_hygiene":45.0,"secret_handling":90.0,"security_notes":"No authentication or scopes are involved. Security depends on safe handling of external content (URLs) and third-party dependencies (yt-dlp, youtube-transcript-api, requests). TLS usage is not explicitly documented, and rate limiting/robust network error handling is not documented. No secret handling concerns are evident from README because no API keys are required.","uptime_documented":0.0,"version_stability":40.0,"breaking_changes_history":50.0,"error_recovery":45.0,"idempotency_support":"true","idempotency_notes":"Supports duplicate detection and a --force flag to re-fetch; duplicate behavior is explicitly indicated by exit code 3.","pagination_style":"none","retry_guidance_documented":false,"known_agent_gotchas":["Captions must exist and be accessible; some videos may disable captions or be age-restricted/private.","Optional metadata enrichment depends on yt-dlp; without it, description/chapters/duration may be missing even if transcript still works.","Duplicate detection may skip work unless --force is used.","External network availability and YouTube endpoint behavior can cause transient failures."]}}