Agent skill

Peertube

by magnus919 in magnus919/agent-skills

Browse PeerTube federated video from the terminal — instance stats, latest videos, video detail, comment threads, channels, accounts, instance-local search, and OAuth2 login with per-instance token…

MITAuto-check passedBackend & APIs

Install Peertube

skills CLI
$ npx skills add magnus919/agent-skills --skill peertube -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install magnus919/agent-skills peertube --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/magnus919/agent-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/peertube .claude/skills/peertube && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
peertube
GitHub stars
115
Token cost
~3.1k tokens
SKILL.md length
1,028 words
Files
10 (incl. scripts, references)
Skills in repo
131
Repo updated
First seen
Licence
MIT

At a glance

Browse PeerTube federated video from the terminal — instance stats, latest videos, video detail, comment threads, channels, accounts, instance-local search, and OAuth2 login with per-instance token…

  • Works in 3 steps: Choose the instance to talk to. Every… → Nothing else is required to browse:… → (Optional) Log in only for your own…
  • The user mentions PeerTube
  • SKILL.md covers Setup, Essential Commands, Global flags and Pipeline recipes, plus 6 more sections
  • Runs Python scripts from its folder; calls jq; reaches sepiasearch.org and tilvids.com

What it does

Peertube is an agent skill from magnus919/agent-skills. Browse PeerTube federated video from the terminal — instance stats, latest videos, video detail, comment threads, channels, accounts, instance-local search, and OAuth2 login with per-instance token persistence. Set PEERTUBESERVER to any instance; point it at sepiasearch.org for fediverse-wide search. Use when the user mentions PeerTube, federated video, SepiaSearch, or browsing a specific PeerTube instance. Do not use this skill for YouTube/Vimeo uploads, video editing, or installing and administering a PeerTube…

Its SKILL.md is about 3.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 12 other files, including scripts and reference files (for example `README.md`, `evals/evals.json` and `references/auth-and-tokens.md`). Compatibility notes: Requires Python 3.8+ and requests. Reads are anonymous; authenticated commands (me, my-videos) need a token from scripts/peertube login. Tokens persist…

It sits in Backend & APIs, covering OAuth and OpenID Connect, Local SEO and Video production. It works with YouTube. The repository describes itself as: Curated collection of AI agent skills for Hermes and other agent frameworks. The licence is MIT.

When your agent uses it

  • The user mentions PeerTube
  • Federated video
  • Browsing a specific PeerTube instance
  • YouTube/Vimeo uploads

Example prompts

  • “/peertube”

Requirements

  • Python 3
  • Docker
  • Compatibility (from SKILL.md): Requires Python 3.8+ and `requests`. Reads are anonymous; authenticated commands (`me`, `my-videos`) need a token from `scripts/peertube login`. Tokens persist per-instance to ~/.config/peertube/token.json (owner-only).

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. Choose the instance to talk to. Every command is per-instance; the API shape is
  2. Nothing else is required to browse: videos, search, channels, comments, and instance
  3. (Optional) Log in only for your own account commands (me, my-videos)

What it can do on your machine

Read from SKILL.md and the folder at commit 22b4723. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 2 files in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • jq

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • sepiasearch.org
    • tilvids.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

  • Compatibility

    Requires Python 3.8+ and `requests`. Reads are anonymous; authenticated commands (`me`, `my-videos`) need a token from `scripts/peertube login`. Tokens persist per-instance to ~/.config/peertube/token.json (owner-only).

    From compatibility in the SKILL.md frontmatter.

Context cost

Peertube loads about 3.1k tokens when it runs, and up to ~13k if it reads all its reference files. Until then it costs about 134 tokens; SKILL.md has 1,028 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~134
When it runs · the whole SKILL.md, loaded when a task matches
~3.1k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~13k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from magnus919/agent-skills at commit 22b4723, republished under its MIT licence (© magnus919). 1,028 words, ~3,125 tokens.

Download SKILL.mdSave it as .claude/skills/peertube/SKILL.md (or your agent's skills folder). This skill also uses 9 other files; get the full folder from GitHub.
name
peertube
description
Browse PeerTube federated video from the terminal — instance stats, latest videos, video detail, comment threads, channels, accounts, instance-local search, and OAuth2 login with per-instance token persistence. Set PEERTUBE_SERVER to any instance; point it at sepiasearch.org for fediverse-wide search. Use when the user mentions PeerTube, federated video, SepiaSearch, or browsing a specific PeerTube instance. Do not use this skill for YouTube/Vimeo uploads, video editing, or installing and administering a PeerTube server.
compatibility
Requires Python 3.8+ and `requests`. Reads are anonymous; authenticated commands (`me`, `my-videos`) need a token from `scripts/peertube login`. Tokens persist per-instance to ~/.config/peertube/token.json (owner-only).
license
MIT
metadata.tags
peertube, federated-video, activitypub, video-platform, sepiasearch, api-client
metadata.sources
https://docs.joinpeertube.org/api-rest-reference.html, https://sepiasearch.org/

peertube — PeerTube federated video from the terminal

Browse any PeerTube instance — a federated deployment, not a single API — from the terminal: instance stats, latest videos, full video detail, comment threads, channels, accounts, and instance-local search. Authenticate with OAuth2 only for your own account commands. Every command is read-only except login/logout.

Setup

  1. Choose the instance to talk to. Every command is per-instance; the API shape is identical everywhere, but accounts, tokens, rules, and catalogs are not:
bash
export PEERTUBE_SERVER="https://<INSTANCE_HOST>"   # e.g. https://tilvids.com

To search the whole fediverse instead of one instance, point the same variable at the public search index: PEERTUBE_SERVER=https://sepiasearch.org (same API shape — see references/search-and-discovery.md).

  1. Nothing else is required to browse: videos, search, channels, comments, and instance info are anonymous reads.

  2. (Optional) Log in only for your own account commands (me, my-videos):

bash
scripts/peertube login --username <NAME> --prompt
How authentication works

PeerTube uses plain OAuth2 with per-instance client credentials: the CLI anonymously fetches the client pair from GET /api/v1/oauth-clients/local (singular local), then exchanges your username/password for a bearer token at POST /api/v1/users/token (grant_type=password, form-encoded). The token rides Authorization: Bearer <token>, lives for the instance's configured lifetime (read expires_in from the response — do not assume a fixed number), and is refreshed automatically when it expires. The token file is written owner-only to ~/.config/peertube/token.json keyed by server URL. Do not commit tokens — they are account credentials; revoke with scripts/peertube logout (POST /users/revoke-token) when done. Current production instances mask client_secret in the API response; the CLI detects this and explains the workaround. Details and wire-level error signatures: references/auth-and-tokens.md.

Essential Commands

server — instance stats and identity (anonymous)
bash
scripts/peertube server              # name, description, user/video/view counters
scripts/peertube server --json

Composes GET /config/about + GET /server/stats (canonical paths — there is no /instance/stats).

videos — browse the instance's uploads (anonymous)
bash
scripts/peertube videos                       # latest 15, offset pagination
scripts/peertube videos --limit 50 --offset 50
scripts/peertube videos --sort -views --json  # popular first

Pagination is start/count offsets (max count 100) — the API has no page parameter.

search — find videos on THIS instance (anonymous)
bash
scripts/peertube search --query "linux"            # instance-local (searchTarget=local)
scripts/peertube search -q "docker" --limit 20 --json
PEERTUBE_SERVER="https://sepiasearch.org" scripts/peertube search -q "linux"   # fediverse-wide

The bundled CLI performs instance-local search only (searchTarget=local). For fediverse-wide search, point PEERTUBE_SERVER at SepiaSearch — same commands, wider index. Search results carry channel.host/url, the origin instance of federated hits.

video — full detail for one video (anonymous)
bash
scripts/peertube video --id <UUID>          # numeric id, UUID, or shortUUID all work
scripts/peertube video --id <UUID> --json | jq '{name, description, views, url}'
comments — top-level comment threads (anonymous)
bash
scripts/peertube comments --id <UUID>                 # GET /videos/{id}/comment-threads
scripts/peertube comments --id <UUID> --limit 30 --json
channels / channel / account — creators (anonymous)
bash
scripts/peertube channels --limit 20 --json           # instance channel list
scripts/peertube channel --handle framasoft@framatube.org   # name or name@host
scripts/peertube account --name chocobozzz@framatube.org

channel shows metadata plus the channel's uploads (offset-paginated).

me / my-videos — your account (requires login)
bash
scripts/peertube me --json | jq '.role.label'
scripts/peertube my-videos --limit 50 --json
login / logout — OAuth2 session management
bash
scripts/peertube login --username <NAME> --prompt        # hidden prompt
echo "<PASSWORD>" | scripts/peertube login --username <NAME> --password-stdin
scripts/peertube login --username <NAME> --otp <CODE>    # 2FA-enabled accounts
scripts/peertube logout                                   # revoke server-side + delete file

Global flags

bash
scripts/peertube --json videos                     # flag before or after the subcommand
scripts/peertube videos --json
scripts/peertube --dry-run search --query test     # request plan, zero network
scripts/peertube --verbose videos --limit 2        # trace requests on stderr
scripts/peertube --server https://tilvids.com server   # per-invocation instance override

--dry-run emits {"dry_run": true, "method", "path", "params"} (login adds form_fields names only, never values) — use it to verify a jq chain before running it live. --help and --dry-run never require credentials.

Pipeline recipes

Search, then inspect the top hit
bash
scripts/peertube search --query "linux" --limit 5 --json | jq -r '.videos[0].uuid'
scripts/peertube video --id "$(scripts/peertube search -q linux --limit 1 --json | jq -r '.videos[0].uuid')" --json
Page through a channel's uploads
bash
scripts/peertube channel --handle framasoft@framatube.org --limit 100 --offset 0 --json | jq -r '.videos[].name'
# loop: advance --offset by the returned count until you reach .total (no page param exists)
Instance report card
bash
scripts/peertube server --json | jq '{name: .instance.name, videos: .stats.totalLocalVideos, users: .stats.totalUsers, views: .stats.totalLocalVideoViews}'
Log in, check quota, log out
bash
scripts/peertube login --username <NAME> --prompt
scripts/peertube me --json | jq '{username, role: .role.label, quota_bytes: .videoQuota}'
scripts/peertube logout

JSON and jq

--json output keys are stable snake_case wrappers around raw API objects: videos (the API's {total, data} list objects), channels, threads (+ total_not_deleted), instance + stats, channel, dry_run/method/path/params for plans. Video objects keep PeerTube's own field names — uuid, shortUUID, name, duration (seconds), views, publishedAt, account{name,displayName,host}, channel{name,displayName,host} — so jq selectors transfer directly to raw curl against /api/v1. Example: jq -r '.videos[] | [.name, .views, .channel.displayName] | @tsv'.

Show full SKILL.md (553 more words)Show less

Known Gotchas

  • Instances are independent (federated, not one API) — accounts, tokens, rules, enabled features, and catalogs differ per instance. A token from instance A 401s on instance B; the CLI keys the token file by server URL. Content federated onto an instance still belongs to its origin (channel.host, video url).
  • Search scope is two different things — searchTarget=local searches the instance's own catalog; search-index (or SepiaSearch's base URL) searches the fediverse via an external index. Omitting searchTarget gives the instance's own scope on current servers, not the fediverse. The bundled CLI is instance-local unless you point it at sepiasearch.org.
  • page does not exist — collections paginate with start/count (max 100). Clients sending page= silently re-read the first page forever.
  • The comments route is /comment-threads (hyphenated) — /comments and /commentthreads are not routes (they 400 on current servers).
  • Instance metadata paths are mixed — stats at /server/stats (operation titled "instance stats"), about at /config/about, config at /config. No /instance/* metadata paths exist.
  • Production masks client_secret — oauth-clients/local answers "********************************" on current production instances; a token request with the masked value 400s. The CLI detects it and explains the front-end-asset workaround. response_type=code appears in old quick-start curls but is not part of the current token schema — the CLI omits it.
  • Token lifetimes are instance-configurable — read expires_in per response; the CLI persists the absolute expires_at and refreshes automatically. Store tokens owner-only, never commit them, revoke on logout (deleting the file alone leaves the session live).
  • 2FA needs an OTP header — x-peertube-otp on the token request; the CLI maps a bare 401 to "pass --otp".
  • Rate limits — default 50 calls/10 s per IP (token endpoint tighter); on 429 read Retry-After and back off. Errors use RFC7807 application/problem+json bodies, and unknown routes answer 400 (not 404) — read the body.
  • duration is seconds; ids are triple (id, uuid, shortUUID — all accepted by detail endpoints); role is an object {id, label}; videoQuota is bytes.
  • Anonymous vs authed — browsing/search/comments/instance-info need no token; /users/me* and mutations always do.

When to use

Use this skill for read-only interaction with PeerTube instances: browsing and filtering videos, instance-local or fediverse-wide search (via SepiaSearch), video detail and comments, channel/account exploration, instance stats, and managing your own account session with OAuth2 (login, profile, my videos, logout).

When not to use

Do not use this skill for YouTube, Vimeo, or other platform uploads or any video editing/transcoding (route to those platforms' own tooling and ffmpeg); for installing, hosting, or administering a PeerTube server (instance administration is out of scope — the bundled CLI is read-only plus login/logout); or for generic ActivityPub/Mastodon federation questions (use a Mastodon or ActivityPub skill).

Reference Files

FileUse it for
references/auth-and-tokens.mdOAuth2 flow (oauth-clients/local, password grant), secret masking, refresh/revocation, token-file hygiene, wire error signatures
references/search-and-discovery.mdsearchTarget local vs search-index, SepiaSearch semantics, search parameters and sorts
references/endpoint-catalog.mdEvery read endpoint's parameters, response shapes, pagination, rate limits
references/gotchas-field-guide.mdSymptom → cause → fix table for every failure signature and version drift
references/worked-recipes.mdMulti-step CLI/jq workflows, raw curl auth chain, jq processing patterns

Available Scripts and Prerequisites

  • scripts/peertube — the bundled Python CLI (--json, --dry-run, --verbose, --server override). Imports only the standard library and requests.
  • scripts/test_peertube.py — offline test suite (pytest + unittest compatible); all HTTP is mocked, zero network egress.
  • Requires Python 3.8+ and requests. Any reachable PeerTube instance (or SepiaSearch) works; no credentials exist or are required by default. No service is started by this skill.

© magnus919, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 9 other files (scripts, references) in peertube of magnus919/agent-skills.

  • SKILL.md
  • README.md
  • evals/evals.json
  • references/auth-and-tokens.md
  • references/endpoint-catalog.md
  • references/gotchas-field-guide.md
  • references/search-and-discovery.md
  • references/worked-recipes.md
  • scripts/peertube
  • scripts/test_peertube.py

Open the folder on GitHubat commit 22b4723

Compare with similar skills

Peertube next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Peertube compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Peertube this skillmagnus919/agent-skills115—~3.1kAutomated safety check: PassMIT
Youtube APIericrisco/rsc-harness180—~4kAutomated safety check: PassMIT
Add OAuth Providersuperdesigndev/treg5k—~2.5kAutomated safety check: PassCustom licence
Setupdaiki-beppu/youtube-automation169—~1.3kAutomated safety check: PassCustom licence
YoutubeCraftOS-dev/CraftBot3921 repos~3.7kAutomated safety check: PassMIT
Int Youtubeevolution-foundation/evo-nexus545—~568Automated safety check: NotesCustom licence

Similar skills

  • Youtube API

    ericrisco/rsc-harness

    A skill your agent uses when wiring code to a real YouTube channel: user OAuth 2.0, resumable videos.insert uploads, editing metadata after publish, pulling views/watch time/retention/traffic from…

    180 GitHub stars~4k tokensUpdated yesterday
    Backend & APIsAuto-check passed
  • Add OAuth Provider

    superdesigndev/treg

    Add a provider to treg's OAuth registry (the ones treg holds its own approved app for).

    5k GitHub stars~2.5k tokensUpdated today
    Backend & APIsAuto-check passed
  • Setup

    daiki-beppu/youtube-automation

    A skill your agent uses when ツール導入と GCP / OAuth の設定、新規 YouTube チャンネル開設、既存チャンネル取り込み、config 再生成、または YouTube 側設定同期を行うとき。「セットアップして」「環境構築」「新チャンネル」「既存チャンネル」「チャンネル取り込み」「config…

    169 GitHub stars~1.3k tokensUpdated 3 days ago
    Backend & APIsAuto-check passed
  • Youtube

    CraftOS-dev/CraftBot

    YouTube Data API integration with managed OAuth. An agent skill from CraftOS-dev/CraftBot.

    392 GitHub starsUsed in 1 repo~3.7k tokens
    Backend & APIsAuto-check passed
  • Int Youtube

    evolution-foundation/evo-nexus

    Query YouTube Data API v3 — channel stats, recent videos, top videos, comments.

    545 GitHub stars~568 tokensUpdated 5 mo ago
    Backend & APIsAuto-check: notes
  • Video Podcast Maker

    Agents365-ai/video-podcast-maker

    A skill your agent uses when the user gives a topic and wants an automated topic-driven narrated explainer, podcast, or knowledge-summary video (Bilibili / YouTube / Xiaohongshu / Douyin / WeChat…

    1.7k GitHub stars~4.9k tokensUpdated 9 days ago
    Media & CreativeAuto-check passed

More from magnus919/agent-skills

All 131 skills in this repo
  • Artifact Pyramids

    magnus919/agent-skills

    Organize durable agent research outputs as summaries, analysis, and evidence dossiers.

    119 GitHub stars~2.7k tokensUpdated today
    Auto-check passed
  • Ascii City Engine

    magnus919/agent-skills

    Build portable, first-person colored ASCII city engines and small GIS-derived city packs.

    119 GitHub stars~1.1k tokensUpdated today
    Auto-check passed
  • Color Management

    magnus919/agent-skills

    Manage color workflows with ICC profiles, working spaces, gamut mapping, and color science.

    119 GitHub stars~2.6k tokensUpdated today
    Auto-check: notes
  • Data Scientist

    magnus919/agent-skills

    A skill your agent uses for PhD-level expertise in data science, statistics, and machine learning: rigorous statistical analysis, experimental design, causal inference, advanced modeling, research…

    119 GitHub stars~4.1k tokensUpdated today
    Auto-check passed
  • Docker Compose

    magnus919/agent-skills

    Use Docker Compose to define, run, debug, and harden multi-container applications.

    119 GitHub stars~2k tokensUpdated today
    Auto-check: notes
  • Fpga Development

    magnus919/agent-skills

    Design, review, simulate, and verify FPGA logic using explicit RTL contracts, clock and reset models, CDC analysis, timing constraints, and reproducible implementation evidence.

    119 GitHub stars~2.7k tokensUpdated today
    Auto-check passed

Works with

Questions about Peertube

What does Peertube do?

Browse PeerTube federated video from the terminal — instance stats, latest videos, video detail, comment threads, channels, accounts, instance-local search, and OAuth2 login with per-instance token…. Peertube is an agent skill from magnus919/agent-skills. Browse PeerTube federated video from the terminal — instance stats, latest videos, video detail, comment threads, channels, accounts, instance-local search, and OAuth2 login with per-instance token persistence.

When should I use Peertube?

Peertube fits situations like: the user mentions PeerTube; federated video; browsing a specific PeerTube instance; youTube/Vimeo uploads.

How do I install Peertube in Claude Code?

Run `npx skills add magnus919/agent-skills --skill peertube -a claude-code`. Or copy the skill folder (peertube in magnus919/agent-skills) into .claude/skills/peertube in your project. Claude Code loads it when a task matches its description.

How do I install Peertube in Codex?

Run `npx skills add magnus919/agent-skills --skill peertube -a codex`. Or copy the skill folder (peertube in magnus919/agent-skills) into .agents/skills/peertube in your project. Codex loads it when a task matches its description.

Can I use Peertube in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add magnus919/agent-skills --skill peertube -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/peertube, .gemini/skills/peertube, .github/skills/peertube and .opencode/skills/peertube in your project.

What does Peertube need to run?

Going by SKILL.md and its folder, Peertube needs Python for the scripts in its folder and the command-line tools its instructions call (jq). Our summary lists: Python 3; Docker. Compatibility (from SKILL.md): Requires Python 3.8+ and `requests`. Reads are anonymous; authenticated commands (`me`, `my-videos`) need a token from `scripts/peertube login`. Tokens persist per-instance to ~/.config/peertube/token.json (owner-only)..

Does Peertube access the network?

SKILL.md names 2 domains. In commands or code: sepiasearch.org and tilvids.com; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.

Is Peertube safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Peertube use?

Peertube is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Peertube use?

About 3.1k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 10k tokens, read only when the agent opens those files.

What are the alternatives to Peertube?

Skills that share tags, products or a category with Peertube: Youtube API (ericrisco/rsc-harness, 180 stars), Add OAuth Provider (superdesigndev/treg, 5k stars), Setup (daiki-beppu/youtube-automation, 169 stars) and Youtube (CraftOS-dev/CraftBot, 392 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Peertube?

magnus919 (a GitHub user) maintains it in magnus919/agent-skills, which has 115 GitHub stars. The repository holds 131 skills in this directory. The repository was last updated on October 10, 2026.

Source: magnus919/agent-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.