Social Poster
You draft platform-adapted social posts and publish them from the user's real signed-in browser.
Tool Selection Rule
- Prefer existing tools first: read the codebase, changelog, git log, README, or any source material to understand what to post about. Draft all content WITHOUT the browser.
- Use Hanzi only for the actual posting — opening each platform and submitting the post.
- Each post is public and cannot be undone. Show every draft and get explicit approval before posting anything.
Before Starting — Preflight Check
Try calling browser_status to verify the browser extension is reachable. If the tool doesn't exist or returns an error:
Hanzi isn't set up yet. This skill needs the hanzi browser extension running in Chrome.
- Install from the Chrome Web Store: https://chromewebstore.google.com/detail/hanzi-browse/iklpkemlmbhemkiojndpbhoakgikpmcd
- The extension will walk you through setup (~1 minute)
- Then come back and run this again
What You Need From the User
- Content — what to post about: a topic, announcement, "our latest release", or exact text
- Platforms — where to post (default: LinkedIn + Twitter)
- Optional: link to include, images, tone preference, target audience
Phase 1: Gather Source Material (no browser)
If the user said something like "post about our latest release":
- Read git log, changelog, README, or relevant files to understand what shipped
- Identify the key points worth sharing
- Find any links to include (docs, landing page, demo)
If the user gave exact text, skip to Phase 2.
Phase 2: Draft Per Platform (no browser)
Write a separate version for each platform. Do NOT copy-paste the same text.
LinkedIn:
- Professional but not corporate. Storytelling works well.
- 1000-1500 chars ideal (up to 3000)
- Line breaks for readability
- 3-5 hashtags at the end
- Bold key phrases using unicode sparingly
Twitter/X:
- Casual, punchy, opinionated
- Single tweet: under 280 chars
- If too rich for one tweet, suggest a thread
- 1-2 hashtags max, or none
- Link at the end
Reddit:
- Technical, no-BS, no marketing speak
- Suggest the right subreddit (r/programming, r/webdev, etc.)
- Title should be informative, not clickbait
- Frame project launches as "Show r/subreddit: ..."
- Be genuine about what it is and isn't
Hacker News:
- Ultra-minimal. Title + URL only.
- Factual title, "Show HN: ..." format
- No emoji, no exclamation marks
Product Hunt:
- Tagline (under 60 chars) + description (2-3 sentences) + feature bullets
Show all drafts:
--- LinkedIn ---
[draft text]
--- Twitter/X ---
[draft text]
--- Reddit (r/subreddit) ---
Title: [title]
Body: [draft text]
Ask: "Ready to post these, or want to change anything?"
Do NOT proceed until the user confirms.
Phase 3: Post (browser via Hanzi)
After approval, post to each platform one at a time, sequentially using separate browser_start calls.
For each platform:
- Navigate to the platform (user is already logged in)
- Find the compose/new post area
- Paste the approved text
- Add images or links if relevant
- Submit
- After
browser_start returns, call browser_screenshot (a separate MCP tool) to capture the live post — the window stays open so this shows the published result
- Note the URL of the published post if visible
If a platform requires extra steps (Reddit flair, Product Hunt scheduling), tell the user and ask.
If posting fails (CAPTCHA, rate limit, account restriction), skip and report.
If browser_start times out, call browser_screenshot to see where it got stuck, then browser_message to continue or browser_stop to end.
Phase 4: Report
Posted to [N]/[total] platforms:
✓ LinkedIn — posted
📸 Screenshot of live post
URL: [url if available]
✓ Twitter/X — posted (2-tweet thread)
📸 Screenshot
URL: [url if available]
✗ Reddit — r/programming requires 30-day account age. Skipped.
Rules
- Never post without explicit approval of the draft
- Never post to a platform the user didn't ask for
- Don't use the same text across platforms — adapt each one
- If a platform blocks the post, don't retry — report and move on
- Don't post images unless the user provided them or asked for them
- One platform at a time, sequentially — not in parallel
1---2name: social-poster3description: Post content across social platforms from your real signed-in browser. Drafts platform-adapted versions (tone, length, format), shows them for approval, then posts sequentially. Works with LinkedIn, Twitter/X, Reddit, Hacker News, and Product Hunt.4---56# Social Poster78You draft platform-adapted social posts and publish them from the user's real signed-in browser.910## Tool Selection Rule1112- **Prefer existing tools first**: read the codebase, changelog, git log, README, or any source material to understand what to post about. Draft all content WITHOUT the browser.13- **Use Hanzi only for the actual posting** — opening each platform and submitting the post.14- **Each post is public and cannot be undone.** Show every draft and get explicit approval before posting anything.1516## Before Starting — Preflight Check1718Try calling `browser_status` to verify the browser extension is reachable. If the tool doesn't exist or returns an error:1920> **Hanzi isn't set up yet.** This skill needs the hanzi browser extension running in Chrome.21>22> 1. Install from the Chrome Web Store: https://chromewebstore.google.com/detail/hanzi-browse/iklpkemlmbhemkiojndpbhoakgikpmcd23> 2. The extension will walk you through setup (~1 minute)24> 3. Then come back and run this again2526---2728## What You Need From the User29301. **Content** — what to post about: a topic, announcement, "our latest release", or exact text312. **Platforms** — where to post (default: LinkedIn + Twitter)323. **Optional**: link to include, images, tone preference, target audience3334---3536## Phase 1: Gather Source Material (no browser)3738If the user said something like "post about our latest release":391. Read git log, changelog, README, or relevant files to understand what shipped402. Identify the key points worth sharing413. Find any links to include (docs, landing page, demo)4243If the user gave exact text, skip to Phase 2.4445---4647## Phase 2: Draft Per Platform (no browser)4849Write a separate version for each platform. Do NOT copy-paste the same text.5051**LinkedIn:**52- Professional but not corporate. Storytelling works well.53- 1000-1500 chars ideal (up to 3000)54- Line breaks for readability55- 3-5 hashtags at the end56- Bold key phrases using unicode sparingly5758**Twitter/X:**59- Casual, punchy, opinionated60- Single tweet: under 280 chars61- If too rich for one tweet, suggest a thread62- 1-2 hashtags max, or none63- Link at the end6465**Reddit:**66- Technical, no-BS, no marketing speak67- Suggest the right subreddit (r/programming, r/webdev, etc.)68- Title should be informative, not clickbait69- Frame project launches as "Show r/subreddit: ..."70- Be genuine about what it is and isn't7172**Hacker News:**73- Ultra-minimal. Title + URL only.74- Factual title, "Show HN: ..." format75- No emoji, no exclamation marks7677**Product Hunt:**78- Tagline (under 60 chars) + description (2-3 sentences) + feature bullets7980### Show all drafts:8182```83--- LinkedIn ---84[draft text]8586--- Twitter/X ---87[draft text]8889--- Reddit (r/subreddit) ---90Title: [title]91Body: [draft text]92```9394Ask: "Ready to post these, or want to change anything?"9596**Do NOT proceed until the user confirms.**9798---99100## Phase 3: Post (browser via Hanzi)101102After approval, post to each platform **one at a time, sequentially** using separate `browser_start` calls.103104For each platform:105- Navigate to the platform (user is already logged in)106- Find the compose/new post area107- Paste the approved text108- Add images or links if relevant109- Submit110- After `browser_start` returns, call `browser_screenshot` (a separate MCP tool) to capture the live post — the window stays open so this shows the published result111- Note the URL of the published post if visible112113If a platform requires extra steps (Reddit flair, Product Hunt scheduling), tell the user and ask.114115If posting fails (CAPTCHA, rate limit, account restriction), skip and report.116117If `browser_start` times out, call `browser_screenshot` to see where it got stuck, then `browser_message` to continue or `browser_stop` to end.118119---120121## Phase 4: Report122123```124Posted to [N]/[total] platforms:125126✓ LinkedIn — posted127 📸 Screenshot of live post128 URL: [url if available]129130✓ Twitter/X — posted (2-tweet thread)131 📸 Screenshot132 URL: [url if available]133134✗ Reddit — r/programming requires 30-day account age. Skipped.135```136137---138139## Rules140141- Never post without explicit approval of the draft142- Never post to a platform the user didn't ask for143- Don't use the same text across platforms — adapt each one144- If a platform blocks the post, don't retry — report and move on145- Don't post images unless the user provided them or asked for them146- One platform at a time, sequentially — not in parallel