Skip to content
All Skills

Social Media Content Kit Generator

Creates platform-specific content (Twitter/X threads, LinkedIn posts, Instagram captions) from a single idea, with hashtag research and character validation. Optionally posts directly to platforms via Playwright MCP. Prerequisites: brave-search MCP, python3, playwright MCP.

Content Creation|v1|Updated 5/19/2026
MCP get_skill({ skillId: "social-media-content-kit-generator-f59469ed" })

Use this skill with your agent

Create a free account and connect via MCP

Get Started Free
# Social Media Content Kit Generator

Turn one idea into platform-specific content for Twitter/X, LinkedIn, and Instagram. Optionally post directly via Playwright.

## When to Use

- "Create social media posts about {topic}"
- "Turn this blog post into a Twitter thread and post it"
- "Generate a LinkedIn post and publish it"

## Requirements

- **Brave Search MCP** for trending hashtag and topic research
- **python3** for character counting and scheduling
- **Playwright MCP** for posting content directly to platforms (user must be logged in)

## Workflow

### Step 1 โ€” Content Brief

- **Source content** (blog post, idea, announcement, lesson learned)
- **Platforms** (Twitter/X, LinkedIn, Instagram, or all)
- **Brand voice** (professional, witty, inspirational, educational)
- **Goal** (awareness, engagement, traffic, leads)
- **CTA** (link to click, comment prompt, share, DM)
- **Auto-post?** (yes/no โ€” if yes, will post via Playwright after approval)

### Step 2 โ€” Research Trends

```
brave_web_search: "{TOPIC} trending hashtags {PLATFORM} {YEAR}"
brave_web_search: "viral {PLATFORM} post format {TOPIC} examples"
brave_web_search: "best time to post {PLATFORM} engagement {YEAR}"
```

### Step 3 โ€” Generate Platform Content

**Twitter/X Thread:**
```markdown
### ๐Ÿฆ Twitter/X Thread ({N} tweets)

**1/** {Hook โ€” bold claim, question, or contrarian take} ๐Ÿงต

**2/** {Supporting point 1}

**3/** {Supporting point 2}

**4/** {Supporting point 3 โ€” concrete example or data}

**5/** {Key takeaway or reframe}

**6/** {CTA}
Like this? Follow me for more on {topic}.
RT the first tweet to help others find this.

---
Characters per tweet: all under 280 โœ…
Hashtags: #{tag1} #{tag2} (on tweet 1 only)
```

**LinkedIn Post:**
```markdown
### ๐Ÿ’ผ LinkedIn Post

{Hook line โ€” personal story or surprising stat}

{Blank line}

{3-5 short paragraphs with line breaks between each}

{Bullet points or numbered list with key insights}

{CTA โ€” question to encourage comments}

---
Character count: {N}/3000
Hashtags: #{tag1} #{tag2} #{tag3} (3-5 max, at the end)
```

**Instagram Caption:**
```markdown
### ๐Ÿ“ธ Instagram Caption

{Hook line โ€” first 125 chars visible before "more"}

{Body โ€” storytelling or value, 2-3 short paragraphs}

{CTA โ€” "Save this for later" / "Tag someone who needs this"}

.
.
.
#{tag1} #{tag2} #{tag3} ... (up to 30 hashtags)

---
Image suggestion: {description of ideal visual}
```

### Step 4 โ€” Character Count Validation

```bash
python3 << 'PYEOF'
tweets = [
    "{tweet 1 text}",
    "{tweet 2 text}",
    # ...
]

for i, tweet in enumerate(tweets, 1):
    chars = len(tweet)
    status = "โœ…" if chars <= 280 else "๐Ÿ”ด OVER"
    print(f"Tweet {i}: {chars}/280 chars {status}")

linkedin = """{LINKEDIN_POST}"""
print(f"\nLinkedIn: {len(linkedin)}/3000 chars")

instagram = """{INSTAGRAM_CAPTION}"""
print(f"Instagram: {len(instagram)}/2200 chars")
PYEOF
```

### Step 5 โ€” Present for Approval

Show all generated content to the user. **Get explicit approval before posting to any platform.**

### Step 6 โ€” Post via Playwright (after approval)

Only if user approved. User must be logged into the platform in the browser session.

**IMPORTANT:** Each platform may show a cookie consent banner on first visit. Look for "Accept" / "Accept cookies" / "Allow all cookies" in the snapshot and click it before proceeding with any other interaction. Also dismiss any promotional pop-ups or upsell dialogs that appear.

**Post to Twitter/X:**
```
browser_navigate: "https://x.com/compose/post"
browser_snapshot
โ€” Handle any cookie consent or login prompts
browser_click: tweet compose text area
browser_type: "{TWEET_1_TEXT}"
browser_snapshot
```

Show the snapshot to the user for final confirmation, then:
```
browser_click: "Post" button
browser_snapshot
```

For threads, after posting tweet 1:
```
browser_click: "Add another post" / reply to own tweet
browser_type: "{TWEET_2_TEXT}"
browser_click: "Post"
```

Repeat for each tweet in the thread.

**Post to LinkedIn:**
```
browser_navigate: "https://www.linkedin.com/feed/"
browser_snapshot
โ€” Handle cookie consent banner if shown
browser_click: "Start a post" button
browser_snapshot
browser_type: "{LINKEDIN_POST_TEXT}"
browser_snapshot
```

LinkedIn uses TipTap rich text editors. If `browser_type` doesn't work on the compose box, try: `browser_click` the text area โ†’ `browser_type` the text.

Show snapshot for confirmation, then:
```
browser_click: "Post" button
browser_snapshot
โ€” Dismiss any Premium upsell or promotional dialogs
```

**Post to Instagram (web):**
```
browser_navigate: "https://www.instagram.com/"
browser_snapshot
โ€” Handle cookie consent banner if shown
browser_click: "Create" / new post button
browser_snapshot
```

Note: Instagram web has limited posting support. If image upload is required, instruct the user to upload the image manually, then fill in the caption:
```
browser_type: "{INSTAGRAM_CAPTION}"
browser_snapshot
browser_click: "Share" button
browser_snapshot
```

### Step 7 โ€” Save Content Kit

```bash
mkdir -p outputs/content/social
cat > "outputs/content/social/{TOPIC_SLUG}-{DATE}.md" << 'EOF'
{ALL_PLATFORM_CONTENT}

## Posting Status
- Twitter/X: {Posted โœ… / Not posted}
- LinkedIn: {Posted โœ… / Not posted}
- Instagram: {Posted โœ… / Not posted}
EOF
```

## Important Rules

- **ALWAYS show content and get user approval before posting** โ€” never auto-post without confirmation
- **Handle cookie consent banners** before interacting with any platform
- **Dismiss promotional pop-ups/upsell dialogs** that appear after actions (especially LinkedIn Premium)
- Take a browser snapshot before AND after clicking Post to verify
- If a platform's UI changes or an element isn't found, stop and tell the user
- Each platform version must be native to that platform โ€” not copy-paste
- Twitter: hook must be in first tweet, thread must be skimmable
- LinkedIn: first line is everything โ€” it appears before "see more"
- Instagram: first 125 characters must hook โ€” rest is below fold
- Don't over-hashtag โ€” 2 on Twitter, 3-5 on LinkedIn, up to 30 on Instagram
- If user declines auto-posting, save content to file for manual posting

## Example Prompts

- "Turn this blog post into a Twitter thread and post it"
- "Create a LinkedIn post about remote work tips and publish it"
- "Generate social media content about startup lessons โ€” just save it, don't post"
#content#social-media#marketing#brave-search#playwrightbrave-searchpython3playwright