This script builds a single compilation video from all Y Combinator companies' launch videos for a given batch (for example, Fall 2025 at https://www.ycombinator.com/companies?batch=Fall%202025).
For each company in the batch, it:
- Scrapes the YC companies page to find the company entry and logo.
- Follows the company profile page to discover the YC launch post.
- Extracts the first YouTube video URL from the launch post.
- Downloads the video in the best available quality using
yt-dlp. - Creates a short title card video showing the company name and logo.
- Normalizes all clips and concatenates them into a single video via
ffmpeg. - Emits a
timestamps.txtfile for easy YouTube chapter timestamps.
- Python 3.9+ recommended.
ffmpegandffprobeinstalled and available on yourPATH.- Python packages (see
requirements.txt):requestsbeautifulsoup4yt-dlpPillow
On macOS with Homebrew:
brew install ffmpeg
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txtFrom the project directory:
- Download all launch videos for a batch
python yc_video_assembler.py download \
--batch "Fall 2025" \
--workdir fall_2025_work \
--max-companies 5 # optional, for testingThis discovers launch posts, extracts the first YouTube video per company, downloads each video into fall_2025_work/downloads/, and writes metadata (including company tagline + YC tags) to fall_2025_work/companies.json.
- Assemble the compilation from downloaded assets
python yc_video_assembler.py assemble \
--workdir fall_2025_work \
--output fall_2025_compilation.mp4This step creates title cards, normalizes every clip, concatenates the sequence via ffmpeg, and emits:
- Final video at
--output. segments.json(start/end metadata) andtimestamps.txt(ready for YouTube chapters) inside the workdir.- Refined title cards with the startup name, tagline, optional logo, and YC tags information stored in
companies.json.
Both commands accept --max-companies to limit the number of startups processed, which is handy for quick dry runs.
- This script depends on the current HTML structure of YC's companies and launch pages. If YC changes the layout, you may need to adjust the scraping logic.
- Be mindful of YouTube's Terms of Service and the rights implications of downloading and re-uploading videos.