Help us improve
Share bugs, ideas, or general feedback.
From cowork-social
Draft a platform-native Facebook post in your voice. Reads platform-voice.md (Facebook section) + brand-brief.md + business-brain.md. 40-80 word sweet spot. Link previews supported. Plan-then-approves, writes to outputs/, optionally schedules via Blotato. Foundation B + C applied. Reads pageId from state-social.md for FB subaccount scheduling.
npx claudepluginhub automatedmarketer/cowork-social --plugin cowork-socialHow this skill is triggered — by the user, by Claude, or both
Slash command
/cowork-social:draft-facebookThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Draft a Facebook post. Share-driving, link-preview-aware, short-form sweet spot. Reads `pageId` for the Facebook subaccount captured during `/onboard-social`.
Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Creates SEO content outlines, topic clusters, calendars, and identifies gaps. Use proactively for content strategy and planning.
Share bugs, ideas, or general feedback.
Draft a Facebook post. Share-driving, link-preview-aware, short-form sweet spot. Reads pageId for the Facebook subaccount captured during /onboard-social.
Read these files on every run. If any is missing, halt and tell the user which /onboard-social phase to re-run.
| File | Purpose |
|---|---|
about-me/writing-rules.md | Universal writing rules |
about-me/business-brain.md | ICP, audience, recent stories, wedge |
projects/social-media-content/brand-brief.md | what_you_sell, primary_cta, recent_proof_story, contrarian_belief, voice_signature |
projects/social-media-content/platform-voice.md | Facebook section only — length_range, signature_openings, signature_closings, banned_phrases, voice_notes |
projects/social-media-content/state-social.md | blotato_status + facebook_page_id (FB subaccount) |
projects/social-media-content/asset-index.md | Optional images |
_shared/hook-patterns.md | 11 hook patterns (Step 4) |
Foundation A — lazy-load: read ONLY the Facebook section of
platform-voice.md.
Follow the 12-step spec in _shared/draft-skill-spec.md. Platform-specific deltas below.
| Field | Facebook value |
|---|---|
| Length | 40-80 words optimal (80-300 acceptable for story posts) |
| Hook window | First line — must hook in 1 sentence |
| Image | Optional |
| Link previews | If topic involves a link, put the URL on its own line — FB generates a rich preview that outperforms inline links |
| Hashtags | 0-2 max (FB doesn't reward them) |
| Video | If user attaches video, mediaType MUST be "reel" per Blotato MCP — regular feed video no longer supported |
| CTA bias | Drive shares (FB algorithm weights shares > likes/comments) |
| Hook pattern bias | Vulnerable Story (#5), Receipts (#9) |
outputs/social-media-content/YYYY-MM-DD-facebook-<slug>.md
Frontmatter:
---
date: YYYY-MM-DD
platform: facebook
slug: <kebab-case-3-5-words>
hook_pattern: <pattern-name>
length_words: <count>
length_chars: <count>
asset_used: <asset-name-or-null>
link_preview_url: <url-or-null>
video_type: <reel-or-null>
status: drafted
---
Body = the actual post text. If a link is included, place it on its own line so FB triggers the preview.
Branch on projects/social-media-content/state-social.md → blotato_status:
connected → Load scheduling-defaults.md, find Facebook row. Read facebook_page_id from state-social (this is the FB page subaccount captured during /onboard-social via blotato_list_accounts). Ask:
"Schedule this for [Thursday 1pm ET] on your
<page_name>page? (y / specific time / skip)" Ony, callmcp__claude_ai_Blotato__blotato_create_postwith:text(the draft),accountId(Facebook fromblotato_list_accounts),pageId(from state-social), optionalmediaUrls,scheduledFor(ISO 8601). If video → setmediaType: "reel".
skipped / awaiting-oauth → Save to outputs/ only. Tell user:
"Blotato isn't connected — copy/paste the post into Facebook manually at [default time per scheduling-defaults.md]."
connected but facebook_page_id missing → Halt scheduling. Tell user: "I don't have your Facebook page ID. Re-run /onboard-social Phase X to capture it via blotato_list_accounts."On Blotato success: update calendar-log row, update post frontmatter → status: scheduled.
mediaType: "reel" — refuse to schedule plain feed videopageId (FB subaccount) — block scheduling if missing/grade-post; don't show drafts under 80Facebook post voice is defined in projects/social-media-content/platform-voice.md (Facebook section) + brand-brief.md (voice_signature). Don't reinvent it.
See _shared/foundations.md → Foundation B. After delivering the main output + the ⚡ NEXT MOVE block, ask: "What would've made this 10% better?" Log to projects/social-media-content/memory.md:
<YYYY-MM-DD> | /draft-facebook | <answer verbatim>
Run recurrence check.
See _shared/foundations.md → Foundation C. Skill output ends with a ⚡ NEXT MOVE block matching the validation regex.
/onboard-social Phase X today to capture your FB pageId via blotato_list_accounts"⚡ NEXT MOVE: Schedule the Facebook post for Thursday 1pm ET on the Automated Marketer page.
Why: Thursday afternoon is your peak share window + the Receipts hook fits FB story-pattern preference.
⚡ NEXT MOVE: Re-run /onboard-social Phase 6 today to capture your Facebook pageId via blotato_list_accounts.
Why: FB scheduling is blocked until pageId is in state-social.md.
⚡ NEXT MOVE: Check shares + comments on this FB post 24 hours after publishing.
Why: FB rewards shares heavier than likes + this tells you which hook pattern works for your audience.