ericrisco/rsc-harness/social-publisher
- community
Checking that the SKILL.md file is still in the repository.
Use when planning a posting schedule, building a multi-platform content calendar, or reshaping one source asset into channel-native posts across X, LinkedIn, Instagram, Threads, Bluesky, TikTok, Facebook or YouTube — cadence, best-time slots, per-platform format limits, API publish caps, and a dated CSV or JSON calendar a scheduler can import. NOT the brand voice the posts speak in (that is `brand-voice`), NOT the editorial strategy of what to make (that is `content-engine`).
Install
npx vskill@latest install ericrisco/rsc-harness/social-publisherSKILL.md
Social Publisher — The Operator's Desk for Distribution
*Decide the when, where, how-often, and what-shape of social distribution, then hand back a dated, schedulable calendar. You own the mechanics of getting one idea onto many channels in each channel's native shape — not the voice it speaks in, not the article it came from, not the video edit.*
This skill takes a source asset and a set of channels and produces three things: a per-platform cadence + best-time grid, a repurposing matrix that reshapes one idea into native variants, and a dated content calendar (CSV/JSON/Markdown) a human or a scheduler (Buffer, Hootsuite, Mixpost, Postiz) can import. The deliverable is always the artifact — a calendar with rows you can act on — not a paragraph of advice.
When to use / When NOT
Use when:
- Building a weekly or monthly posting schedule across multiple platforms.
- Deciding posting frequency and best-time slots per platform.
- Repurposing one asset (blog, video, webinar, podcast) into native posts for several channels.
- Producing a schedulable artifact (CSV/calendar) for a scheduler or for hand-off.
- Checking per-platform limits before programmatic publishing (char caps, media specs, API publish/rate limits, approval gates).
Do NOT use when (route to the sibling that owns it):
| You actually want | Go to | |
|---|---|---|
| The brand's tone-of-voice / verbal identity the posts must sound like | ../brand-voice/SKILL.md | |
| To write the long-form source article the posts are sliced from | ../article-writing/SKILL.md | |
| The editorial strategy of what topics to make this quarter | ../content-engine/SKILL.md | |
| To script/edit the Reel or Short (hook, cuts, captions burn-in) | ../video-shorts/SKILL.md | |
| To reply to comments/DMs, moderate, grow the community | ../community/SKILL.md | |
| To respond to and manage ratings/reviews | ../review-management/SKILL.md | |
| To write/send the email newsletter issue itself | ../newsletter/SKILL.md | |
| Keyword/topic research, getting cited by AI engines | ../seo-geo/SKILL.md | |
| Paid social ads / boosted promotion | ../ads/SKILL.md | |
| To generate the images/graphics in the posts | ../ai-media/SKILL.md |
If a brand voice spec exists, shape every post in it — load ../brand-voice/SKILL.md. This skill schedules and reshapes; it does not invent the voice.
The distribution mental model
Four rules. Internalize them before you touch a calendar.
- One source asset → N native variants, never N copies. Reshape language, length, hashtags, and format per channel — repurposing is reformatting, not copy-paste. One blog or long video commonly yields 7–10 short clips plus carousels and threads. Source: Buffer "Ultimate Guide to Repurposing Content"; Planable 2026 repurposing guide (accessed 2026-06-02).
- Aim for roughly one native-original post per two repurposed. Repurposed content reportedly drives ~25–35% more engagement than one-off posts, but an all-repurposed feed reads stale — keep a ~1:2 native:repurposed mix so the account still feels alive. Source: InfluenceFlow / Planable 2026 (accessed 2026-06-02).
- Consistency beats raw frequency, and gaps are expensive. A steady schedule outperforms bursts; a ~2-week gap after heavy posting can cut reach 30–50%. Plan a cadence you can actually sustain. Source: Sprout Social / Buffer / Metricool 2026 (accessed 2026-06-02).
- The deliverable is a schedulable artifact. Always end at a dated calendar (rows: date, time, platform, format, body, status) — something a scheduler imports or a person executes. Advice without a calendar is a miss. The schema lives in
references/calendar-schema.md;scripts/verify.shlints what you emit.
Cadence & best-time grid
Per-platform 2026 frequency sweet spots and starting best-time slots. Source: Sprout Social / Buffer / Metricool best-time-to-post 2026 (accessed 2026-06-02).
| Platform | Frequency (2026) | Best-time starting hypothesis | |
|---|---|---|---|
| Instagram (feed) | 3–5x/week | Tue–Wed 11am–1pm | |
| Instagram Stories | 1–2x/day | spread across the day | |
| Reels | 3–4x/week | best day Tuesday | |
| 3–5x/week | Tue–Thu 11am–5pm (shifting later, outside office hours) | ||
| X (Twitter) | 3–5x/day | ~9pm and Tue–Wed | |
| TikTok | 1–3x/day | test per account; volume tolerant | |
| 3–5x/week | weekday mid-morning |
Caveat, not law: these slots are starting hypotheses. The only authoritative times are in the account's own analytics — schedule to the table, then move slots toward where that audience actually engages. Never present these numbers as guarantees.
Repurposing matrix
Map source type to per-channel native output. Each cell is a shape, not the same text.
| Source | X | Reel/Short/TikTok | Bluesky | ||||
|---|---|---|---|---|---|---|---|
| Blog post | thread of the key claims | narrative post + takeaway | carousel of the steps | talking-head of the hook | short thread | summary + link in first comment | |
| Long video | clip + quote | lesson write-up | carousel of frames | 3–5 vertical cuts | quote post | native upload of one cut | |
| Webinar | live-thread highlights | recap + slides | quote-card carousel | best-moment clips | takeaway post | replay link | |
| Podcast | quote thread | episode notes | audiogram carousel | audiogram Shorts | quote post | episode card |
Reshape the same idea, not the same string. Bad→Good:
Channel-native shaping rules
Quick reference; full specs and API reality in references/platform-limits.md.
| Platform | Char cap | Hashtags | Links | Native trick | |
|---|---|---|---|---|---|
| X | 280 (post) | 1–2 | inline, costs reach less than before | thread the long idea; hook in post 1 | |
| ~3,000 | 0–3 | first comment, not body | "see more" cutoff ~210 chars — front-load the hook | ||
| 2,200 caption | 3–5 specific | bio / link sticker | first-comment for tags; carousel for depth | ||
| Threads | 500 | light | inline ok | conversational, low-hashtag | |
| Bluesky | 300 | 1 max | plain inline | short threads; no algorithmic hashtag game | |
| TikTok | 2,200 caption | 3–5 | bio | hook in first 1–2s; caption supports, video carries | |
| ~63k (keep short) | 0–2 | first comment if reach-sensitive | native video > shared link |
Rule with a why: put links in the first comment on LinkedIn/IG/FB — link-in-body posts are commonly down-ranked, so keep the body clean and drop the URL below. Front-load the hook everywhere — LinkedIn truncates at ~210 chars and X shows post 1 only, so the first line decides the click.
The content calendar artifact
Every run ends here. Minimum columns:
date · time · timezone · platform · format · source_asset_id · hook · body · media_ref · link · hashtags · status
status lifecycle: draft → scheduled → posted. source_asset_id ties all rows derived from one source (the repurposing link), so you can see at a glance that one blog became six native posts.
Markdown example (one source asset, two channels):
JSON row (what a scheduler ingests):
Full column definitions, the CSV variant, and import notes for Buffer/Hootsuite/Mixpost/Postiz are in references/calendar-schema.md. After you write a calendar file, run scripts/verify.sh path/to/calendar.{csv,json} to catch over-cap bodies, byte-identical cross-posts, bad status values, and non-future scheduled datetimes.
Platform limits & API reality
Before promising programmatic publishing, check the 2026 gotchas — they change what is even possible. Full sourced table in references/platform-limits.md.
- Instagram Graph API: ~25–50 API-published posts per rolling 24h per account (sources vary 25/50/100 by account trust); ~200 API requests/hour. The window is rolling, not calendar-day. (Meta IG Platform "Content Publishing Limit"; InstantDM 2026 — accessed 2026-06-02.)
- X API: as of Feb 2026, legacy Free tier is write-restricted (~500 posts/month, no new signups) and pay-per-use is now default for new developers (~$0.01/post; URL posts cost more). Programmatic X posting costs money for new apps. (Zernio / Postproxy / Blotato 2026 — accessed 2026-06-02.)
- LinkedIn API: free OAuth = Sign-In + basic profile only; posting (UGC/Share) runs ~100 calls/day/member and Marketing/advanced access starts ~$699+/mo for approved partners. Plan around the gate. (Phyllo / SociaVault 2026 — accessed 2026-06-02.)
- Bluesky AT Protocol: moved to OAuth (announced 2024-09-25; App Passwords deprecated for new projects; first granular scope
transition:emailshipped 2025-06-12); API is free with a ~5,000-points/hour cap. (Bluesky/AT Protocol docs — accessed 2026-06-02.) - TikTok Content Posting API: requires a separate audit and forces
SELF_ONLY(private) posts until approved. (Blotato / PostPeer 2026 — accessed 2026-06-02.)
Execution-layer decision: this skill produces the plan; something else publishes it.
- Manual / few channels → a hosted scheduler (Buffer, Hootsuite) — import the CSV.
- Self-host, own your data → Mixpost (Laravel, one-time license, drag-drop calendar, first-comment + dynamic variables) or Postiz (Apache-2.0, free, 15+ platforms).
- Programmatic across many platforms → a unified API (Blotato-style) to dodge per-platform auth pain.
(Mixpost.app; Postiz "Open Source Social Media Scheduler" / GitHub inovector/mixpost — accessed 2026-06-02.)
Anti-patterns
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/social-publisher/SKILL.md
Popularity
- Repository stars
- 141
- Repository forks
- 11
- 7-day trend score
- 30
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/ericrisco/rsc-harness/social-publisher)