modules/programs/agents/shared/skills/tubearchivist/SKILL.md
Browse, search, and manage channels and downloads in my self-hosted TubeArchivist YouTube archive. Use when the user asks about TubeArchivist, mentions YouTube archiving, asks to subscribe/unsubscribe to a channel, check what's downloading, list indexed videos or channels, inspect Celery task status, or trigger a search.
npx skillsauth add MichaelVessia/nixos-config tubearchivistInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Manage my self-hosted TubeArchivist instance: subscribe to YouTube channels,
inspect what's indexed, watch the download queue, and check Celery worker
state. Lives at http://192.168.1.56:8000 (LXC 120). Storage is on the NAS
under /mnt/synology-media/youtube, bind-mounted as /mnt/media/youtube in
the LXC and exposed as /youtube to the TubeArchivist app.
Credentials are exported into the shell by sops-nix (see
modules/programs/shell.nix):
TUBEARCHIVIST_URL — base URL (no trailing slash)TUBEARCHIVIST_USERNAME — admin usernameTUBEARCHIVIST_PASSWORD — admin passwordThe tubearchivist CLI reports a JSON error envelope when they are missing.
TubeArchivist uses Django session auth, not JWT or API keys.
POST /api/user/login/ with {"username": "...", "password": "..."} —
server responds HTTP 204 and sets sessionid + csrftoken cookies.GET calls need only the cookies (-b jar).POST, PUT, PATCH, DELETE) additionally need:
X-CSRFToken: <csrftoken cookie value>Referer: <TUBEARCHIVIST_URL>/The CLI handles login, cookies, and CSRF headers for supported commands.
Use the installed tubearchivist CLI for common operations. It always emits a
single JSON envelope with ok, command, result or error, and
next_actions. scripts/tubearchivist.sh remains as a compatibility shim for
older workflows.
tubearchivist status # health + config + stats
tubearchivist channels --limit 50 # subscribed channels
tubearchivist channel-info <channel_id> # one channel detail
tubearchivist subscribe "<url-or-id>" # queues Celery resolution
tubearchivist unsubscribe <channel_id> --confirm-unsubscribe
tubearchivist videos --limit 25 # recent indexed videos
tubearchivist video-info <youtube_id> # one video detail
tubearchivist downloads --limit 25 # pending queue
tubearchivist playlists --limit 25 # indexed playlists
tubearchivist tasks --limit 25 # Celery task history
tubearchivist search <query> --limit 25 # cross-index search
For anything not covered, call the API directly after logging in — see
references/api-endpoints.md and references/quick-reference.md.
https://www.youtube.com/@ExampleChannel) or the channel ID (UC...).tubearchivist subscribe "<arg>" — this queues a Celery
subscribe_to task. TA does the resolution.channels immediately. Celery typically
takes 30-60 seconds. Poll tasks to confirm the subscribe_to task
went SUCCESS before reporting back to the user.Use status for a one-shot overview (health, version, totals). Drop to
tasks to see what Celery is up to. downloads lists items the worker has
queued for yt-dlp.
TubeArchivist writes downloaded videos to /youtube inside the LXC, which
is a symlink to /mnt/media/youtube (the NAS bind mount). On the host
that's /mnt/synology-media/youtube. One folder per channel:
/mnt/synology-media/youtube/<Channel Name>/...
/mnt/synology-media/youtube/<Another Channel>/...
Always confirm with the user before:
tubearchivist unsubscribe <channel_id> --confirm-unsubscribe — drops the channel and stops future syncs.DELETE against /api/video/, /api/channel/, or
/api/playlist/ — these remove indexed data./api/appsettings/* (snapshots, backups,
rescan-filesystem).references/api-endpoints.md — endpoint reference and the full schema
fetch (/api/schema/)references/quick-reference.md — copy-paste curl recipes (login + jar,
list channels, subscribe with CSRF, view tasks, queue)references/troubleshooting.md — auth, CSRF, yt-dlp resolution, and
connection error fixes/api/ (no v1/v2 prefix). The schema is
/api/schema/ (OpenAPI 3 YAML), human docs at /api/docs/.GET /api/health/ returns "OK" (handled by nginx in
front of the Django app).TUBEARCHIVIST_URL is unreachable,
surface that to the user rather than guessing.development
Restate the last message in plain human language, with no jargon.
testing
Fan out a batch of work items into one PR each via isolated worktree agents, review every PR before it opens, then babysit all PRs through green CI and review feedback. Use when the user wants to fan out PRs, dispatch parallel PR agents over a list of items, or run a batch of independent changes as separate PRs.
development
Dispatch user-visible coding or research agents through Herdr with Codex-Desktop-like thread ergonomics. Use when the user asks to use Herdr to spawn, dispatch, fan out, inspect, follow up with, or monitor agent workspaces/threads.
development
Generate self-contained HTML visualizations with Plannotator theming. Use for implementation plans, PR explainers, architecture diagrams, data tables, slide decks, and any visual explanation of technical concepts. Plans and PR explainers follow Plannotator's prescriptive approach; all other visual content delegates to nicobailon/visual-explainer.