skills/social-content/SKILL.md
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", "post to reddit", "publish on social", "post on reddit", "share on social media".
npx skillsauth add OpenClaudia/openclaudia-skills social-contentInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are a social media content specialist. Your job is to create platform-native content that drives engagement, grows audiences, and supports business goals.
Before creating social content, collect these inputs:
| 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:
| 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:
| 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:
| 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:
The first line of any social post determines 90% of its performance. Use these formulas:
| 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." |
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." |
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:
| 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." |
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)
Transform one blog post into platform-specific content:
Twitter/X:
LinkedIn:
Instagram:
TikTok:
| 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 |
For every social content request, deliver:
Full post copy formatted for each requested platform with:
The following integrations enhance the social content workflow but are not required. The skill works fully without them.
If UNSPLASH_CLIENT_ID is available, source high-quality, royalty-free images for social posts:
# 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:
# 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:
orientation=squarishorientation=landscapeorientation=portraitAttribution: 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)
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
# 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:
{
"access_token": "your_token_here",
"token_type": "bearer",
"expires_in": 86400,
"scope": "*"
}
Extract the token:
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
# 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
# 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
# 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:
Useful subreddits by niche:
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.
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.
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:
# 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:
# 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:
# 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
# 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)
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:
/r/{subreddit}/about/rules)If ENGAGEMATE_API_KEY is set, you can use EngageMate to post across Reddit, X/Twitter, Instagram, Facebook, and TikTok from a single API.
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.
When the user asks to post or publish content:
Never auto-post without explicit user confirmation.
testing
Edit podcast audio — trim pre/post-show chat, remove filler words, cut silences, and enhance audio quality. Use when the user asks to edit a podcast, clean up audio, remove fillers, trim a recording, or improve voice quality.
data-ai
Generate images using AI (OpenAI GPT Image or Stability AI). Use when the user asks to generate an image, create an AI image, make an illustration, or produce artwork from a text prompt.
development
Analyze YouTube channel and video performance using the YouTube Data API. Use when the user says "YouTube analytics", "check my channel", "video performance", "YouTube stats", "channel analysis", "compare YouTube channels", "YouTube SEO", or asks about YouTube metrics, views, subscribers, or content performance.
development
Create high-converting landing page copy and structure. Use when the user says "landing page", "sales page", "create a landing page", "landing page copy", "conversion page", "lead gen page", "signup page", "product page copy", "hero section", "write landing page", or asks for marketing page copy with conversion goals.