Skip to content

Releases: jdwit/ytstudio-cli

v0.4.0

17 Jun 15:47

Choose a tag to compare

Highlights

  • ytstudio playlists command (#25): list/show/create/update/delete playlists, inspect items, add videos by ID or channel search, remove by item or video ID, and reorder playlists by views, likes, publish date, or title. Playlist writes are dry-run by default and require --execute.
  • Analytics growth deltas (#31, #35): analytics overview now compares the selected window with the previous equal-length period by default, with --no-compare to disable.
  • Comment replies (#30, #33): ytstudio comments reply <comment-id> -t "..." posts a reply to a top-level comment.
  • Agent skill (#36): ships a harness-agnostic skills/ytstudio/SKILL.md plus generated command reference so skill-aware agents can operate the CLI safely.

Compatibility

No breaking changes.

v0.3.1

08 Jun 11:44
5a54919

Choose a tag to compare

Highlights

  • OAuth scope: yt-analytics-monetary.readonly (#21, thanks @maxhuk). Revenue metrics like estimatedRevenue, grossRevenue, cpm, adImpressions now work in analytics query. Without this scope they failed with 401 Insufficient permission. Existing users must re-run ytstudio login to re-consent; if oauthlib complains about scope changes, OAUTHLIB_RELAX_TOKEN_SCOPE=1 ytstudio login resolves it.
  • ytstudio videos categories (#22). List the YouTube video categories assignable to uploads for a region (default US) so you can pick the right category_id for your sidecar without grepping unofficial tables. Supports --region NL, -o json.
  • Mermaid diagrams in docs (#20). The docs site at https://jdwit.github.io/ytstudio-cli/ now renders mermaid blocks via pymdownx.superfences.

Breaking changes

  • Upload sidecar category_id is now required (part of #22). The previous default of "22" (People & Blogs) was our own pick, not a YouTube default; hiding it behind a default made it easy to bulk-upload into the wrong category by accident. Sidecars without category_id now fail validation upfront. Add the field; use ytstudio videos categories to look up the right ID.

v0.3.0

28 May 17:00
748be67

Choose a tag to compare

Highlights

  • ytstudio videos upload (#15): bulk-upload videos from a directory of YAML sidecars. Validates the lot up front, runs dry-run by default (--execute to actually upload), --max N caps a run, and each successful upload patches its sidecar with video_id + uploaded_at so partial runs (network drop, quota hit) are safe to resume. Stops cleanly on quotaExceeded and exits non-zero.
  • ytstudio videos list --scheduled: filter to private videos with a future publishAt.
  • Documentation site (#14, #17, #18) at https://jdwit.github.io/ytstudio-cli/. Material for MkDocs with an auto-generated command reference and YouTube-coloured theme.

Breaking changes

  • Demo mode removed (#16). YTSTUDIO_DEMO=1 no longer does anything; every command now talks to the real YouTube API. The bundled fixtures and the ytstudio.demo module are gone.

v0.2.0

26 May 20:52
51ccd11

Choose a tag to compare

Highlights

  • Multi-channel profile support (#10): ytstudio profile add/use/list/status/remove, per-profile credential storage, env-var override (YTSTUDIO_PROFILE=name), and automatic one-shot migration from single-channel installs. State writes are atomic and serialized under an fcntl lock.
  • ytstudio livestreams command (#12): list, show, schedule, start, stop, update against the YouTube liveBroadcasts API; show --ingest surfaces the bound stream's RTMP/RTMPS URLs (key redacted unless --show-key); demo-mode support via YTSTUDIO_DEMO=1.
  • yts short CLI alias (#11) for the same entry point as ytstudio.

Compatibility

No breaking changes. Pre-profiles installs are migrated to the default profile automatically.