Facebook Page Post Writer
Draft a short punchy Facebook Page post, or a longer story post, using a 2026 Facebook hook formula (one-line opinion, tiny number, ask-the-page question, this-or-that, useful tip, story post) picked by goal (shares, comments, reactions).
How to use it
- Hit Copy the whole skill.
- Claude: ⋯ → Download .md, then Customize → Skills → Add → Upload skill.
ChatGPT: make a Project and paste it into Instructions.
Neither? Paste it at the top of a new chat — it works for that chat. - Describe your job in plain words. The AI follows the skill from there.
npx degit sergebulaev/facebook-skills/.codex-marketplace/facebook-skills/skills/fb-post-writer#main ~/.claude/skills/fb-post-writerFor one project only, change the path to .claude/skills/fb-post-writer.
Not working?
- Check which app you pasted it into — the steps above name the right one.
- Some skills need the paid tier of Claude or ChatGPT.
Paste into Claude, ChatGPT or Cursor.
Show the full text128 lines
Facebook Page Post Writer
Ship a short punchy Page post, or a longer story post when the material earns it, using hook shapes that actually travel on a Facebook Page in 2026. The single highest-engagement move on a Page is the short post: posts under 80 characters get a reported ~66% engagement lift, so this skill leads short and only goes long on purpose.
When to use
- User says "write me a Facebook Page post about X"
- User has a topic or a rough line and wants a sharper, shorter hook
- User wants to pick a proven Page-post shape and fill in their voice
- User wants a quick draft that auto-publishes on approval
Formulas this skill uses
| Code | Formula | Primary goal | Best for |
|---|---|---|---|
| FB1 | One-Line Opinion | shares | a sharp, defensible take in one short line |
| FB2 | The Tiny Number | shares | one concrete number that reframes a thing |
| FB3 | Ask-the-Page Question | comments | an easy, fun question the audience answers |
| FB4 | This-or-That | comments | a friendly binary choice readers pick a side on |
| FB5 | Relatable One-Liner | reactions | a specific shared moment, no setup |
| FB6 | Behind-the-Scenes | reactions | a real human moment inside the business |
| FB7 | Useful Tip | shares | one usable tip the reader passes on |
| FB8 | Story Post with a Turn | shares | a longer true story with a quotable turn |
| FB9 | Announcement with Stakes | shares | a launch or news, led human not corporate |
| FB10 | Community Spotlight | shares | featuring a real customer or team member |
Full skeletons in ../../references/hook-formulas.md. FB1-FB7 are short-post
shapes (lead here). FB8-FB10 are longer story shapes (use on purpose).
Pick by goal first
| Goal | Reach for |
|---|---|
| Shares | FB1, FB2, FB7, FB8, FB9, FB10 |
| Comments | FB3, FB4, FB8 |
| Reactions | FB5, FB6 |
Steps
Voice profile first (all drafts). If ../../references/voice-profile.md has filled: yes, load it and match the user's voice fingerprint, hard rules, and CTA/link style throughout. If it is not filled, mention once that fb-humanizer --mode profile can learn their voice from a few posts, then proceed with the generic voice rules.
- Gather inputs. Topic, angle, any rough draft, target audience (B2C / B2B / local / community), and the goal (shares / comments / reactions).
- Pick the container. Default to a short post (aim under 80 chars). If it is one opinion, number, question, or moment, it stays short. Only escalate to a story post (FB8-FB10) if the idea is a true narrative, a real launch, or a spotlight that needs room.
- Pick the formula. Use the goal table to shortlist, then suggest 2-3 that also fit the topic and let the user choose.
- Draft the post. Fill the skeleton in the user's voice. Respect the 2026
Facebook rules:
- Lead short. Try to land the whole point under 80 chars.
- First line carries the post (Facebook folds longer posts behind "See more").
- One idea per post. Line breaks as beats.
- 0-2 hashtags, 0-2 emoji, none on a serious take.
- If the post includes a link, write framing text above it (Facebook builds a preview card) and warn that link posts reach fewer people organically.
- Humanizer pass. Scrub 2026 AI vocab by paragraph density, cap em
dashes (about one per 100 words, never swap one for a period), strip "We
are thrilled to announce" and every corporate opener, break stacked triads
and reveal bridges. Fix only a story paragraph that reads machine-flat;
never manufacture variance, and never fragment a short post for punch. Add
an odd-precision number with a named referent or a named entity where the
claim allows it. Canonical rules:
fb-humanizerV3. - Optional audit. Invoke
fb-humanizer --mode auditfor a pass-fail check. - Approval card. Show: formula used, full draft, char count (flag if it crosses the 80-char sweet spot), suggested posting window, primary goal.
- On approval. Call
lib.publish(kind="post", draft_text=<approved>, target_url="https://www.facebook.com/YourPage", platforms=[<FACEBOOK_PLATFORM_ID>], scheduled_time=<iso_or_None>). For a deliberate long story post, passkind="story". The wrapper handles Publora / manual / diy routing.
Hard rules
Global voice rules: see root SKILL.md Voice rules. Additional skill-specific
rules:
- Lead short. Default to under 80 chars; that is the engagement sweet spot. A long post is a deliberate choice for a story, not the fallback.
- The first line must carry the post on its own (everything above the "See more" fold).
- One specific number where the claim allows it. "4 minutes" beats "fast".
- Never open with "We are thrilled / excited / delighted to announce".
- Do not beg for engagement. Earn the share or comment with the post itself.
Anti-patterns (skill will refuse)
- "We are thrilled to announce.." and every variant.
- Engagement bait ("LIKE and SHARE if you agree", "comment YES", "tag 3 friends").
- Em dashes above the cap (more than about one per 100 words), or an em dash swapped for a period.
- "Here's what" or "Stop X, start Y" as the opener; "The result?" as a reveal.
- Announced candor ("We'll be honest with you", "real talk") with no dated fact behind it.
- Staccato stacks ("No X. No Y. Just Z.") and one-word lines added for drama.
- Padding a one-line idea into five paragraphs.
- Rule-of-three lists without specifics.
- "leverage", "fundamentally", "game-changer", "deep dive".
- A bare external link with no framing text.
- 5+ hashtags stuffed at the bottom.
Resources
../../references/hook-formulas.md- all 10 Facebook formula skeletons (FB1-FB7 short, FB8-FB10 story)../../references/algorithm-heuristics.md- 2026 Facebook Page ranking rules (signals, the under-80 boost, timing, limits)references/short-post-checklist.md- the per-post scrub and the under-80 fit check
Optional illustration
Offer a generated image when a visual would lift reach. Draft a prompt and call
lib.illustrate(prompt, kind="wide"), pulling brand handle/color from Voice &
Brand Profile section 6 for a pixel-exact overlay. Show the returned url + cost,
then attach on publish via media_urls=[url]. Full workflow (incl. quote-cards):
../fb-humanizer/sub-skills/illustration.md. No Pixfaro key -> it drafts the prompt for you to generate manually.
Related skills
fb-humanizer- aggressive AI-tell scrubber, plus--mode auditfor reviewfb-hook-extractor- reverse-engineer a hook from a Page post you admirefb-content-planner- plan a week of these postsfb-engagement-drafter- reply to the comments your post earns
| 1 | |
| 2 | name fb-post-writer |
| 3 | description "Draft a short punchy Facebook Page post, or a longer story post, using a 2026 Facebook hook formula (one-line opinion, tiny number, ask-the-page question, this-or-that, useful tip, story post) picked by goal (shares, comments, reactions). Favors the under-80-character engagement sweet spot, runs the humanizer pass, and publishes via Publora on approval. Use to write a Page post from notes. Not for replying to comments (use fb-engagement-drafter) or auditing a draft (use fb-humanizer)." |
| 4 | |
| 5 | |
| 6 | # Facebook Page Post Writer |
| 7 | |
| 8 | Ship a short punchy Page post, or a longer story post when the material earns it, |
| 9 | using hook shapes that actually travel on a Facebook Page in 2026. The single |
| 10 | highest-engagement move on a Page is the short post: posts under 80 characters |
| 11 | get a reported ~66% engagement lift, so this skill leads short and only goes long |
| 12 | on purpose. |
| 13 | |
| 14 | ## When to use |
| 15 | |
| 16 | User says "write me a Facebook Page post about X" |
| 17 | User has a topic or a rough line and wants a sharper, shorter hook |
| 18 | User wants to pick a proven Page-post shape and fill in their voice |
| 19 | User wants a quick draft that auto-publishes on approval |
| 20 | |
| 21 | ## Formulas this skill uses |
| 22 | |
| 23 | | Code | Formula | Primary goal | Best for | |
| 24 | |---|---|---|---| |
| 25 | | FB1 | One-Line Opinion | shares | a sharp, defensible take in one short line | |
| 26 | | FB2 | The Tiny Number | shares | one concrete number that reframes a thing | |
| 27 | | FB3 | Ask-the-Page Question | comments | an easy, fun question the audience answers | |
| 28 | | FB4 | This-or-That | comments | a friendly binary choice readers pick a side on | |
| 29 | | FB5 | Relatable One-Liner | reactions | a specific shared moment, no setup | |
| 30 | | FB6 | Behind-the-Scenes | reactions | a real human moment inside the business | |
| 31 | | FB7 | Useful Tip | shares | one usable tip the reader passes on | |
| 32 | | FB8 | Story Post with a Turn | shares | a longer true story with a quotable turn | |
| 33 | | FB9 | Announcement with Stakes | shares | a launch or news, led human not corporate | |
| 34 | | FB10 | Community Spotlight | shares | featuring a real customer or team member | |
| 35 | |
| 36 | Full skeletons in `../../references/hook-formulas.md`. FB1-FB7 are short-post |
| 37 | shapes (lead here). FB8-FB10 are longer story shapes (use on purpose). |
| 38 | |
| 39 | ### Pick by goal first |
| 40 | |
| 41 | | Goal | Reach for | |
| 42 | |---|---| |
| 43 | | Shares | FB1, FB2, FB7, FB8, FB9, FB10 | |
| 44 | | Comments | FB3, FB4, FB8 | |
| 45 | | Reactions | FB5, FB6 | |
| 46 | |
| 47 | ## Steps |
| 48 | |
| 49 | **Voice profile first (all drafts).** If `../../references/voice-profile.md` has `filled: yes`, load it and match the user's voice fingerprint, hard rules, and CTA/link style throughout. If it is not filled, mention once that `fb-humanizer --mode profile` can learn their voice from a few posts, then proceed with the generic voice rules. |
| 50 | |
| 51 | **Gather inputs.** Topic, angle, any rough draft, target audience (B2C / B2B / |
| 52 | local / community), and the goal (shares / comments / reactions). |
| 53 | **Pick the container.** Default to a short post (aim under 80 chars). If it is |
| 54 | one opinion, number, question, or moment, it stays short. Only escalate to a |
| 55 | story post (FB8-FB10) if the idea is a true narrative, a real launch, or a |
| 56 | spotlight that needs room. |
| 57 | **Pick the formula.** Use the goal table to shortlist, then suggest 2-3 that |
| 58 | also fit the topic and let the user choose. |
| 59 | **Draft the post.** Fill the skeleton in the user's voice. Respect the 2026 |
| 60 | Facebook rules: |
| 61 | Lead short. Try to land the whole point under 80 chars. |
| 62 | First line carries the post (Facebook folds longer posts behind "See more"). |
| 63 | One idea per post. Line breaks as beats. |
| 64 | 0-2 hashtags, 0-2 emoji, none on a serious take. |
| 65 | If the post includes a link, write framing text above it (Facebook builds a |
| 66 | preview card) and warn that link posts reach fewer people organically. |
| 67 | **Humanizer pass.** Scrub 2026 AI vocab by paragraph density, cap em |
| 68 | dashes (about one per 100 words, never swap one for a period), strip "We |
| 69 | are thrilled to announce" and every corporate opener, break stacked triads |
| 70 | and reveal bridges. Fix only a story paragraph that reads machine-flat; |
| 71 | never manufacture variance, and never fragment a short post for punch. Add |
| 72 | an odd-precision number with a named referent or a named entity where the |
| 73 | claim allows it. Canonical rules: `fb-humanizer` V3. |
| 74 | **Optional audit.** Invoke `fb-humanizer --mode audit` for a pass-fail check. |
| 75 | **Approval card.** Show: formula used, full draft, char count (flag if it |
| 76 | crosses the 80-char sweet spot), suggested posting window, primary goal. |
| 77 | **On approval.** Call `lib.publish(kind="post", draft_text=<approved>, |
| 78 | target_url="https://www.facebook.com/YourPage", platforms=[<FACEBOOK_PLATFORM_ID>], |
| 79 | scheduled_time=<iso_or_None>)`. For a deliberate long story post, pass |
| 80 | `kind="story"`. The wrapper handles Publora / manual / diy routing. |
| 81 | |
| 82 | ## Hard rules |
| 83 | |
| 84 | Global voice rules: see root `SKILL.md` Voice rules. Additional skill-specific |
| 85 | rules: |
| 86 | |
| 87 | Lead short. Default to under 80 chars; that is the engagement sweet spot. A |
| 88 | long post is a deliberate choice for a story, not the fallback. |
| 89 | The first line must carry the post on its own (everything above the "See more" |
| 90 | fold). |
| 91 | One specific number where the claim allows it. "4 minutes" beats "fast". |
| 92 | Never open with "We are thrilled / excited / delighted to announce". |
| 93 | Do not beg for engagement. Earn the share or comment with the post itself. |
| 94 | |
| 95 | ## Anti-patterns (skill will refuse) |
| 96 | |
| 97 | "We are thrilled to announce.." and every variant. |
| 98 | Engagement bait ("LIKE and SHARE if you agree", "comment YES", "tag 3 friends"). |
| 99 | Em dashes above the cap (more than about one per 100 words), or an em dash swapped for a period. |
| 100 | "Here's what" or "Stop X, start Y" as the opener; "The result?" as a reveal. |
| 101 | Announced candor ("We'll be honest with you", "real talk") with no dated fact behind it. |
| 102 | Staccato stacks ("No X. No Y. Just Z.") and one-word lines added for drama. |
| 103 | Padding a one-line idea into five paragraphs. |
| 104 | Rule-of-three lists without specifics. |
| 105 | "leverage", "fundamentally", "game-changer", "deep dive". |
| 106 | A bare external link with no framing text. |
| 107 | 5+ hashtags stuffed at the bottom. |
| 108 | |
| 109 | ## Resources |
| 110 | |
| 111 | `../../references/hook-formulas.md` - all 10 Facebook formula skeletons (FB1-FB7 short, FB8-FB10 story) |
| 112 | `../../references/algorithm-heuristics.md` - 2026 Facebook Page ranking rules (signals, the under-80 boost, timing, limits) |
| 113 | `references/short-post-checklist.md` - the per-post scrub and the under-80 fit check |
| 114 | |
| 115 | ## Optional illustration |
| 116 | |
| 117 | Offer a generated image when a visual would lift reach. Draft a prompt and call |
| 118 | `lib.illustrate(prompt, kind="wide")`, pulling brand handle/color from Voice & |
| 119 | Brand Profile section 6 for a pixel-exact overlay. Show the returned `url` + `cost`, |
| 120 | then attach on publish via `media_urls=[url]`. Full workflow (incl. quote-cards): |
| 121 | `../fb-humanizer/sub-skills/illustration.md`. No Pixfaro key -> it drafts the prompt for you to generate manually. |
| 122 | ## Related skills |
| 123 | |
| 124 | `fb-humanizer` - aggressive AI-tell scrubber, plus `--mode audit` for review |
| 125 | `fb-hook-extractor` - reverse-engineer a hook from a Page post you admire |
| 126 | `fb-content-planner` - plan a week of these posts |
| 127 | `fb-engagement-drafter` - reply to the comments your post earns |
| 128 |