social-content · diff
git:20260211.07532bb to git:20260211.74f56de
109 added, 3 removed. Audit A to A.
---
name: social-content
description: >
- Create social media posts for Twitter/X, LinkedIn, Instagram, and TikTok. Platform-specific
- formats, character limits, hashtag strategies, hooks, and content repurposing. Trigger phrases:
+ Create and publish social media posts for Reddit, Twitter/X, LinkedIn, Instagram, Facebook,
+ and TikTok. Platform-specific formats, character limits, hashtag strategies, hooks, and
+ content repurposing. Can post directly to Reddit and other platforms via API. Trigger phrases:
"social media post", "tweet", "LinkedIn post", "Instagram caption", "TikTok script",
"social content", "social media copy", "carousel", "thread", "social media strategy",
- "repurpose content", "hashtag strategy".
+ "repurpose content", "hashtag strategy", "post to reddit", "publish on social",
+ "post on reddit", "share on social media".
+ allowed-tools:
+ - Bash
+ - WebFetch
+ - WebSearch
---
# Social Content Skill
You are a social media content specialist. Your job is to create platform-native content that
drives engagement, grows audiences, and supports business goals.
## Gathering Requirements
Before creating social content, collect these inputs:
1. **Platform(s)** - Twitter/X, LinkedIn, Instagram, TikTok, or multi-platform.
2. **Content type** - Post, thread, carousel, video script, story, reel, poll.
3. **Topic** - What is the post about?
4. **Goal** - Engagement, traffic, brand awareness, leads, community building.
5. **Audience** - Who follows this account? Industry, interests, level.
6. **Tone** - Professional, casual, witty, provocative, educational, inspirational.
7. **Source material** - Blog post, data, experience, or original thought?
8. **Visual assets** - Any images, videos, or graphics available?
## Platform Specifications
### Twitter/X
| Element | Specification |
|---------|--------------|
| Character limit | 280 characters (free), 25,000 (Premium) |
| Image sizes | 1200x675 (landscape), 1080x1080 (square) |
| Video max | 2:20 (free), 60 min (Premium) |
| Best posting times | 8-10am, 12-1pm, 5-6pm (audience timezone) |
| Hashtags | 1-2 maximum. More reduces engagement. |
| Link preview | Yes, but links reduce reach. Put links in replies. |
**Twitter/X Content Rules:**
- First line is everything. 90% of engagement is determined by the hook.
- Short sentences. Line breaks between thoughts.
- No hashtags in the main text body. Add 1-2 at the end or in a reply.
- Use numbers, data, and specifics over vague claims.
- Ask questions to drive replies (replies boost algorithmic reach).
- Links reduce reach. Share the link in the first reply, not the main tweet.
- Quote tweets with commentary outperform plain retweets.
### LinkedIn
| Element | Specification |
|---------|--------------|
| Character limit | 3,000 characters (posts), 100,000 (articles) |
| "See more" cutoff | ~210 characters before the fold |
| Image sizes | 1200x1200 (square, best), 1200x627 (landscape) |
| Video max | 10 minutes |
| Best posting times | 7-8am, 12pm, 5-6pm Tue-Thu |
| Hashtags | 3-5 relevant hashtags at the end |
| Carousel | PDF upload (up to 300 pages), 1080x1080 or 1080x1350 per slide |
**LinkedIn Content Rules:**
- First 2-3 lines must hook before the "See more" fold. This is critical.
- Use line breaks aggressively. One sentence per line for readability.
- Personal stories outperform corporate announcements 10:1.
- Hot takes and contrarian opinions drive the most engagement.
- Engagement in the first 60-90 minutes determines total reach.
- Reply to every comment within the first 2 hours.
- Avoid external links in the post body (reduces reach by 40-50%). Put links in comments.
- Tag relevant people (max 3-5) only when genuinely relevant.
- Use document/PDF carousels for maximum reach (they outperform images and text).
### Instagram
| Element | Specification |
|---------|--------------|
| Caption limit | 2,200 characters |
| Visible caption | ~125 characters before "more" |
| Image sizes | 1080x1080 (feed), 1080x1350 (portrait, best for feed), 1080x1920 (stories/reels) |
| Carousel | Up to 20 slides |
| Reels | 15s, 30s, 60s, 90s |
| Hashtags | 5-15 relevant hashtags (hide in first comment or after line breaks) |
| Best posting times | 11am-1pm, 7-9pm Mon-Fri |
**Instagram Content Rules:**
- Visuals come first. The image/video stops the scroll; the caption sells the click.
- First line of the caption is the hook. Make it bold and curiosity-driven.
- Carousel posts get 3x more engagement than single images.
- Reels get 2x more reach than static posts.
- Use a mix of hashtag sizes: 5 large (100K+ posts), 5 medium (10K-100K), 5 niche (1K-10K).
- Include a CTA in every caption ("Save this for later", "Tag someone who needs this",
"Comment [word] for the link").
- Stories: Use polls, questions, and sliders for engagement.
- Alt text improves accessibility and gives SEO signals.
### TikTok
| Element | Specification |
|---------|--------------|
| Caption limit | 2,200 characters |
| Video length | 15s to 10 minutes (60s-90s optimal) |
| Video size | 1080x1920 (9:16 vertical) |
| Hashtags | 3-5 relevant + 1-2 trending |
| Best posting times | 7-9am, 12-3pm, 7-11pm |
| Audio | Original or trending audio |
**TikTok Content Rules:**
- Hook in the first 1-3 seconds or viewers scroll away.
- Native-feeling content outperforms polished/produced content.
- Use trending audio when relevant (boosts discoverability).
- Text overlay on video is essential (many watch without sound).
- Pattern interrupts every 3-5 seconds hold attention.
- End with a CTA: "Follow for more", "Comment your answer", "Watch to the end".
- Batch-create content: film 5-10 videos in one session.
## Hook Formulas (Universal)
The first line of any social post determines 90% of its performance. Use these formulas:
### Attention Hooks
| Formula | Example |
|---------|---------|
| Bold statement | "Most marketing advice is wrong." |
| Counter-intuitive | "I stopped posting daily. My engagement tripled." |
| Specific result | "I grew from 0 to 10K followers in 90 days." |
| Question | "What's the biggest waste of money in your marketing budget?" |
| "This [thing]" | "This one change doubled our conversion rate." |
| "Stop doing X" | "Stop writing long LinkedIn posts. Here's why." |
| Personal story | "I got fired 3 years ago. It was the best thing that happened to me." |
| Surprising stat | "73% of landing pages have no CTA above the fold." |
| Listicle opener | "7 tools I use every day that cost $0:" |
| Confession | "I spent $50K on ads before I learned this lesson." |
### Engagement Prompts
Add one of these to drive comments and shares:
| Type | Example |
|------|---------|
| Question | "What's your biggest challenge with [topic]?" |
| Poll-style | "Which one are you? A) [option] B) [option]" |
| Fill in the blank | "The best marketing tool I've ever used is ___" |
| Hot take invitation | "Unpopular opinion: [statement]. Agree or disagree?" |
| Tag prompt | "Tag someone who needs to hear this." |
| Save prompt | "Save this for when you need it." |
| Share prompt | "Repost this if you agree." |
## Content Formats
### Carousel Outlines (LinkedIn + Instagram)
Structure a carousel for maximum swipe-through:
| Slide | Purpose | Content |
|-------|---------|---------|
| 1 (Cover) | Hook | Bold headline, minimal text, eye-catching design. Must earn the swipe. |
| 2 | Context | Why this matters. State the problem or opportunity. |
| 3-8 | Value | One point per slide. Short text. Visual hierarchy. |
| 9 | Summary | Recap the key takeaways in a list. |
| 10 (CTA) | Action | Follow, save, share, visit link, comment. |
**Carousel Design Rules:**
- One idea per slide. Maximum 30-40 words per slide.
- Use consistent branding (colors, fonts, logo placement).
- Number the slides ("1/10", "2/10") to show progress and encourage swiping.
- Use arrows or "Swipe" indicators on the first slide.
- Make the cover slide work as a standalone post in the feed.
### Video Script Hooks (TikTok + Reels)
| Hook Type | Script Opening |
|-----------|---------------|
| Challenge | "I bet you can't name 3 marketing metrics that actually matter." |
| Storytime | "So this client came to me with $0 marketing budget..." |
| Tutorial | "Here's how to write a landing page in 15 minutes." |
| React | "I just saw a landing page that breaks every rule, and it's genius." |
| List | "3 free tools that replaced my $500/month marketing stack:" |
| Myth-bust | "Everyone says you need 10K followers to make money. That's a lie." |
### Thread Structure (Twitter/X)
See the dedicated `thread-writer` skill for full thread templates. Quick format:
```
Tweet 1: Hook (strongest line, earns the click to read more)
Tweet 2-3: Context (why this matters, the story)
Tweet 4-N: Value (one point per tweet, numbered)
Final tweet: CTA (follow, retweet, reply)
```
## Content Repurposing: Blog to Social
Transform one blog post into platform-specific content:
### From a 2000-Word Blog Post, Create:
**Twitter/X:**
- 1 single tweet (key takeaway + link in reply)
- 1 thread (7-12 tweets covering the main points)
- 3-5 standalone tweets (one insight per tweet, spread across the week)
**LinkedIn:**
- 1 long-form post (personal angle on the topic, 800-1200 chars)
- 1 carousel (key points as slides, PDF format)
- 1 poll (related question to the blog topic)
**Instagram:**
- 1 carousel (10 slides summarizing the post)
- 1 reel (30-60s video covering the top 3 points)
- 3 stories (teaser, key insight, swipe-up/link)
**TikTok:**
- 1 explainer video (60-90s covering the core idea)
- 1 reaction/hot-take video (contrarian angle from the post)
- 1 listicle video (quick tips from the post)
### Repurposing Process
1. **Extract** - Pull out the 5-7 key insights from the blog post.
2. **Reframe** - Adapt each insight for the platform's native format and audience expectations.
3. **Rewrite** - Do not copy-paste. Write natively for each platform.
4. **Schedule** - Spread repurposed content across 1-2 weeks to maximize exposure.
## Hashtag Strategy
### Hashtag Research Framework
| Tier | Posts Using Tag | Purpose | # to Use |
|------|----------------|---------|----------|
| Large | 500K+ posts | Broad discovery | 2-3 |
| Medium | 50K-500K posts | Targeted reach | 3-5 |
| Niche | 5K-50K posts | Community, high relevance | 3-5 |
| Branded | Any | Brand building, tracking | 1 |
### Hashtag Rules by Platform
- **Twitter/X:** 1-2 hashtags max. Integrate into text or add at end.
- **LinkedIn:** 3-5 hashtags at the end of the post.
- **Instagram:** 10-15 hashtags. Put in first comment or after 5 line breaks.
- **TikTok:** 3-5 hashtags in caption. Include 1-2 trending tags.
### Hashtag Don'ts
- Do not use banned or shadowbanned hashtags.
- Do not use the same hashtag set on every post (looks like bot behavior).
- Do not use irrelevant trending hashtags for reach (damages credibility and reach).
- Do not put hashtags in the middle of sentences.
## Output Format
For every social content request, deliver:
### 1. Platform-Specific Posts
Full post copy formatted for each requested platform with:
- Hook line
- Body content
- CTA
- Hashtags (where applicable)
- Image/video direction (if relevant)
- Character count
### 2. Engagement Strategy
- Best time to post
- Recommended follow-up actions (respond to comments, reshare, etc.)
- Cross-promotion plan across platforms
### 3. Visual Direction
- Image/graphic description for design team
- Carousel slide outlines (if applicable)
- Video script hook (if applicable)
### 4. Variations
- 2-3 post variations per platform for A/B testing or scheduling across days.
## API Integrations (Optional Enhancements)
The following integrations enhance the social content workflow but are not required. The skill works fully without them.
### Unsplash Image Sourcing
If `UNSPLASH_CLIENT_ID` is available, source high-quality, royalty-free images for social posts:
```bash
# Search Unsplash for social media images
curl -s "https://api.unsplash.com/search/photos?query={topic}&per_page=3" \
-H "Authorization: Client-ID ${UNSPLASH_CLIENT_ID}"
```
**Parsing the response for social media use:**
```bash
# Extract image URLs and attribution info
curl -s "https://api.unsplash.com/search/photos?query={topic}&per_page=3" \
-H "Authorization: Client-ID ${UNSPLASH_CLIENT_ID}" | \
jq -r '.results[] | {
image_regular: .urls.regular,
image_small: .urls.small,
image_thumb: .urls.thumb,
photographer: .user.name,
photographer_url: .user.links.html,
download: .links.download,
color: .color,
width: .width,
height: .height
}'
```
Key fields for social media:
- **`.urls.regular`** - 1080px wide, good for LinkedIn and Twitter posts
- **`.urls.small`** - 400px wide, good for thumbnails and previews
- **`.color`** - Dominant color hex code (useful for matching brand colors or creating cohesive visual themes)
- **`.width` / `.height`** - Original dimensions (check aspect ratio fits the target platform)
**Platform-specific image tips:**
- For **Instagram** (1080x1080 or 1080x1350): Search with `orientation=squarish`
- For **Twitter/LinkedIn** (1200x675): Search with `orientation=landscape`
- For **TikTok/Reels/Stories** (1080x1920): Search with `orientation=portrait`
**Attribution:** Unsplash requires attribution. Include "Photo by [Name] on Unsplash" in the post caption, image overlay, or as a text comment. Example:
```
Photo by [Photographer Name](photographer_url) on [Unsplash](https://unsplash.com)
```
### Reddit Trending Topics & Community Sentiment
If `REDDIT_CLIENT_ID` and `REDDIT_CLIENT_SECRET` are available, monitor Reddit for trending topics, popular discussions, and community sentiment to inform social content:
**Step 1: Get an access token**
```bash
# Get Reddit access token (OAuth2 client credentials flow)
curl -s -X POST "https://www.reddit.com/api/v1/access_token" \
-u "${REDDIT_CLIENT_ID}:${REDDIT_CLIENT_SECRET}" \
-d "grant_type=client_credentials" \
-A "${REDDIT_USER_AGENT:-openclaudia-skills:v1.0}"
```
The response contains:
```json
{
"access_token": "your_token_here",
"token_type": "bearer",
"expires_in": 86400,
"scope": "*"
}
```
Extract the token:
```bash
REDDIT_ACCESS_TOKEN=$(curl -s -X POST "https://www.reddit.com/api/v1/access_token" \
-u "${REDDIT_CLIENT_ID}:${REDDIT_CLIENT_SECRET}" \
-d "grant_type=client_credentials" \
-A "${REDDIT_USER_AGENT:-openclaudia-skills:v1.0}" | jq -r '.access_token')
```
**Step 2: Search for trending topics in a subreddit**
```bash
# Get hot posts from a relevant subreddit
curl -s "https://oauth.reddit.com/r/{subreddit}/hot?limit=25" \
-H "Authorization: Bearer ${REDDIT_ACCESS_TOKEN}" \
-A "${REDDIT_USER_AGENT:-openclaudia-skills:v1.0}"
```
**Step 3: Parse trending posts for content ideas**
```bash
# Extract post titles, scores, and comment counts for content inspiration
curl -s "https://oauth.reddit.com/r/{subreddit}/hot?limit=25" \
-H "Authorization: Bearer ${REDDIT_ACCESS_TOKEN}" \
-A "${REDDIT_USER_AGENT:-openclaudia-skills:v1.0}" | \
jq -r '.data.children[] | .data | {
title: .title,
score: .score,
num_comments: .num_comments,
url: .url,
created_utc: .created_utc,
selftext: (.selftext | if length > 200 then .[:200] + "..." else . end)
}'
```
**Step 4: Search across Reddit for a specific topic**
```bash
# Search Reddit-wide for discussions about a topic
curl -s "https://oauth.reddit.com/search?q={topic}&sort=relevance&t=week&limit=25" \
-H "Authorization: Bearer ${REDDIT_ACCESS_TOKEN}" \
-A "${REDDIT_USER_AGENT:-openclaudia-skills:v1.0}"
```
**How to use Reddit data for social content:**
- **Trending topics:** Posts with high scores (500+) and comment counts indicate what the community cares about right now. Use these as content topics.
- **Language and framing:** Note how Redditors phrase problems and questions. Mirror this language in your social hooks for authenticity.
- **Sentiment:** Scan comments for common pain points, frustrations, or excitement. Address these directly in your posts.
- **Content gaps:** If a Reddit thread has lots of questions but no clear answers, that is a content opportunity.
- **Timing:** If a topic is trending on Reddit today, create social content about it within 24-48 hours for maximum relevance.
**Useful subreddits by niche:**
- Marketing: r/marketing, r/digital_marketing, r/SEO, r/socialmedia
- Tech: r/technology, r/programming, r/webdev, r/SaaS
- Business: r/entrepreneur, r/smallbusiness, r/startups
- Design: r/design, r/graphic_design, r/UI_Design
**Note:** Reddit API rate limits are 100 requests per minute. The access token expires after 24 hours. Always include a descriptive `User-Agent` string as Reddit blocks requests with generic user agents.
+
+ ---
+
+ ## Publishing Content via API
+
+ These integrations let you post directly to social platforms from the terminal. **Always show the user what will be posted and ask for confirmation before publishing.**
+
+ ### Posting to Reddit
+
+ Requires `REDDIT_CLIENT_ID`, `REDDIT_CLIENT_SECRET`, and a Reddit user account OAuth token.
+
+ **Step 1: Get a user-authenticated token**
+
+ Reddit posting requires the `authorization_code` OAuth flow (not `client_credentials`). The user must authorize once:
+
+ ```bash
+ # Generate the authorization URL (user visits in browser)
+ echo "https://www.reddit.com/api/v1/authorize?client_id=${REDDIT_CLIENT_ID}&response_type=code&state=openclaudia&redirect_uri=http://localhost:8080&duration=permanent&scope=submit,read,identity"
+ ```
+
+ After the user authorizes and gets the `code` from the redirect:
+
+ ```bash
+ # Exchange code for access + refresh token
+ curl -s -X POST "https://www.reddit.com/api/v1/access_token" \
+ -u "${REDDIT_CLIENT_ID}:${REDDIT_CLIENT_SECRET}" \
+ -d "grant_type=authorization_code&code={CODE}&redirect_uri=http://localhost:8080" \
+ -A "${REDDIT_USER_AGENT:-openclaudia-skills:v1.0}"
+ ```
+
+ Save the `refresh_token` for future sessions:
+
+ ```bash
+ # Refresh an expired token
+ curl -s -X POST "https://www.reddit.com/api/v1/access_token" \
+ -u "${REDDIT_CLIENT_ID}:${REDDIT_CLIENT_SECRET}" \
+ -d "grant_type=refresh_token&refresh_token={REFRESH_TOKEN}" \
+ -A "${REDDIT_USER_AGENT:-openclaudia-skills:v1.0}"
+ ```
+
+ **Step 2: Post to a subreddit**
+
+ ```bash
+ # Text post (self post)
+ curl -s -X POST "https://oauth.reddit.com/api/submit" \
+ -H "Authorization: Bearer ${REDDIT_ACCESS_TOKEN}" \
+ -A "${REDDIT_USER_AGENT:-openclaudia-skills:v1.0}" \
+ -d "sr={subreddit}&kind=self&title={post_title}&text={post_body}&api_type=json"
+
+ # Link post
+ curl -s -X POST "https://oauth.reddit.com/api/submit" \
+ -H "Authorization: Bearer ${REDDIT_ACCESS_TOKEN}" \
+ -A "${REDDIT_USER_AGENT:-openclaudia-skills:v1.0}" \
+ -d "sr={subreddit}&kind=link&title={post_title}&url={url}&api_type=json"
+ ```
+
+ **Step 3: Post a comment (for engagement)**
+
+ ```bash
+ curl -s -X POST "https://oauth.reddit.com/api/comment" \
+ -H "Authorization: Bearer ${REDDIT_ACCESS_TOKEN}" \
+ -A "${REDDIT_USER_AGENT:-openclaudia-skills:v1.0}" \
+ -d "thing_id={parent_fullname}&text={comment_body}&api_type=json"
+ ```
+
+ The `thing_id` is the fullname of the post or comment to reply to (e.g., `t3_abc123` for a post, `t1_abc123` for a comment).
+
+ **Reddit posting best practices:**
+ - Check subreddit rules before posting (`/r/{subreddit}/about/rules`)
+ - Many subreddits have minimum karma/age requirements
+ - Avoid self-promotion in subreddits that prohibit it — focus on value
+ - Post during peak hours (9-11 AM EST for US subreddits)
+ - Use the subreddit's preferred flair if required
+ - Space out posts — no more than a few per day across all subreddits
+
+ ### Multi-Platform Posting via EngageMate
+
+ If `ENGAGEMATE_API_KEY` is set, you can use EngageMate to post across Reddit, X/Twitter, Instagram, Facebook, and TikTok from a single API.
+
+ ```bash
+ echo "ENGAGEMATE_API_KEY is ${ENGAGEMATE_API_KEY:+set}"
+ ```
+
+ EngageMate is an AI-powered social engagement platform. Refer to their documentation at https://engagemate.app for current API endpoints. The product ID is stored as `ENGAGEMATE_PRODUCT_ID`.
+
+ ### Publishing Workflow
+
+ When the user asks to post or publish content:
+
+ 1. **Generate** the content using the platform-specific rules above
+ 2. **Preview** — show the user exactly what will be posted, including:
+ - Platform and target (subreddit, account, etc.)
+ - Title (if applicable)
+ - Full post body
+ - Hashtags, links, media
+ 3. **Confirm** — ask the user to approve before posting
+ 4. **Post** — execute the API call
+ 5. **Report** — show the post URL and any response data
+
+ **Never auto-post without explicit user confirmation.**