Releases: sergebulaev/youtube-skills
Release list
v1.0.20
v1.0.20
Cross-links the official Publora MCP skills. Publora ships publora/skills: one skill per platform, covering the publish side only. The Publora section of the README now points at it and says how the two relate. These bundles are the layer above: they read the platform, do the writing craft, and hold the approve-before-publish flow.
v1.0.19
v1.0.19
CI: markdown-reference verifier. New verify-references workflow (permissions: contents: read, stdlib-only script) fails any PR or push that leaves a backticked .md reference unresolved: bare skill-local (references/X.md, sub-skills/X.md, sibling X.md), nested (../../../references/X.md) and root-relative (skills/<skill>/SKILL.md) forms, scanning root SKILL.md, shared references/ and everything under skills/. Ported from x-skills #15 (thanks @moinerus) and extended after codex review.
Fixes. Sub-skill and skill-local reference docs cited shared root references one directory level short (../../references/); corrected to ../../../references/. No behaviour change for the skills themselves beyond the previously dead links now resolving.
v1.0.18
Humanizer V3 recalibration for the YouTube writers: 2026 AI vocabulary scored by density (any marker in a one-line title), em dashes capped at ~1/100 words instead of banned (at most one in a title, .. in spoken lines), stacked/hollow triads only, reveal bridges and sincerity openers scrubbed, no inserted hedges. Root voice rules, checklist and README aligned. Codex-reviewed.
v1.0.17
Phase B: codex review fixes
An independent full codex review of each bundle surfaced real issues, now fixed:
- Illustrations actually attach — the generated image URL was passed to Publora but silently dropped. For X/Threads/Facebook it now forwards as
mediaUrls; for Instagram/TikTok/YouTube (media-required or video/community flows) the workflow now tells you to supply the image through the platform's own media step instead of promising a broken auto-attach. - Codex package assets — the generated marketplace package now ships
assets/(icon.svg, hero), fixing brokencomposerIconreferences. - Per-platform correctness — X reads the actor's real
userNamefield (author/links were null); Facebook caches negative Page lookups (no repeated paid actor runs); YouTube trending honestly caps at the API's 50-result limit.
Verified with a follow-up codex review (no regressions) and live import checks.
v1.0.16
Codex full-review fixes
An independent full codex review of the bundle surfaced these:
- Manifest skill count corrected — the public plugin/marketplace description undercounted the skills (and omitted some from the list). Now matches the actual set.
- Pixfaro network retries — a timeout/reset raised a non-retryable error, so the documented 3-attempt retry was skipped for transient network failures. Network errors are now retried.
- Codex package README — the generated marketplace package now includes the (Pixfaro-documented) README, kept in sync with root.
Docs: README + CLAUDE.md now document the optional Pixfaro illustration layer.
v1.0.15
Code-review fixes (Pixfaro layer)
Independent review (Codex + agent) — all findings resolved:
- Reuse one PixfaroClient — the wrappers built a fresh client per call, so the 6h LRU cache never hit and every
illustrate/refinere-billed. Now a shared client persists the cache + HTTP session. - Credential-keyed — the shared client rebuilds if
PIXFARO_TOKENchanges at runtime (no billing the old account / serving its cached images). - Robust retry —
PixfaroError.status_codedrives retry classification instead of substring-matching the error body. - requests.Session — connection reuse across retries.
- Cost-guard flag — results carry
premium: truewhen a premium-priced model was used.
No API/behavior change for callers. Verified live (cache-hit confirmed) + codex review clean.
v1.0.14
Pixfaro layer: iterative edit + cost-guard
lib.refine(image_id, instruction)— edit a prior illustration by itsimg_...id viaPOST /v1/images/edits(cheaper + more consistent than regenerating). Keeps source shape/tier by default.- Cost-guard: results now carry
balance_after+low_balance; premium models (gemini-pro-image, gpt-5-image) are never auto-selected. lib.available_models()— live model catalog + pricing viaGET /v1/models.- Fix:
wide/linkkinds sent pixel dimensions; the API expects a ratio (16:9). Generation for those kinds now works.
Verified live end-to-end (generate + refine + models). Fully optional; needs PIXFARO_TOKEN.
v1.0.13
v1.0.13 — Pixfaro illustration layer
New optional image generation for 16:9 thumbnails.
lib.illustrate(prompt, kind=...)— third integration layer alongside Apify (read) and Publora (write). Returns a hosted image URL.- Generated URL flows straight into
lib.publish(..., media_urls=[url]). - Pixel-exact brand overlay (handle / color / logo) sourced from Voice & Brand Profile section 6 — crisp text even on a cheap base model.
- Backend tiers like publishing: pixfaro with a
PIXFARO_TOKEN, manual fallback (drafts the prompt to generate yourself) with no key. - New
illustrationsub-skill + optional illustration step wired into the primary writer.
Set PIXFARO_TOKEN (pf_live_...) from https://pixfaro.com to enable. Fully optional — nothing changes without a key.
v1.0.12
Adds a persistent Voice & Brand Profile that every writing skill reads before drafting, so you stop re-explaining who you are on each request.
- references/voice-profile.md — your voice fingerprint, niche/ICP, hard rules, links/CTA, and signature examples in one file. Ships as a template; skills only load it once you mark it
filled: yes. --mode profile— builds/updates the profile from 3-6 of your real posts pasted in (portable, no token) or, if a read token is set, from pulled activity. Learns your actual fingerprint, never invents one.- The bundle's writing skills load the filled profile and match your voice, rules, and CTA automatically.
Universal and cross-platform: same behavior on Claude Code, Codex, and OpenClaw (no Anthropic-only primitives).
v1.0.11
Doc consistency: the remaining '10 YouTube formulas' reference in yt-repurposer now reads 11 (Y11 was added in v1.0.9). No behavior change.