A tool that automatically identifies YouTube videos from your "read" list in NetNewsWire (RSS Reader) for the current day, extracts their transcripts, and saves them as text files.
- NetNewsWire Integration: Reads recent articles directly from the local SQLite database.
- YouTube Filtering: Selects only YouTube links from your articles (excludes Shorts).
- Transcript Extraction: Uses
yt-dlpto download auto-generated captions (default: English). - Text Conversion: Converts VTT subtitle formats into readable plain text.
- Auto-Save: Saves the extracted transcripts to your
~/Downloadsfolder with the filename format[Video_Title]_transcript.txt.
To run this project, you need the following tools installed:
-
Bun: JavaScript/TypeScript runtime
curl -fsSL https://bun.sh/install | bash -
yt-dlp: YouTube download tool
brew install yt-dlp
(If you don't use Homebrew, check the yt-dlp official repository)
-
NetNewsWire (macOS): RSS Reader App
- This script is hardcoded to look for the NetNewsWire iCloud sync database path on macOS (
~/Library/Containers/...).
- This script is hardcoded to look for the NetNewsWire iCloud sync database path on macOS (
-
Clone the repository and install dependencies
git clone <repository-url> cd summarize-article bun install
-
Run the script
bun start
The script looks for yt-dlp in your system PATH by default. If it cannot be found, you can specify the path manually using the YT_DLP_PATH environment variable.
YT_DLP_PATH=/usr/local/bin/yt-dlp bun startsrc/article.ts: Connects to NetNewsWire's SQLite DB and queries articles published today (adjusted for KST +9h).src/index.ts: Filters the fetched articles for YouTube URLs and iterates through them.src/fetch-youtube-script.ts: Executesyt-dlpas a child process to download subtitles, then cleans up timestamps and tags using regex to produce plain text.- Result: The final text file is saved to the user's Downloads folder.
- This tool is designed for macOS environments (due to file paths).
- NetNewsWire must be using iCloud Sync for the database to be found at the default path.
- Videos without captions/subtitles cannot be processed.