fluxtube(1)User Commandsfluxtube(1)

Name

FluxTube

A serverless sync job that bridges Miniflux with YouTube playlists. Reads unread RSS entries from your Miniflux categories on a cron tick, adds them to mapped playlists, and marks them read after you watch and remove them on YouTube.

wrangler tail · fluxtube-synchealthy
  1. 14:30:00tickcron fired · 2 sync pairs
  2. 14:30:00pass1fetch unread · category=tech
  3. 14:30:01pass1+playlistItems.insert vid=dQw4 → PL_tech
  4. 14:30:01d1INSERT tracked row (id 218)
  5. 14:30:02pass2reconcile · 7 tracked rows
  6. 14:30:02pass2removed-by-user vid=8x9k → mark read
  7. 14:30:03d1DELETE tracked row (id 204)
  8. 14:30:03ok+1 added · 1 read · 0 quota errors
next tick29:47
added today+14
marked read9
interval30m

Description

One run, two passes. Pass 1 only adds. Pass 2 only removes. Each pass is idempotent — re-running mid-failure is safe.

Pass 1 · insert

For each unread Miniflux entry whose URL points at a YouTube video, callplaylistItems.insert on the mapped playlist and write a tracked-row to D1. The D1 row keeps a per-entry ledger so Pass 2 knows what's already on the playlist.

Pass 2 · reconcile

For each row in D1, ask YouTube whether the video is still on the playlist. Ifyou removed the video (watched and dismissed), mark the Miniflux entry read and delete the D1 row. No video deletion is ever issued from this side.

Configuration

One file. A list of category → playlist pairs. Reload by re-deploying the Worker.

# category → playlist pairs (toml)
[[sync]]
category  = "tech"
playlist  = "PL_tech_watch_later"
[[sync]]
category  = "cycling"
playlist  = "PL_rides"

Observability

A silent process needs loud logs. Four surfaces, layered: console, dead-man's-switch, structured shipping, metrics.

stdout JSON

always on · wrangler tail

Healthchecks.io

cron dead-man's switch

Grafana Loki

structured log shipping

Grafana OTLP

11 gauges per run

See also