/install youtube-to-ebook
YouTube to Ebook
Transform YouTube videos from your favorite channels into well-written magazine-style articles, delivered as an EPUB ebook.
What This Skill Does
- Fetches latest videos from YouTube channels (filtering out Shorts)
- Extracts transcripts from those videos
- Transforms transcripts into polished articles using Claude
- Packages articles into an EPUB ebook for reading on any device
Quick Start
Ask: "Set up YouTube to ebook for me"
I'll guide you through:
- Creating a project folder
- Setting up YouTube API access
- Configuring your favorite channels
- Generating your first ebook
Requirements
- Python 3.8+
- YouTube Data API key (free from Google Cloud Console)
- Anthropic API key (for Claude)
Commands
| Command | Description |
|---|---|
python main.py |
Generate ebook from latest videos |
python main.py --channels |
Edit channel list |
python dashboard.py |
Launch web dashboard |
Key Files
youtube-newsletter/
├── get_videos.py # Fetch latest videos
├── get_transcripts.py # Extract transcripts
├── write_articles.py # Transform to articles
├── send_email.py # Create EPUB & send
├── main.py # Run full pipeline
├── channels.txt # Your channel list
└── .env # API keys
Known Pitfalls & Solutions
1. YouTube Shorts Detection
Problem: Filtering by duration doesn't work—some Shorts are longer than 60 seconds.
Solution: Check if the /shorts/ URL resolves:
def is_youtube_short(video_id):
shorts_url = f"https://www.youtube.com/shorts/{video_id}"
response = requests.head(shorts_url, allow_redirects=True, timeout=5)
return "/shorts/" in response.url
2. Videos Not in Chronological Order
Problem: YouTube Search API doesn't return truly chronological results.
Solution: Use the channel's uploads playlist via playlistItems API:
# Get uploads playlist ID from channel
channel_info = youtube.channels().list(
part="contentDetails",
forHandle=handle
).execute()
uploads_playlist_id = channel_info["items"][0]["contentDetails"]["relatedPlaylists"]["uploads"]
# Fetch from uploads playlist (always chronological)
youtube.playlistItems().list(
part="snippet",
playlistId=uploads_playlist_id,
maxResults=15
).execute()
3. Transcript API Syntax
Problem: YouTubeTranscriptApi.get_transcript() no longer works.
Solution: Use instance method:
from youtube_transcript_api import YouTubeTranscriptApi
ytt_api = YouTubeTranscriptApi()
transcript = ytt_api.fetch(video_id)
4. Rate Limiting on Transcripts
Problem: Fetching many transcripts quickly triggers rate limits.
Solution: Add 2-second delays between requests:
import time
for video in videos:
transcript = get_transcript(video["video_id"])
time.sleep(2)
5. Transcript Accuracy (Names, Terms)
Problem: Auto-transcripts misspell names and technical terms.
Solution: Include video title and description in Claude's context—these usually have correct spellings.
6. Cloud Automation Blocked
Problem: GitHub Actions and cloud servers are blocked by YouTube for transcript fetching.
Solution: Run automation locally on your Mac using launchd:
\x3C!-- ~/Library/LaunchAgents/com.youtube.ebook.plist -->
\x3Cplist version="1.0">
\x3Cdict>
\x3Ckey>Label\x3C/key>
\x3Cstring>com.youtube.ebook\x3C/string>
\x3Ckey>ProgramArguments\x3C/key>
\x3Carray>
\x3Cstring>/usr/bin/python3\x3C/string>
\x3Cstring>/path/to/main.py\x3C/string>
\x3C/array>
\x3Ckey>StartCalendarInterval\x3C/key>
\x3Cdict>
\x3Ckey>Weekday\x3C/key>
\x3Cinteger>3\x3C/integer>
\x3Ckey>Hour\x3C/key>
\x3Cinteger>7\x3C/integer>
\x3C/dict>
\x3C/dict>
\x3C/plist>
Customization
Writing Style
Edit the prompt in write_articles.py to change article tone:
- Magazine style (default)
- Academic summary
- Casual blog post
- Technical documentation
Email Delivery (Optional)
Add Gmail credentials to .env to receive ebooks via email:
[email protected]
GMAIL_APP_PASSWORD=your-app-password
Workflow
┌─────────────┐ ┌──────────────┐ ┌───────────────┐ ┌────────────┐
│ Fetch Videos│───▶│Get Transcripts│───▶│Write Articles │───▶│Create EPUB │
│ (YouTube API)│ │(Transcript API)│ │ (Claude AI) │ │ (ebooklib) │
└─────────────┘ └──────────────┘ └───────────────┘ └────────────┘
Example Output
The generated EPUB contains:
- Table of contents with all articles
- Clean, readable formatting
- Original video links for reference
- Mobile-friendly styling
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install youtube-to-ebook - 安装完成后,直接呼叫该 Skill 的名称或使用
/youtube-to-ebook触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
Youtube To Ebook 是什么?
Transform YouTube videos into beautifully formatted ebook articles with transcripts. 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 37 次。
如何安装 Youtube To Ebook?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install youtube-to-ebook」即可一键安装,无需额外配置。
Youtube To Ebook 是免费的吗?
是的,Youtube To Ebook 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。
Youtube To Ebook 支持哪些平台?
Youtube To Ebook 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。
谁开发了 Youtube To Ebook?
由 cclam5(@cclam5)开发并维护,当前版本 v1.0.0。