{"id":"e74225d1-63c0-4550-9331-0c460567a611","entityType":"agent","slug":"clawhub-robbyczgw-cla-youtube-apify-transcript","name":"YouTube Apify Transcript","canonicalUrl":"https://www.xpersona.co/agent/clawhub-robbyczgw-cla-youtube-apify-transcript","canonicalPath":"/agent/clawhub-robbyczgw-cla-youtube-apify-transcript","generatedAt":"2026-10-09T13:01:35.137Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":null},"description":"Fetch YouTube transcripts via APIFY API. Works from cloud IPs (Hetzner, AWS, etc.) by bypassing YouTube's bot detection. Free tier includes $5/month credits (~714 videos). No credit card required. Skill: YouTube Apify Transcript Owner: robbyczgw-cla Summary: Fetch YouTube transcripts via APIFY API. Works from cloud IPs (Hetzner, AWS, etc.) by bypassing YouTube's bot detection. Free tier includes $5/month credits (~714 videos). No credit card required. Tags: latest:1.1.2 Version history: v1.1.2 | 2026-02-11T09:00:23.308Z | user Fix: SKILL.md cache path updated to match code. APIFY_API_TOKEN declared in registry","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 2.6K downloads reported by the source. Last updated 4/15/2026.","installCommand":"clawhub skill install kn73gpe8xz2630jrknkb3ya96h7zb84h:youtube-apify-transcript","sourceUrl":"https://clawhub.ai/robbyczgw-cla/youtube-apify-transcript","homepage":"https://clawhub.ai/robbyczgw-cla/youtube-apify-transcript","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/robbyczgw-cla/youtube-apify-transcript","kind":"source"}],"safetyScore":84,"overallRank":62,"popularityScore":68,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Fetch YouTube transcripts via APIFY API. Works from cloud IPs (Hetzner, AWS, etc.) by bypassing YouTube's bot detection. Free tier includes $5/month credits (~7"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":null},"stars":null,"forks":null,"downloads":2554,"packageName":null,"latestVersion":"1.1.2","tractionLabel":"2.6K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-02-28T18:28:01.402Z","emptyReason":null},"lastUpdatedAt":"2026-04-15T00:45:39.800Z","lastCrawledAt":"2026-02-28T18:28:01.402Z","lastIndexedAt":null,"nextCrawlAt":"2026-03-01T18:28:01.402Z","lastVerifiedAt":null,"highlights":[{"version":"1.1.2","createdAt":"2026-02-11T09:00:23.308Z","changelog":"Fix: SKILL.md cache path updated to match code. APIFY_API_TOKEN declared in registry metadata.","fileCount":6,"zipByteSize":8791},{"version":"1.1.1","createdAt":"2026-02-11T08:56:09.256Z","changelog":"Security: cache dir now skill-local (configurable via env). APIFY token moved from query string to Authorization Bearer header.","fileCount":6,"zipByteSize":8744},{"version":"1.1.0","createdAt":"2026-02-11T08:37:36.806Z","changelog":"Added local transcript caching (permanent, by video ID), --no-cache, --clear-cache, --cache-stats. New batch mode: --batch file.txt for bulk processing.","fileCount":null,"zipByteSize":null},{"version":"1.0.7","createdAt":"2026-02-04T23:04:20.193Z","changelog":"- Added a CHANGELOG.md file. - Updated SKILL.md to include a Metadata section with structured YAML and an emoji. - Simplified metadata requirements in SKILL.md (now only lists required environment variable and binary). - Bumped version to 1.0.7.","fileCount":null,"zipByteSize":null},{"version":"1.0.6","createdAt":"2026-02-03T17:18:28.536Z","changelog":"Add ClawHub runtime requirements metadata (SKILL.md frontmatter)","fileCount":null,"zipByteSize":null},{"version":"1.0.5","createdAt":"2026-02-03T16:58:59.245Z","changelog":"Add runtime requirements metadata for ClawHub discovery","fileCount":null,"zipByteSize":null},{"version":"1.0.4","createdAt":"2026-02-03T14:17:47.459Z","changelog":"Fix: Handle string captions format from APIFY API. The API returns captions as plain strings instead of dicts with timestamps. Updated both text and JSON formatters to handle both formats gracefully.","fileCount":null,"zipByteSize":null},{"version":"1.0.3","createdAt":"2026-02-03T14:14:55.926Z","changelog":"youtube-apify-transcript 1.0.3 - No changes detected from previous version 1.0.2. - Version number updated only; functionality and documentation remain the same.","fileCount":null,"zipByteSize":null}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install kn73gpe8xz2630jrknkb3ya96h7zb84h:youtube-apify-transcript","setupComplexity":"low","setupSteps":["Node.js workspace detected. Install dependencies securely: run `npm ci --ignore-scripts` to prevent post-install lifecycle triggers from running arbitrary code, then selectively audit the dependency tree.","Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-robbyczgw-cla-youtube-apify-transcript/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-robbyczgw-cla-youtube-apify-transcript/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-robbyczgw-cla-youtube-apify-transcript/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-robbyczgw-cla-youtube-apify-transcript/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-robbyczgw-cla-youtube-apify-transcript/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-robbyczgw-cla-youtube-apify-transcript/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-09T13:01:35.137Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-robbyczgw-cla-youtube-apify-transcript/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-robbyczgw-cla-youtube-apify-transcript/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-robbyczgw-cla-youtube-apify-transcript/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-robbyczgw-cla-youtube-apify-transcript/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":null},"readme":"Skill: YouTube Apify Transcript\n\nOwner: robbyczgw-cla\n\nSummary: Fetch YouTube transcripts via APIFY API. Works from cloud IPs (Hetzner, AWS, etc.) by bypassing YouTube's bot detection. Free tier includes $5/month credits (~714 videos). No credit card required.\n\nTags: latest:1.1.2\n\nVersion history:\n\nv1.1.2 | 2026-02-11T09:00:23.308Z | user\n\nFix: SKILL.md cache path updated to match code. APIFY_API_TOKEN declared in registry metadata.\n\nv1.1.1 | 2026-02-11T08:56:09.256Z | user\n\nSecurity: cache dir now skill-local (configurable via env). APIFY token moved from query string to Authorization Bearer header.\n\nv1.1.0 | 2026-02-11T08:37:36.806Z | user\n\nAdded local transcript caching (permanent, by video ID), --no-cache, --clear-cache, --cache-stats. New batch mode: --batch file.txt for bulk processing.\n\nv1.0.7 | 2026-02-04T23:04:20.193Z | auto\n\n- Added a CHANGELOG.md file.\n- Updated SKILL.md to include a Metadata section with structured YAML and an emoji.\n- Simplified metadata requirements in SKILL.md (now only lists required environment variable and binary).\n- Bumped version to 1.0.7.\n\nv1.0.6 | 2026-02-03T17:18:28.536Z | user\n\nAdd ClawHub runtime requirements metadata (SKILL.md frontmatter)\n\nv1.0.5 | 2026-02-03T16:58:59.245Z | user\n\nAdd runtime requirements metadata for ClawHub discovery\n\nv1.0.4 | 2026-02-03T14:17:47.459Z | user\n\nFix: Handle string captions format from APIFY API. The API returns captions as plain strings instead of dicts with timestamps. Updated both text and JSON formatters to handle both formats gracefully.\n\nv1.0.3 | 2026-02-03T14:14:55.926Z | auto\n\nyoutube-apify-transcript 1.0.3\n\n- No changes detected from previous version 1.0.2.\n- Version number updated only; functionality and documentation remain the same.\n\nv1.0.2 | 2026-02-03T13:45:56.097Z | auto\n\n- Added a frontmatter block with name, version, description, and tags at the top of SKILL.md.\n- No changes to functionality or usage instructions. Documentation only.\n\nv1.0.1 | 2026-02-03T13:38:50.494Z | user\n\nFixed: Now in own GitHub repo (was incorrectly pushed as PR)\n\nv1.0.0 | 2026-02-03T13:35:27.412Z | user\n\nInitial release - Fetch YouTube transcripts via APIFY API\n\nArchive index:\n\nArchive v1.1.2: 6 files, 8791 bytes\n\nFiles: CHANGELOG.md (109b), package.json (1263b), README.md (1326b), scripts/fetch_transcript.py (17571b), SKILL.md (4024b), _meta.json (143b)\n\nFile v1.1.2:SKILL.md\n\n---\nname: youtube-apify-transcript\nversion: 1.1.2\ndescription: Fetch YouTube transcripts via APIFY API. Works from cloud IPs (Hetzner, AWS, etc.) by bypassing YouTube's bot detection. Free tier includes $5/month credits (~714 videos). No credit card required.\ntags: [youtube, transcript, apify, video, subtitles, captions, cloud-ip, free-tier, web-scraping]\n---\n\n# youtube-apify-transcript\n\nFetch YouTube transcripts via APIFY API (works from cloud IPs, bypasses YouTube bot detection).\n\n## Why APIFY?\n\nYouTube blocks transcript requests from cloud IPs (AWS, GCP, etc.). APIFY runs the request through residential proxies, bypassing bot detection reliably.\n\n## Free Tier\n\n- **$5/month free credits** (~714 videos)\n- No credit card required\n- Perfect for personal use\n\n## Cost\n\n- **$0.007 per video** (less than 1 cent!)\n- Track usage at: https://console.apify.com/billing\n\n## Links\n\n- 🔗 [APIFY Pricing](https://apify.com/pricing)\n- 🔑 [Get API Key](https://console.apify.com/account/integrations)\n- 🎬 [YouTube Transcripts Actor](https://apify.com/karamelo/youtube-transcripts)\n\n## Setup\n\n1. Create free APIFY account: https://apify.com/\n2. Get your API token: https://console.apify.com/account/integrations\n3. Set environment variable:\n\n```bash\n# Add to ~/.bashrc or ~/.zshrc\nexport APIFY_API_TOKEN=\"apify_api_YOUR_TOKEN_HERE\"\n\n# Or use .env file (never commit this!)\necho 'APIFY_API_TOKEN=apify_api_YOUR_TOKEN_HERE' >> .env\n```\n\n## Usage\n\n### Basic Usage\n\n```bash\n# Get transcript as text (uses cache by default)\npython3 scripts/fetch_transcript.py \"https://www.youtube.com/watch?v=VIDEO_ID\"\n\n# Short URL also works\npython3 scripts/fetch_transcript.py \"https://youtu.be/VIDEO_ID\"\n```\n\n### Options\n\n```bash\n# Output to file\npython3 scripts/fetch_transcript.py \"URL\" --output transcript.txt\n\n# JSON format (includes timestamps)\npython3 scripts/fetch_transcript.py \"URL\" --json\n\n# Both: JSON to file\npython3 scripts/fetch_transcript.py \"URL\" --json --output transcript.json\n\n# Specify language preference\npython3 scripts/fetch_transcript.py \"URL\" --lang de\n```\n\n### Caching (saves money!)\n\nTranscripts are cached locally by default. Repeat requests for the same video cost $0.\n\n```bash\n# First request: fetches from APIFY ($0.007)\npython3 scripts/fetch_transcript.py \"URL\"\n\n# Second request: uses cache (FREE!)\npython3 scripts/fetch_transcript.py \"URL\"\n# Output: [cached] Transcript for: VIDEO_ID\n\n# Bypass cache (force fresh fetch)\npython3 scripts/fetch_transcript.py \"URL\" --no-cache\n\n# View cache stats\npython3 scripts/fetch_transcript.py --cache-stats\n\n# Clear all cached transcripts\npython3 scripts/fetch_transcript.py --clear-cache\n```\n\nCache location: `.cache/` in skill directory (override with `YT_TRANSCRIPT_CACHE_DIR` env var)\n\n### Batch Mode\n\nProcess multiple videos at once:\n\n```bash\n# Create a file with URLs (one per line)\ncat > urls.txt << EOF\nhttps://youtube.com/watch?v=VIDEO1\nhttps://youtu.be/VIDEO2\nhttps://youtube.com/watch?v=VIDEO3\nEOF\n\n# Process all URLs\npython3 scripts/fetch_transcript.py --batch urls.txt\n\n# Output: \n# [1/3] Fetching VIDEO1...\n# [2/3] [cached] VIDEO2\n# [3/3] Fetching VIDEO3...\n# Batch complete: 2 fetched, 1 cached, 0 failed\n# [Cost: ~$0.014 for 2 API call(s)]\n\n# Batch with JSON output to file\npython3 scripts/fetch_transcript.py --batch urls.txt --json --output all_transcripts.json\n```\n\n### Output Formats\n\n**Text (default):**\n```\nHello and welcome to this video.\nToday we're going to talk about...\n```\n\n**JSON (--json):**\n```json\n{\n  \"video_id\": \"dQw4w9WgXcQ\",\n  \"title\": \"Video Title\",\n  \"transcript\": [\n    {\"start\": 0.0, \"duration\": 2.5, \"text\": \"Hello and welcome\"},\n    {\"start\": 2.5, \"duration\": 3.0, \"text\": \"to this video\"}\n  ],\n  \"full_text\": \"Hello and welcome to this video...\"\n}\n```\n\n## Error Handling\n\nThe script handles common errors:\n- Invalid YouTube URL\n- Video has no transcript\n- API quota exceeded\n- Network errors\n\n## Metadata\n\n```yaml\nmetadata:\n  clawdbot:\n    emoji: \"📹\"\n    requires:\n      env: [\"APIFY_API_TOKEN\"]\n      bins: [\"python3\"]\n```\n\nFile v1.1.2:README.md\n\n# 📹 YouTube Transcript Fetcher (APIFY)\n\nFetch YouTube video transcripts from anywhere — even cloud servers where YouTube blocks direct access.\n\n## ✨ Features\n\n- Works from cloud IPs (AWS, GCP, VPS, etc.)\n- Bypasses YouTube bot detection via APIFY proxies\n- **Local caching** — repeat requests are FREE\n- **Batch mode** — process multiple videos at once\n- Text or JSON output with timestamps\n- Language preference support\n- Simple Python script, no SDK needed\n\n## 💰 Free Tier\n\nAPIFY offers **$5/month free credits** — that's approximately **714 videos per month** at $0.007 each!\n\nNo credit card required. [Sign up here](https://apify.com/)\n\n## 🚀 Quick Start\n\n```bash\n# 1. Set your API token\nexport APIFY_API_TOKEN=\"apify_api_YOUR_TOKEN\"\n\n# 2. Fetch a transcript\npython3 scripts/fetch_transcript.py \"https://youtube.com/watch?v=VIDEO_ID\"\n```\n\n## 📖 Documentation\n\nSee [SKILL.md](SKILL.md) for full documentation, setup instructions, and usage examples.\n\n## 🔗 Links\n\n- [APIFY Free Tier](https://apify.com/pricing) - $5/month free\n- [Get API Key](https://console.apify.com/account/integrations)\n- [YouTube Transcripts Actor](https://apify.com/karamelo/youtube-transcripts)\n\n## ⚙️ Requirements\n\n- Python 3.6+\n- `requests` library (`pip install requests`)\n- APIFY API token (free)\n\n## 📄 License\n\nMIT\n\nFile v1.1.2:_meta.json\n\n{\n  \"ownerId\": \"kn73gpe8xz2630jrknkb3ya96h7zb84h\",\n  \"slug\": \"youtube-apify-transcript\",\n  \"version\": \"1.1.2\",\n  \"publishedAt\": 1770800423308\n}\n\nFile v1.1.2:CHANGELOG.md\n\n# Changelog\n\n## [1.0.7] - 2026-02-04\n\n- Privacy cleanup: removed hardcoded paths and personal info from docs\n\nFile v1.1.2:package.json\n\n{\n  \"name\": \"@openclaw/youtube-apify-transcript\",\n  \"version\": \"1.1.2\",\n  \"description\": \"Fetch YouTube transcripts via APIFY API. Works from cloud IPs (Hetzner, AWS, etc.) by bypassing YouTube's bot detection. Free tier includes $5/month credits (~714 videos).\",\n  \"author\": \"robbyczgw-cla\",\n  \"license\": \"MIT\",\n  \"keywords\": [\n    \"openclaw\",\n    \"skill\",\n    \"youtube\",\n    \"transcript\",\n    \"apify\",\n    \"video\",\n    \"subtitles\",\n    \"captions\",\n    \"cloud-ip\",\n    \"free-tier\",\n    \"web-scraping\"\n  ],\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/robbyczgw-cla/youtube-apify-transcript.git\"\n  },\n  \"homepage\": \"https://clawhub.ai/robbyczgw-cla/youtube-apify-transcript\",\n  \"bugs\": {\n    \"url\": \"https://github.com/robbyczgw-cla/youtube-apify-transcript/issues\"\n  },\n  \"openclaw\": {\n    \"skill\": true,\n    \"triggers\": [\n      \"youtube transcript\",\n      \"get transcript\",\n      \"video transcript\"\n    ],\n    \"capabilities\": [\n      \"transcript-extraction\",\n      \"cloud-ip-bypass\",\n      \"multi-language\"\n    ],\n    \"requirements\": {\n      \"bins\": [\n        \"python3\"\n      ],\n      \"env\": {\n        \"APIFY_API_TOKEN\": \"required\"\n      }\n    }\n  },\n  \"files\": [\n    \"SKILL.md\",\n    \"README.md\",\n    \".env.example\",\n    \"scripts/\"\n  ]\n}\n\nArchive v1.1.1: 6 files, 8744 bytes\n\nFiles: CHANGELOG.md (109b), package.json (1223b), README.md (1326b), scripts/fetch_transcript.py (17571b), SKILL.md (3984b), _meta.json (143b)\n\nFile v1.1.1:SKILL.md\n\n---\nname: youtube-apify-transcript\nversion: 1.1.1\ndescription: Fetch YouTube transcripts via APIFY API. Works from cloud IPs (Hetzner, AWS, etc.) by bypassing YouTube's bot detection. Free tier includes $5/month credits (~714 videos). No credit card required.\ntags: [youtube, transcript, apify, video, subtitles, captions, cloud-ip, free-tier, web-scraping]\n---\n\n# youtube-apify-transcript\n\nFetch YouTube transcripts via APIFY API (works from cloud IPs, bypasses YouTube bot detection).\n\n## Why APIFY?\n\nYouTube blocks transcript requests from cloud IPs (AWS, GCP, etc.). APIFY runs the request through residential proxies, bypassing bot detection reliably.\n\n## Free Tier\n\n- **$5/month free credits** (~714 videos)\n- No credit card required\n- Perfect for personal use\n\n## Cost\n\n- **$0.007 per video** (less than 1 cent!)\n- Track usage at: https://console.apify.com/billing\n\n## Links\n\n- 🔗 [APIFY Pricing](https://apify.com/pricing)\n- 🔑 [Get API Key](https://console.apify.com/account/integrations)\n- 🎬 [YouTube Transcripts Actor](https://apify.com/karamelo/youtube-transcripts)\n\n## Setup\n\n1. Create free APIFY account: https://apify.com/\n2. Get your API token: https://console.apify.com/account/integrations\n3. Set environment variable:\n\n```bash\n# Add to ~/.bashrc or ~/.zshrc\nexport APIFY_API_TOKEN=\"apify_api_YOUR_TOKEN_HERE\"\n\n# Or use .env file (never commit this!)\necho 'APIFY_API_TOKEN=apify_api_YOUR_TOKEN_HERE' >> .env\n```\n\n## Usage\n\n### Basic Usage\n\n```bash\n# Get transcript as text (uses cache by default)\npython3 scripts/fetch_transcript.py \"https://www.youtube.com/watch?v=VIDEO_ID\"\n\n# Short URL also works\npython3 scripts/fetch_transcript.py \"https://youtu.be/VIDEO_ID\"\n```\n\n### Options\n\n```bash\n# Output to file\npython3 scripts/fetch_transcript.py \"URL\" --output transcript.txt\n\n# JSON format (includes timestamps)\npython3 scripts/fetch_transcript.py \"URL\" --json\n\n# Both: JSON to file\npython3 scripts/fetch_transcript.py \"URL\" --json --output transcript.json\n\n# Specify language preference\npython3 scripts/fetch_transcript.py \"URL\" --lang de\n```\n\n### Caching (saves money!)\n\nTranscripts are cached locally by default. Repeat requests for the same video cost $0.\n\n```bash\n# First request: fetches from APIFY ($0.007)\npython3 scripts/fetch_transcript.py \"URL\"\n\n# Second request: uses cache (FREE!)\npython3 scripts/fetch_transcript.py \"URL\"\n# Output: [cached] Transcript for: VIDEO_ID\n\n# Bypass cache (force fresh fetch)\npython3 scripts/fetch_transcript.py \"URL\" --no-cache\n\n# View cache stats\npython3 scripts/fetch_transcript.py --cache-stats\n\n# Clear all cached transcripts\npython3 scripts/fetch_transcript.py --clear-cache\n```\n\nCache location: `/root/clawd/memory/transcript-cache/`\n\n### Batch Mode\n\nProcess multiple videos at once:\n\n```bash\n# Create a file with URLs (one per line)\ncat > urls.txt << EOF\nhttps://youtube.com/watch?v=VIDEO1\nhttps://youtu.be/VIDEO2\nhttps://youtube.com/watch?v=VIDEO3\nEOF\n\n# Process all URLs\npython3 scripts/fetch_transcript.py --batch urls.txt\n\n# Output: \n# [1/3] Fetching VIDEO1...\n# [2/3] [cached] VIDEO2\n# [3/3] Fetching VIDEO3...\n# Batch complete: 2 fetched, 1 cached, 0 failed\n# [Cost: ~$0.014 for 2 API call(s)]\n\n# Batch with JSON output to file\npython3 scripts/fetch_transcript.py --batch urls.txt --json --output all_transcripts.json\n```\n\n### Output Formats\n\n**Text (default):**\n```\nHello and welcome to this video.\nToday we're going to talk about...\n```\n\n**JSON (--json):**\n```json\n{\n  \"video_id\": \"dQw4w9WgXcQ\",\n  \"title\": \"Video Title\",\n  \"transcript\": [\n    {\"start\": 0.0, \"duration\": 2.5, \"text\": \"Hello and welcome\"},\n    {\"start\": 2.5, \"duration\": 3.0, \"text\": \"to this video\"}\n  ],\n  \"full_text\": \"Hello and welcome to this video...\"\n}\n```\n\n## Error Handling\n\nThe script handles common errors:\n- Invalid YouTube URL\n- Video has no transcript\n- API quota exceeded\n- Network errors\n\n## Metadata\n\n```yaml\nmetadata:\n  clawdbot:\n    emoji: \"📹\"\n    requires:\n      env: [\"APIFY_API_TOKEN\"]\n      bins: [\"python3\"]\n```\n\nFile v1.1.1:README.md\n\n# 📹 YouTube Transcript Fetcher (APIFY)\n\nFetch YouTube video transcripts from anywhere — even cloud servers where YouTube blocks direct access.\n\n## ✨ Features\n\n- Works from cloud IPs (AWS, GCP, VPS, etc.)\n- Bypasses YouTube bot detection via APIFY proxies\n- **Local caching** — repeat requests are FREE\n- **Batch mode** — process multiple videos at once\n- Text or JSON output with timestamps\n- Language preference support\n- Simple Python script, no SDK needed\n\n## 💰 Free Tier\n\nAPIFY offers **$5/month free credits** — that's approximately **714 videos per month** at $0.007 each!\n\nNo credit card required. [Sign up here](https://apify.com/)\n\n## 🚀 Quick Start\n\n```bash\n# 1. Set your API token\nexport APIFY_API_TOKEN=\"apify_api_YOUR_TOKEN\"\n\n# 2. Fetch a transcript\npython3 scripts/fetch_transcript.py \"https://youtube.com/watch?v=VIDEO_ID\"\n```\n\n## 📖 Documentation\n\nSee [SKILL.md](SKILL.md) for full documentation, setup instructions, and usage examples.\n\n## 🔗 Links\n\n- [APIFY Free Tier](https://apify.com/pricing) - $5/month free\n- [Get API Key](https://console.apify.com/account/integrations)\n- [YouTube Transcripts Actor](https://apify.com/karamelo/youtube-transcripts)\n\n## ⚙️ Requirements\n\n- Python 3.6+\n- `requests` library (`pip install requests`)\n- APIFY API token (free)\n\n## 📄 License\n\nMIT\n\nFile v1.1.1:_meta.json\n\n{\n  \"ownerId\": \"kn73gpe8xz2630jrknkb3ya96h7zb84h\",\n  \"slug\": \"youtube-apify-transcript\",\n  \"version\": \"1.1.1\",\n  \"publishedAt\": 1770800169256\n}\n\nFile v1.1.1:CHANGELOG.md\n\n# Changelog\n\n## [1.0.7] - 2026-02-04\n\n- Privacy cleanup: removed hardcoded paths and personal info from docs\n\nFile v1.1.1:package.json\n\n{\n  \"name\": \"@openclaw/youtube-apify-transcript\",\n  \"version\": \"1.1.1\",\n  \"description\": \"Fetch YouTube transcripts via APIFY API. Works from cloud IPs (Hetzner, AWS, etc.) by bypassing YouTube's bot detection. Free tier includes $5/month credits (~714 videos).\",\n  \"author\": \"robbyczgw-cla\",\n  \"license\": \"MIT\",\n  \"keywords\": [\n    \"openclaw\",\n    \"skill\",\n    \"youtube\",\n    \"transcript\",\n    \"apify\",\n    \"video\",\n    \"subtitles\",\n    \"captions\",\n    \"cloud-ip\",\n    \"free-tier\",\n    \"web-scraping\"\n  ],\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/robbyczgw-cla/youtube-apify-transcript.git\"\n  },\n  \"homepage\": \"https://clawhub.ai/robbyczgw-cla/youtube-apify-transcript\",\n  \"bugs\": {\n    \"url\": \"https://github.com/robbyczgw-cla/youtube-apify-transcript/issues\"\n  },\n  \"openclaw\": {\n    \"skill\": true,\n    \"triggers\": [\"youtube transcript\", \"get transcript\", \"video transcript\"],\n    \"capabilities\": [\n      \"transcript-extraction\",\n      \"cloud-ip-bypass\",\n      \"multi-language\"\n    ],\n    \"requirements\": {\n      \"bins\": [\"python3\"],\n      \"env\": {\n        \"APIFY_API_TOKEN\": \"required\"\n      }\n    }\n  },\n  \"files\": [\n    \"SKILL.md\",\n    \"README.md\",\n    \".env.example\",\n    \"scripts/\"\n  ]\n}","readmeExcerpt":"Skill: YouTube Apify Transcript Owner: robbyczgw-cla Summary: Fetch YouTube transcripts via APIFY API. Works from cloud IPs (Hetzner, AWS, etc.) by bypassing YouTube's bot detection. Free tier includes $5/month credits (~714 videos). No credit card required. Tags: latest:1.1.2 Version history: v1.1.2 | 2026-02-11T09:00:23.308Z | user Fix: SKILL.md cache path updated to match code. APIFY_API_TOKEN declared in registry","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"# Add to ~/.bashrc or ~/.zshrc\nexport APIFY_API_TOKEN=\"apify_api_YOUR_TOKEN_HERE\"\n\n# Or use .env file (never commit this!)\necho 'APIFY_API_TOKEN=apify_api_YOUR_TOKEN_HERE' >> .env"},{"language":"bash","snippet":"# Get transcript as text (uses cache by default)\npython3 scripts/fetch_transcript.py \"https://www.youtube.com/watch?v=VIDEO_ID\"\n\n# Short URL also works\npython3 scripts/fetch_transcript.py \"https://youtu.be/VIDEO_ID\""},{"language":"bash","snippet":"# Output to file\npython3 scripts/fetch_transcript.py \"URL\" --output transcript.txt\n\n# JSON format (includes timestamps)\npython3 scripts/fetch_transcript.py \"URL\" --json\n\n# Both: JSON to file\npython3 scripts/fetch_transcript.py \"URL\" --json --output transcript.json\n\n# Specify language preference\npython3 scripts/fetch_transcript.py \"URL\" --lang de"},{"language":"bash","snippet":"# First request: fetches from APIFY ($0.007)\npython3 scripts/fetch_transcript.py \"URL\"\n\n# Second request: uses cache (FREE!)\npython3 scripts/fetch_transcript.py \"URL\"\n# Output: [cached] Transcript for: VIDEO_ID\n\n# Bypass cache (force fresh fetch)\npython3 scripts/fetch_transcript.py \"URL\" --no-cache\n\n# View cache stats\npython3 scripts/fetch_transcript.py --cache-stats\n\n# Clear all cached transcripts\npython3 scripts/fetch_transcript.py --clear-cache"},{"language":"bash","snippet":"# Create a file with URLs (one per line)\ncat > urls.txt << EOF\nhttps://youtube.com/watch?v=VIDEO1\nhttps://youtu.be/VIDEO2\nhttps://youtube.com/watch?v=VIDEO3\nEOF\n\n# Process all URLs\npython3 scripts/fetch_transcript.py --batch urls.txt\n\n# Output: \n# [1/3] Fetching VIDEO1...\n# [2/3] [cached] VIDEO2\n# [3/3] Fetching VIDEO3...\n# Batch complete: 2 fetched, 1 cached, 0 failed\n# [Cost: ~$0.014 for 2 API call(s)]\n\n# Batch with JSON output to file\npython3 scripts/fetch_transcript.py --batch urls.txt --json --output all_transcripts.json"},{"language":"text","snippet":"Hello and welcome to this video.\nToday we're going to talk about..."}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: youtube-apify-transcript\nversion: 1.1.2\ndescription: Fetch YouTube transcripts via APIFY API. Works from cloud IPs (Hetzner, AWS, etc.) by bypassing YouTube's bot detection. Free tier includes $5/month credits (~714 videos). No credit card required.\ntags: [youtube, transcript, apify, video, subtitles, captions, cloud-ip, free-tier, web-scraping]\n---\n\n# youtube-apify-transcript\n\nFetch YouTube transcripts via APIFY API (works from cloud IPs, bypasses YouTube bot detection).\n\n## Why APIFY?\n\nYouTube blocks transcript requests from cloud IPs (AWS, GCP, etc.). APIFY runs the request through residential proxies, bypassing bot detection reliably.\n\n## Free Tier\n\n- **$5/month free credits** (~714 videos)\n- No credit card required\n- Perfect for personal use\n\n## Cost\n\n- **$0.007 per video** (less than 1 cent!)\n- Track usage at: https://console.apify.com/billing\n\n## Links\n\n- 🔗 [APIFY Pricing](https://apify.com/pricing)\n- 🔑 [Get API Key](https://console.apify.com/account/integrations)\n- 🎬 [YouTube Transcripts Actor](https://apify.com/karamelo/youtube-transcripts)\n\n## Setup\n\n1. Create free APIFY account: https://apify.com/\n2. Get your API token: https://console.apify.com/account/integrations\n3. Set environment variable:\n\n```bash\n# Add to ~/.bashrc or ~/.zshrc\nexport APIFY_API_TOKEN=\"apify_api_YOUR_TOKEN_HERE\"\n\n# Or use .env file (never commit this!)\necho 'APIFY_API_TOKEN=apify_api_YOUR_TOKEN_HERE' >> .env\n```\n\n## Usage\n\n### Basic Usage\n\n```bash\n# Get transcript as text (uses cache by default)\npython3 scripts/fetch_transcript.py \"https://www.youtube.com/watch?v=VIDEO_ID\"\n\n# Short URL also works\npython3 scripts/fetch_transcript.py \"https://youtu.be/VIDEO_ID\"\n```\n\n### Options\n\n```bash\n# Output to file\npython3 scripts/fetch_transcript.py \"URL\" --output transcript.txt\n\n# JSON format (includes timestamps)\npython3 scripts/fetch_transcript.py \"URL\" --json\n\n# Both: JSON to file\npython3 scripts/fetch_transcript.py \"URL\" --json --output transcript.json\n\n# Specify language preference\npython3 scripts/fetch_transcript.py \"URL\" --lang de\n```\n\n### Caching (saves money!)\n\nTranscripts are cached locally by default. Repeat requests for the same video cost $0.\n\n```bash\n# First request: fetches from APIFY ($0.007)\npython3 scripts/fetch_transcript.py \"URL\"\n\n# Second request: uses cache (FREE!)\npython3 scripts/fetch_transcript.py \"URL\"\n# Output: [cached] Transcript for: VIDEO_ID\n\n# Bypass cache (force fresh fetch)\npython3 scripts/fetch_transcript.py \"URL\" --no-cache\n\n# View cache stats\npython3 scripts/fetch_transcript.py --cache-stats\n\n# Clear all cached transcripts\npython3 scripts/fetch_transcript.py --clear-cache\n```\n\nCache location: `.cache/` in skill directory (override with `YT_TRANSCRIPT_CACHE_DIR` env var)\n\n### Batch Mode\n\nProcess multiple videos at once:\n\n```bash\n# Create a file with URLs (one per line)\ncat > urls.txt << EOF\nhttps://youtube.com/watch?v=VIDEO1\nhttps://youtu.be/VIDEO2\nhttps://youtube.com/watch?v=VIDEO3\nEOF\n\n# Process all URLs\npython3 scripts/fetch_"},{"path":"README.md","content":"# 📹 YouTube Transcript Fetcher (APIFY)\n\nFetch YouTube video transcripts from anywhere — even cloud servers where YouTube blocks direct access.\n\n## ✨ Features\n\n- Works from cloud IPs (AWS, GCP, VPS, etc.)\n- Bypasses YouTube bot detection via APIFY proxies\n- **Local caching** — repeat requests are FREE\n- **Batch mode** — process multiple videos at once\n- Text or JSON output with timestamps\n- Language preference support\n- Simple Python script, no SDK needed\n\n## 💰 Free Tier\n\nAPIFY offers **$5/month free credits** — that's approximately **714 videos per month** at $0.007 each!\n\nNo credit card required. [Sign up here](https://apify.com/)\n\n## 🚀 Quick Start\n\n```bash\n# 1. Set your API token\nexport APIFY_API_TOKEN=\"apify_api_YOUR_TOKEN\"\n\n# 2. Fetch a transcript\npython3 scripts/fetch_transcript.py \"https://youtube.com/watch?v=VIDEO_ID\"\n```\n\n## 📖 Documentation\n\nSee [SKILL.md](SKILL.md) for full documentation, setup instructions, and usage examples.\n\n## 🔗 Links\n\n- [APIFY Free Tier](https://apify.com/pricing) - $5/month free\n- [Get API Key](https://console.apify.com/account/integrations)\n- [YouTube Transcripts Actor](https://apify.com/karamelo/youtube-transcripts)\n\n## ⚙️ Requirements\n\n- Python 3.6+\n- `requests` library (`pip install requests`)\n- APIFY API token (free)\n\n## 📄 License\n\nMIT"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn73gpe8xz2630jrknkb3ya96h7zb84h\",\n  \"slug\": \"youtube-apify-transcript\",\n  \"version\": \"1.1.2\",\n  \"publishedAt\": 1770800423308\n}"},{"path":"CHANGELOG.md","content":"# Changelog\n\n## [1.0.7] - 2026-02-04\n\n- Privacy cleanup: removed hardcoded paths and personal info from docs"},{"path":"package.json","content":"{\n  \"name\": \"@openclaw/youtube-apify-transcript\",\n  \"version\": \"1.1.2\",\n  \"description\": \"Fetch YouTube transcripts via APIFY API. Works from cloud IPs (Hetzner, AWS, etc.) by bypassing YouTube's bot detection. Free tier includes $5/month credits (~714 videos).\",\n  \"author\": \"robbyczgw-cla\",\n  \"license\": \"MIT\",\n  \"keywords\": [\n    \"openclaw\",\n    \"skill\",\n    \"youtube\",\n    \"transcript\",\n    \"apify\",\n    \"video\",\n    \"subtitles\",\n    \"captions\",\n    \"cloud-ip\",\n    \"free-tier\",\n    \"web-scraping\"\n  ],\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/robbyczgw-cla/youtube-apify-transcript.git\"\n  },\n  \"homepage\": \"https://clawhub.ai/robbyczgw-cla/youtube-apify-transcript\",\n  \"bugs\": {\n    \"url\": \"https://github.com/robbyczgw-cla/youtube-apify-transcript/issues\"\n  },\n  \"openclaw\": {\n    \"skill\": true,\n    \"triggers\": [\n      \"youtube transcript\",\n      \"get transcript\",\n      \"video transcript\"\n    ],\n    \"capabilities\": [\n      \"transcript-extraction\",\n      \"cloud-ip-bypass\",\n      \"multi-language\"\n    ],\n    \"requirements\": {\n      \"bins\": [\n        \"python3\"\n      ],\n      \"env\": {\n        \"APIFY_API_TOKEN\": \"required\"\n      }\n    }\n  },\n  \"files\": [\n    \"SKILL.md\",\n    \"README.md\",\n    \".env.example\",\n    \"scripts/\"\n  ]\n}"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Fetch YouTube transcripts via APIFY API. Works from cloud IPs (Hetzner, AWS, etc.) by bypassing YouTube's bot detection. Free tier includes $5/month credits (~714 videos). No credit card required. Skill: YouTube Apify Transcript Owner: robbyczgw-cla Summary: Fetch YouTube transcripts via APIFY API. Works from cloud IPs (Hetzner, AWS, etc.) by bypassing YouTube's bot detection. Free tier includes $5/month credits (~714 videos). No credit card required. Tags: latest:1.1.2 Version history: v1.1.2 | 2026-02-11T09:00:23.308Z | user Fix: SKILL.md cache path updated to match code. APIFY_API_TOKEN declared in registry","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":995,"uniquenessScore":50,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-09T13:01:35.137Z","emptyReason":null},"items":[{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-10T18:48:31.762Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}