| name | creator-hq |
| description | Build and serve the Creator HQ dashboard - a shared home screen for a YouTube creator (and partner) showing a weekly checkup (did we create/release our target videos this week?), published videos with live stats auto-pulled from YouTube, channel KPIs, and a hand-edited production pipeline (idea to ready). Self-contained HTML, servable to an iPad over the LAN from a Raspberry Pi. Triggers on: creator hq, creator dashboard, content dashboard, youtube dashboard, show my channel dashboard, are we on track this week, did we release our videos, content home screen, studio dashboard. |
Build the Creator HQ dashboard: one self-contained dashboard.html that answers "are we on track this week?" at a glance, shows what's published and how it's doing, and tracks how many videos are in the pipeline. Designed as a shared home screen for a creator and a partner, viewable on a wall/desk iPad served from a Raspberry Pi over the local wifi.
How it works (no app, no API key, no secrets)
Three small pieces, all in this skill folder:
fetch_stats.py - pulls channel meta + recent uploads via yt-dlp (no API key), downloads thumbnails, writes a snapshot to ~/creator-hq/data/youtube.json.
dashboard.py - pure renderer. Reads the config + the snapshot + the hand-edited pipeline, computes the weekly checkup, and bakes a fully self-contained ~/creator-hq/dashboard.html (thumbnails inlined as data URIs - works offline, passes the Artifact CSP).
serve.py - serves ~/creator-hq to the LAN so the iPad can open it; can auto-rebuild on an interval.
Personal data lives outside this repo in ~/creator-hq/ (config, pipeline, snapshot, built HTML). Nothing sensitive is committed - the channel handle and goals live in ~/creator-hq/config.json, which is created from config.example.json.
First-time setup
mkdir -p ~/creator-hq
- Copy
config.example.json to ~/creator-hq/config.json and set the creator handle (e.g. @YourChannel) and weekly goals. Add a second creator object to creators later to cover a partner's channel.
- Copy
pipeline.example.json to ~/creator-hq/pipeline.json and replace the example rows with real ones (or start empty: {"videos": []}).
Rebuild flow
python3 ~/.claude/skills/creator-hq/fetch_stats.py
python3 ~/.claude/skills/creator-hq/dashboard.py
open ~/creator-hq/dashboard.html
fetch_stats.py makes ~3 yt-dlp calls per creator (channel meta, total count, recent N with full metadata) and caches thumbnails, so a rebuild is quick after the first run.
Serving it to the iPad (Raspberry Pi kiosk)
python3 ~/.claude/skills/creator-hq/serve.py --rebuild 30
Prints a http://<pi-ip>:8080/ URL - open that in the iPad's browser (or your existing kiosk). --rebuild 30 re-pulls YouTube + re-renders every 30 minutes; the served page also self-refreshes every 15 min via a meta tag, so the display stays current on its own. To run it unattended, add serve.py to the Pi's existing kiosk/startup (systemd service or @reboot cron).
What's on the page (Command Center layout)
- Weekly checkup band - three big cards: videos created this week (from the pipeline's
filmed dates) vs goal, videos released this week (from real YouTube upload dates) vs goal, and ready to publish (pipeline items in the ready stage). Green = goal met, amber = partial, red = none yet.
- KPI row - Subscribers, Total videos, Avg views (last N uploads) with a sparkline, and Top recent video.
- Recent uploads - thumbnail cards with live view counts, likes, publish date, and a duration/SHORT badge. Each links to the video.
- Pipeline bar - idea -> scripted -> filmed -> editing -> ready with a count per stage; the ready stage is highlighted green.
The pipeline file
~/creator-hq/pipeline.json is hand-edited (by you or your partner). Each row:
{ "title": "...", "stage": "editing", "created": "2026-07-07", "filmed": "2026-07-09", "notes": "" }
stage: one of idea, scripted, filmed, editing, ready.
filmed date drives the "created this week" checkup (a video "exists" once filmed). Falls back to created if filmed is null.
- Delete a row once the video is published - it then shows up automatically from YouTube.
When the user says "we filmed X" / "move X to editing" / "X is ready", update pipeline.json for them, then rebuild.
Config / targets
~/creator-hq/config.json:
creators: list of { name, handle } (handle like @YourChannel). One for now; add more to track a partner.
goals.create_per_week / goals.release_per_week: the weekly checkup targets.
week_start: monday (default) or sunday.
recent_count: how many recent uploads to pull (default 15).
Notes
- Everything auto-pulled is real (yt-dlp), so no manual stat entry. The only hand-maintained file is the pipeline.
- The built HTML is fully self-contained (offline-safe, Artifact-safe). To preview it on the iPad instantly via claude.ai, publish
~/creator-hq/dashboard.artifact.html as an Artifact.
- Multi-creator (a partner's channel side by side) is a future extension - the data model is already a list; v1 renders the first creator.