name: contentstudio-distribution description: > Distribute finished social posts from the vault to platforms via ContentStudio. The integration is the authenticated contentstudio CLI — Claude pushes posts directly as drafts. Use when: "schedule this post", "push to ContentStudio", "distribute this content", "get this live", or any request to move finished social content from the vault to ContentStudio. metadata: author: Arden (Builder), Advisory OS version: "2.0.0" updated: "2026-06-05" pipeline: Vault paste-ready.txt + image -> contentstudio CLI -> ContentStudio -> Platforms platforms: LinkedIn, Facebook, Instagram, Twitter runnable-skill: .claude/skills/distribute/ (slash command /distribute)
ContentStudio Distribution — Social Post Pipeline
v2.0 — corrects the v1 doc. v1 said "Claude Code does not have access to ContentStudio" and described a manual copy-paste-through-Kathryn flow. That is no longer true (and the stale claim cost a 3-day stall on June 5 2026). The integration was built and proven on June 4–5: an authenticated
contentstudioCLI that pushes posts straight into ContentStudio. Claude does the push. Do not tell Kathryn to paste anything in by hand.
The Integration Is Real — Verify in One Command
ContentStudio is the scheduling/publishing tool (Kathryn has a lifetime subscription). The integration is the contentstudio CLI on PATH (~/.local/bin/contentstudio, npm contentstudio-cli), authenticated to workspace KHB with a stored API key.
contentstudio auth:status # API key + active workspace KHB
contentstudio auth:whoami # live API hit — Kathryn Brown, active
contentstudio accounts:list # connected accounts + IDs
If a cold session ever doubts this exists: run the above. It works.
The Fast Path — use the /distribute skill
The runnable skill lives at .claude/skills/distribute/ and registers as /distribute. It wraps the whole upload+create loop:
bash ~/advisory-os-vault/.claude/skills/distribute/push-drafts.sh <campaign>/social [--dry-run]
It finds every *-paste-ready.txt, uploads the matching image, and creates one draft per post on the right account. See that skill's SKILL.md for the filename convention, the account map, and the manual CLI reference.
Roles (updated)
| Who | Does |
|---|---|
| Sloane | Writes post copy (all platforms). Runs Copy QC + Sentence Editor. Produces the *-paste-ready.txt (post copy only). |
| Wren | Produces images (.html source -> .png render). |
| Arden | Owns the distribution pipeline + /distribute skill. Runs the push. |
| Claude (any) | Pushes drafts to ContentStudio via the CLI. No manual paste handoff. |
| Kathryn | Approves content. Reviews drafts in ContentStudio. Publishes. Posts first comments. |
Publishing default is --publish-type draft. Kathryn is the publisher. Never schedule or auto-publish without her explicit go-ahead.
Pre-Flight QC Gate
Distribution executes; it does not QC. Before pushing, confirm each post:
| # | Check | Pass criteria |
|---|---|---|
| 1 | Copy QC + Sentence Editor passed | .md header shows pass + date |
| 2 | Platform + brand assigned | .md header names one platform, one brand |
| 3 | Image rendered | .png exists, correct dimensions (table below) |
| 4 | No hashtags on LinkedIn/Facebook | zero — IG gets 3–5 niche tags |
| 5 | No links in LinkedIn/FB body | link goes in first comment |
| 6 | Paste-ready .txt produced | post copy only, no header/brief |
| 7 | Kathryn approved | she said push / approved this post |
Platform image specs
| Platform | Brand | Dimensions |
|---|---|---|
| LinkedIn (AOS) | AOS — charcoal #1a1a1a / gold #b79d64 | 1080x1350 (4:5) |
| LinkedIn (CYP) | CYP — deep teal #0f2d3e / gold | 1080x1350 (4:5) |
| CYP — deep teal | 1080x1080 (square) | |
| CYP — teal / gradient #3e666e | 1080x1350 (4:5) |
Filename Convention (drives the script)
| Artifact | Pattern | Example |
|---|---|---|
| Post copy | *- | angle5-ai-guide-linkedin-aos-paste-ready.txt |
| Image | | screenshot-angle5-linkedin-aos.png |
The CLI sends text literally (newlines preserved) — no zero-width-space hack needed (that was only for pasting into web composers; irrelevant to the API).
Account map (token -> account ID, workspace KHB)
| Token | Account | ID |
|---|---|---|
linkedin-aos / linkedin-cyp | LinkedIn — Kathryn H Brown | iEEqUjj-G8 |
fb-cyp | Facebook Page — Creating Your Plan | 1485451565006703 |
ig-cyp | Instagram — Kathryn H. Brown | 17841401293053293 |
twitter-cyp | Twitter/X — itskathrynbrown | 2490475879 |
Refresh if accounts reconnect: contentstudio accounts:list. The live map is in .claude/skills/distribute/push-drafts.sh.
Manual CLI (when the script isn't enough)
contentstudio media:upload --file <img.png> --json # -> _id
contentstudio posts:create --json \
--content "$(cat post-paste-ready.txt)" \
--account <ID> --media-id <MEDIA_ID> --publish-type draft
contentstudio posts:list # status=draft
contentstudio posts:delete <post_id> # undo a bad push
contentstudio comments:add <post_id> "<link + context>" # first comment
Add --dry-run to posts:create to print the body without calling the API.
Cross-Platform Rules (unchanged)
- Each platform gets its own native version — never copy a LinkedIn post to FB/IG.
- Same angle, different execution per platform.
- LinkedIn = AOS brand; FB/IG = CYP. Exception:
linkedin-cyp(CYP lens on LinkedIn). - Stagger same-day cross-posts by 2+ hours.
- If both LinkedIn versions exist, both land as drafts — flag so Kathryn picks one.
What "done" looks like
Report: how many drafts landed, on which accounts, link to review/publish (https://app.contentstudio.io). Kathryn publishes. Then /handoff to log it.