Monitor YouTube channels using RSS feeds, and add new videos to a collection in Raindrop.io.
The application runs in a loop, checking for new videos every X minutes (frequency). Each run will add new videos uploaded since the last run (the cache file contains video IDs from the previous run).
- Monitor multiple YouTube channels
- Add new videos to a Raindrop.io collection
- Configurable check frequency
- Caching of previously processed videos
- Docker
- Docker Compose
- Bun (JavaScript runtime; drop-in replacement for Node.js)
- Raindrop.io account
git clone https://github.com/thevops/youtube-tracker
cd youtube-tracker
cp config/_template.yaml config/production.yaml
# Edit config/production.yaml with your preferred settings
raindrop_token
- how to create a token?raindrop_collection_id
- how to find a collection ID?
# Replace the URL with the channel URL
curl -s https://www.youtube.com/@DevOpsToolkit | grep -oP '(?<=/channel/)[\w-]+' | sort | uniq
docker compose build
docker compose up -d
Note
Public image is available at https://github.com/thevops/youtube-tracker/pkgs/container/youtube-tracker
The configuration file is located at config/production.yaml
. Here is an example configuration:
log_level: info
frequency: 30 # minutes
raindrop_token: "your_raindrop_token"
raindrop_collection_id: "your_collection_id"
cache_file_path: "/data/cache.json"
feeds:
- name: DevOpsToolkit
channel_id: UCfz8x0lVzJpb_dgWm9kPVrw
- name: Mateusz Chrobok
channel_id: UCTTZqMWBvLsUYqYwKTdjvkw
# Add more channels as needed
To start the application for local development:
bun src/index.ts config/production.yaml
To run a single script:
bun <script_name>
./src/youtube.ts file can be executed separately
to test the YouTube functionality.
When running the script in this way, the configuration file is not required.
For more details, see the script's if (import.meta.main) {}
block.
To build the Docker image:
docker buildx build --platform linux/arm64 -t local/youtube-tracker .
To format the code using Prettier:
bun x prettier --write .
This project is licensed under the MIT License.