zarazhangrui/youtube-to-ebookGit

YouTube to ebook

Turn selected video content into an EPUB for offline reading.

Before you start

Inputs: Source material, audience and output format

  1. Check the original documentation for supported AI tools, models and runtime dependencies.
  2. Open the repository and follow the author’s installation instructions. Model APIs or external services may require separate accounts.
  3. Try your own material, then review the facts, layout and output files.
Read the original installation guide ↗

License: Not specified. Check the repository’s usage terms.

Source snapshot: 2026-09-15. README ↗

Try a task like this

Use YouTube to ebook with my own source material. Confirm the required inputs and available tools, then produce an editable result.

YouTube to Ebook

Transform YouTube videos from your favorite channels into beautifully formatted EPUB ebooks.

Features

  • Fetches latest videos from YouTube channels (automatically filters out Shorts)
  • Extracts transcripts from videos
  • Uses Claude AI to transform transcripts into polished magazine-style articles
  • Generates EPUB ebooks readable on any device
  • Optional: Email delivery with ebook attachment
  • Optional: Web dashboard for easy management

Quick Start

  1. Clone and install:

    git clone https://github.com/YOUR_USERNAME/youtube-to-ebook.git
    cd youtube-to-ebook
    pip install -r requirements.txt
    
  2. Set up API keys:

    cp .env.example .env
    # Edit .env with your keys
    
  3. Add your channels:

    # Edit channels.txt with YouTube channel handles
    @mkbhd
    @veritasium
    @3blue1brown
    
  4. Generate your ebook:

    python main.py
    

Getting API Keys

YouTube Data API (Free)

  1. Go to Google Cloud Console
  2. Create a new project
  3. Enable "YouTube Data API v3"
  4. Create credentials → API Key
  5. Copy to .env

Anthropic API

  1. Go to Anthropic Console
  2. Create an API key
  3. Copy to .env

Web Dashboard

Launch a friendly web interface:

pip install streamlit
python -m streamlit run dashboard.py

Automation (Mac)

Run automatically every week:

# Copy the plist to LaunchAgents
cp com.youtube.newsletter.plist ~/Library/LaunchAgents/

# Load it
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.youtube.newsletter.plist

Troubleshooting

"ModuleNotFoundError" when running automation

Your Mac may have multiple Python installations. The automation scripts use python3, but your packages might be installed in a different Python.

Fix: Find your Python path and update the scripts:

# Find where your Python is
which python3

# Update run_newsletter.sh and dashboard.py with the full path
# Example: /Library/Frameworks/Python.framework/Versions/3.11/bin/python3

Known Issues & Solutions

This project documents several YouTube API quirks:

ProblemSolution
Shorts not filtered by durationCheck /shorts/ URL pattern
Search API not chronologicalUse uploads playlist instead
Transcript API syntax changedUse instance method ytt_api.fetch()
Cloud servers blockedRun locally, not GitHub Actions
Names misspelled in transcriptsInclude video description in Claude context
Articles truncated mid-sentenceIncrease max_tokens in write_articles.py

See SKILL.md for detailed explanations.

Project Structure

├── main.py              # Run the full pipeline
├── get_videos.py        # Fetch videos from YouTube
├── get_transcripts.py   # Extract video transcripts
├── write_articles.py    # Transform to articles with Claude
├── send_email.py        # Create EPUB & send email
├── dashboard.py         # Streamlit web dashboard
├── video_tracker.py     # Track processed videos
├── channels.txt         # Your channel list
├── .env                 # Your API keys (not committed)
└── newsletters/         # Archive of generated ebooks

License

MIT - Use freely, modify as needed.


Built with Claude AI