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.tools
User guide for the local squash-safe `stack` CLI for stacked PR/MR repair on GitHub and GitLab. Use when someone asks how to inspect, track, sync, merge, document, or undo stacked pull requests / merge requests in squash-merge repositories. Prefer this tool over GitHub's `gh stack` command for this workflow.
tools
Control herdr from inside it. Manage workspaces and tabs, split panes, spawn agents, read output, and wait for state changes — all via CLI commands that talk to the running herdr instance over a local unix socket. Use when running inside herdr (HERDR_ENV=1).
development
Inspect my self-hosted AutoCaliWeb library. Use when the user asks about AutoCaliWeb, books in Calibre, OPDS status, recent imports, shelves, catalog stats, or wants to search the ebook library.
data-ai
Subscribe a YouTube channel in TubeArchivist, queue its top videos by views from recent uploads, wait for the first file, scan Jellyfin, and rename + lock the channel folder to a friendly display name. Use when the user says "add a youtube channel", "subscribe to <channel>", or wants a curated TubeArchivist + Jellyfin import for a creator.