{"id":47890960,"url":"https://github.com/maxbeizer/gh-yt2md","last_synced_at":"2026-04-04T03:05:46.277Z","repository":{"id":345933263,"uuid":"1164922368","full_name":"maxbeizer/gh-yt2md","owner":"maxbeizer","description":"YouTube to Markdown - gh CLI extension","archived":false,"fork":false,"pushed_at":"2026-03-21T11:22:29.000Z","size":1734,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-22T02:11:59.923Z","etag":null,"topics":["cli","gh","gh-extension","youtube"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/maxbeizer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-23T16:25:37.000Z","updated_at":"2026-03-21T11:22:34.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/maxbeizer/gh-yt2md","commit_stats":null,"previous_names":["maxbeizer/gh-yt2md"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/maxbeizer/gh-yt2md","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxbeizer%2Fgh-yt2md","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxbeizer%2Fgh-yt2md/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxbeizer%2Fgh-yt2md/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxbeizer%2Fgh-yt2md/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/maxbeizer","download_url":"https://codeload.github.com/maxbeizer/gh-yt2md/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxbeizer%2Fgh-yt2md/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31385940,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T01:22:39.193Z","status":"online","status_checked_at":"2026-04-04T02:00:07.569Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","gh","gh-extension","youtube"],"created_at":"2026-04-04T03:05:45.818Z","updated_at":"2026-04-04T03:05:46.266Z","avatar_url":"https://github.com/maxbeizer.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# gh-yt2md\n\nA `gh` CLI extension that extracts YouTube video transcripts into markdown, optionally processing them with GitHub Models. Single Go binary, zero runtime dependencies.\n\n![demo](demo.gif)\n\n## Installation\n\n```bash\ngh extension install maxbeizer/gh-yt2md\n```\n\n## Usage\n\n```bash\n# Pass a URL or video ID — it just works\ngh yt2md \"https://www.youtube.com/watch?v=dQw4w9WgXcQ\"\ngh yt2md \"https://youtu.be/dQw4w9WgXcQ\"\ngh yt2md dQw4w9WgXcQ\n\n# Save to a file\ngh yt2md dQw4w9WgXcQ -o transcript.md\n\n# Process with GitHub Models (requires GITHUB_TOKEN)\ngh yt2md dQw4w9WgXcQ -p \"Summarize in 3 bullet points\" -m \"openai/gpt-4.1\"\n```\n\n### Output\n\nBy default, output goes to **stdout** — pipe it wherever you like:\n\n```bash\n# Pipe to clipboard\ngh yt2md dQw4w9WgXcQ | pbcopy\n\n# Pipe to a file\ngh yt2md dQw4w9WgXcQ \u003e notes.md\n```\n\nStatus messages go to stderr, so piping works cleanly.\n\n### Flags\n\n| Flag | Short | Description |\n|------|-------|-------------|\n| `--output` | `-o` | Output file path (default: stdout) |\n| `--prompt` | `-p` | Process transcript with GitHub Models using this prompt |\n| `--model` | `-m` | GitHub Models model ID (default: `openai/gpt-4o-mini`) |\n\n### GitHub Models Integration\n\nTo use `--prompt`, set the `GITHUB_TOKEN` environment variable:\n\n```bash\nexport GITHUB_TOKEN=ghp_...\ngh yt2md dQw4w9WgXcQ -p \"Translate to Spanish\" -m \"openai/gpt-4.1\"\n```\n\n## How It Works\n\n1. Calls YouTube's Innertube API to get video metadata and caption track URLs\n2. Fetches the caption track XML and parses transcript segments\n3. Renders as markdown with video metadata header\n4. Optionally sends the transcript text to GitHub Models for AI processing\n\n## Development\n\n```bash\ngo build -o gh-yt2md .\n./gh-yt2md dQw4w9WgXcQ\n```\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaxbeizer%2Fgh-yt2md","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaxbeizer%2Fgh-yt2md","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaxbeizer%2Fgh-yt2md/lists"}