Feed Score#
This score defines automated tasks for the feed broadcast system on
feed.aesthetic.computer (SQLite on silo).
Philosophy#
The feed is a living thing. Dynamic playlists reflect what people are actually watching and making — they should stay fresh. Static playlists (Colors, Chords, Chats) are fixed and don't change. Channels are the containers that hold everything together.
Signal: playlists that accurately reflect current activity. Noise: updating when nothing has changed.
Architecture#
feed.aesthetic.computer (Caddy HTTPS + landing page)
-> localhost:8787 (dp1-feed, SQLite)
8 channels, ~15 playlists:
KidLisp [Top 100, Top @jeffrey, Top @fifi, Colors]
Paintings [Recent, Top @jeffrey, Top @fifi]
Mugs [Recent]
Clocks [Top, Recent]
Moods [Recent, @jeffrey]
Chats [chat + laer-klokken] (static)
Instruments [Chords] (static)
Tapes [Recent]
Backend: silo.aesthetic.computer, systemd service dp1-feed
Storage: /opt/dp1-feed/data/dp1-feed.db (SQLite, WAL mode)
State: /opt/feed-updater/feed-state.json (tracks channel/playlist IDs)
Update script: feed/silo-update-feed.mjs (runs on silo)
Landing page: /opt/dp1-feed/landing-page.html (served by Caddy at /)
Current Tasks#
Daily (automated via systemd timer)#
- Refresh all channels: Query MongoDB for each channel's collections,
regenerate dynamic playlists, update channels, clean up old playlists.
Static playlists (Colors, Chords, Chats) are preserved via state file.
Script:
/opt/feed-updater/silo-update-feed.mjson silo Timer:feed-update.timeron silo (runs daily at 06:00 UTC)
On Demand (run manually)#
- Update one channel:
node silo-update-feed.mjs kidlisp - Update specific channels:
node silo-update-feed.mjs paintings clocks - Full rebuild: Delete everything and regenerate from scratch
Script:
fish feed/build-feed.fish(KidLisp channel only)
Future Ideas#
- Weekly "Rising" playlist: pieces gaining hits fastest this week
- "New This Week" playlist: most recent KidLisp pieces
- Seasonal rotation: swap out channel playlist order by season
- Scales playlist for Instruments channel
- Drum Patterns playlist for Instruments channel
Sacred Ground#
- Never delete channels without rebuilding them immediately
- Never modify
dp1-feed/submodule files from this score - The API secret lives in vault only — never hardcode it
- Colors and Chords playlists are static — don't regenerate them (wastes IDs and breaks external references)
- The
feed-state.jsonfile is the source of truth for channel/playlist mapping
Data Sources#
| Channel | MongoDB Collection | Sort | Key Fields |
|---|---|---|---|
| KidLisp | kidlisp |
hits desc | code, hits, user |
| Paintings | paintings |
when desc | code, user, nuked |
| Mugs | products |
createdAt desc | code, variant, preview |
| Clocks | clocks |
hits desc / when desc | code, source, hits |
| Moods | moods |
when desc | mood, handle, deleted |
| Tapes | tapes |
when desc | code, slug, nuked |
IDs#
Feed URL: https://feed.aesthetic.computer/api/v1
Silo IP: 64.23.151.169