- Introduce .gitignore to exclude output directory - Add IntelliJ/PyCharm project files under .idea/ - Create CLAUDE.md for Claude Code guidance on the project - Add scripts/nerdletter_numbers_station_final.sh as the refined Lincolnshire Poacher style generator - Update sample output MP4 in output/
2.4 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Project Overview
Nerdletter Cypher is a collection of bash scripts that generate "numbers station" style MP4 videos for the Nerdletter newsletter. Each video displays a ciphertext message with retro green-on-black terminal aesthetics and a synthesized voice reading the message aloud, mimicking cold-war shortwave numbers stations (specifically the Lincolnshire Poacher style).
Subscribers use a "Day Book" (a one-time pad or codebook) to decode the ciphertext messages.
Script Variants
All scripts live in scripts/ and share a common interface:
./script.sh "CIPHERTEXT GROUPS" PAGE_NUMBER [EPISODE_NUMBER]
# Example: ./script.sh "HLXIB JACJP ERXHN EFM" 001 01
- nerdletter_numbers_station.sh — Original basic version (espeak-ng + ffmpeg, single pass)
- nerdletter_numbers_station_linux.sh — Linux variant with letter-by-letter pronunciation
- nerdletter_numbers_station_mac.sh / _mac_old.sh — macOS variants (uses
Courier Newfont for Homebrew ffmpeg compatibility) - nerdletter_numbers_station_poacher.sh through poacher10.sh — Iterative refinements adding: Lincolnshire Poacher intro music, shortwave static mixing, letter-by-letter speech with inter-group pauses, longer durations, and audio layering
The poacher series represents progressive iterations. The highest-numbered poacher script (poacher10.sh) is the most refined version with letter-by-letter speech, pauses between cipher groups, and full audio mixing (poacher intro + static + voice).
Dependencies
- espeak-ng — text-to-speech synthesis (voice:
en+f3, female) - ffmpeg — video generation, audio mixing, and final MP4 encoding
- wget — (poacher scripts only) for downloading the Lincolnshire Poacher intro audio from archive.org
Assets
assets/poacher_intro.wav— Lincolnshire Poacher music intro clipassets/static.wav— Shortwave radio static noiseoutput/— Generated MP4 files land here (though some scripts output to the current working directory)
Key Parameters Across Scripts
espeak-ng flags control the voice character:
-sspeech rate (lower = slower/more dramatic, ranges from 74-120 across variants)-kcapitals emphasis-aamplitude/volume-ven+f3English female voice variant 3