HappyCapy-specific skill for publishing content to 13+ social media platforms (Instagram, Twitter, LinkedIn, Threads, Facebook, TikTok, YouTube, Pinterest, Reddit, Telegram, Discord, etc.) simultaneously with platform-optimized styles, optional AI-generated media (video/image), and smart error handling. Uses Late MCP integration available in HappyCapy environment. Use when you need to cross-post to social media, create multi-platform marketing content, share announcements across platforms, publish with platform-specific adaptations, generate AI media for posts, or manage social media publishing workflows. Supports interactive content creation with user-guided platform selection, media generation choices, preview before publish, and automatic retry with character limit adjustments.
Publish content to 13+ social media platforms with platform-optimized styles, optional AI-generated media, and smart error handling.
Environment Note: This skill is designed for HappyCapy environment with fixed paths:
/home/node/.claude.json/home/node/.mcp.json/home/node/.claude/settings.local.json/home/nodeRead /home/node/.mcp.json to verify Late MCP is configured.
If Late MCP not configured, execute automatic setup:
Step 1: Install uv (if needed)
# Check if uv is installed
uvx --version
# If not found, install it
curl -LsSf https://astral.sh/uv/install.sh | sh
Step 2: Interactive API Key Setup
Ask user via AskUserQuestion tool:
Question: "Do you have a Late API Key?"
Options:
- "Yes, I have one" → Ask for API Key input
- "No, need to register" → Guide to registration
If user needs to register:
sk_xxxxxxxxxxxxxxxx)If user has key:
sk_Step 3: Auto-Configure Files
Read and intelligently merge configurations:
For /home/node/.mcp.json:
# Read existing config
config = read_json("/home/node/.mcp.json") or {"mcpServers": {}}
# Add late server
config["mcpServers"]["late"] = {
"command": "/home/node/.local/bin/uvx",
"args": ["--from", "late-sdk[mcp]", "late-mcp"],
"env": {
"LATE_API_KEY": api_key_from_user
}
}
# Write back
write_json("/home/node/.mcp.json", config)
For /home/node/.claude.json:
# Read existing config
claude_config = read_json("/home/node/.claude.json") or {"mcpServers": {}}
# Add late server (same as .mcp.json)
claude_config["mcpServers"]["late"] = {
"command": "/home/node/.local/bin/uvx",
"args": ["--from", "late-sdk[mcp]", "late-mcp"],
"env": {
"LATE_API_KEY": api_key_from_user
}
}
# Write back
write_json("/home/node/.claude.json", claude_config)
For /home/node/.claude/settings.local.json:
# Read existing settings
settings = read_json("/home/node/.claude/settings.local.json") or {}
# Add "late" to enabledMcpjsonServers if not present
if "enabledMcpjsonServers" not in settings:
settings["enabledMcpjsonServers"] = []
if "late" not in settings["enabledMcpjsonServers"]:
settings["enabledMcpjsonServers"].append("late")
# Write back
write_json("/home/node/.claude/settings.local.json", settings)
Step 4: Restart Prompt
Display message:
✅ Late MCP configured successfully!
Please start a new conversation for the configuration to take effect.
After starting new conversation, I will verify the setup and guide you to connect social media accounts.
In the new conversation, verify configuration:
Call mcp__late__accounts_list
Handle results:
If no accounts found:
Your Late API is configured, but no social media accounts are connected yet.
Please visit: https://getlate.dev/accounts
Connect your desired platforms:
- LinkedIn (Direct OAuth)
- X/Twitter (Direct OAuth)
- Instagram (Professional/Creator account via Facebook)
- Threads (via Instagram)
- Facebook, TikTok, YouTube, Pinterest, Reddit, Telegram, Discord, etc.
After connecting accounts, call me again to start publishing!
Extract from user's input:
Show user their connected platforms from accounts_list result.
Late API supports 13+ platforms including:
Display the platforms that the user has actually connected (from accounts_list).
Ask user to select which platforms to publish to:
Ask user if they want AI-generated media:
Option A: Generate AI Video
/generate-video skill with appropriate prompt./outputs/ directoryOption B: Generate AI Image
/generate-image skill./outputs/ directoryOption C: User Upload
Option D: Text Only
Generate platform-specific versions of content following these guidelines:
Instagram (max 2,200 chars):
Twitter (max 280 chars):
LinkedIn (max 3,000 chars):
Threads (max 500 chars - STRICT):
For detailed platform strategies, see references/platform-styles.md
Display all generated content to user:
## Preview
### Instagram (348 chars)
[content]
### Twitter (276 chars)
[content]
### LinkedIn (689 chars)
[content]
### Threads (413 chars)
[content]
Ask user:
If user requests edits, modify specific platform content and re-preview.
Once approved, publish to selected platforms:
For multiple platforms simultaneously:
Call mcp__late__posts_cross_post with:
{
"profiles": ["profile_id_1", "profile_id_2", ...],
"text": "platform-specific content",
"media_urls": ["https://...video.mp4"] (if media exists)
}
For single platform:
Call mcp__late__posts_create with:
{
"profile_id": "specific_profile_id",
"text": "content",
"media_urls": ["..."] (optional)
}
Threads Character Limit Error:
If Threads post fails with "text too long" error:
Each retry should maintain core message while shortening length.
Other Platform Errors:
After publishing, show results:
## Publishing Results
✅ Instagram: Posted successfully
→ https://instagram.com/p/xxxxx
✅ Twitter: Posted successfully
→ https://twitter.com/user/status/xxxxx
✅ LinkedIn: Posted successfully
→ https://linkedin.com/feed/update/xxxxx
⚠️ Threads: Failed (text too long)
→ Retrying with shortened content...
→ ✅ Posted on second attempt
Save results to ./outputs/{timestamp}_report.json for reference.
mcp__late__accounts_list
Returns array of connected platforms with:
id: Profile ID for publishingplatform: instagram, twitter, linkedin, threadsusername: Account username/handlemcp__late__posts_create({
"profile_id": "prof_xxx",
"text": "Post content here",
"media_urls": ["https://..."] (optional)
})
mcp__late__posts_cross_post({
"profiles": ["prof_1", "prof_2", "prof_3"],
"text": "Content for all platforms",
"media_urls": ["https://..."] (optional)
})
mcp__late__posts_get({
"post_id": "post_xxx"
})
Returns post status: pending, published, failed
mcp__late__media_generate_upload_link({
"filename": "video.mp4"
})
Returns upload URL. After uploading, get media URL for publishing.
Always count characters INCLUDING:
\n = 1 char)For Threads, aim for 400-450 chars to provide safety buffer.
❌ Threads posts >500 chars - Always fails ✅ Keep under 450 chars with buffer
❌ Same content for all platforms - Low engagement ✅ Adapt style and hashtags per platform
❌ AI writing tells - "Excited to announce", "Dive deep" ✅ Natural, conversational language
❌ Too many hashtags on Twitter - Looks spammy ✅ 1-2 relevant hashtags maximum
❌ Using hashtags on Threads - They don't work ✅ No hashtags on Threads
User Input: "Launched HappyCapy - cloud-native AI platform. No more local setup!"
Instagram (348 chars):
🚀 从养claw到养capy的进化!
有点点生物背景的我突然意识到:这不就像从甲壳类进化到哺乳类吗?
Claw = 需要硬件、本地部署、不安全
Capy = 云端运行、零部署、更安全
HappyCapy 让一切变简单,告别本地配置的痛苦!
✨ 30万+ AI能力组合
☁️ 云端一键启动
🔒 更安全的环境
#AI工具 #云端开发 #HappyCapy #开发者工具 #AI平台 #CloudNative #NoCode #进化
Twitter (276 chars):
从养claw到养capy!🦞→🐹
有点点生物背景的我发现:Claw需要硬件+本地部署,Capy云端运行零配置。就像从甲壳类进化到哺乳类!
HappyCapy = 30万+ AI能力,云端一键启动 ☁️
告别配置地狱!
#AI #CloudDev
LinkedIn (689 chars):
From "养claw" to "养capy": An Evolution in AI Development Tools
As someone with a bit of biology background, I realized something interesting: the shift from Claude Code (Claw) to HappyCapy mirrors biological evolution - from crustaceans to mammals.
Key differences:
• Claw: Hardware-dependent, local deployment, security concerns
• Capy: Cloud-native, zero setup, enhanced security
Why this matters for developers:
✓ 300,000+ AI capability combinations
✓ Instant cloud deployment
✓ No local environment configuration
✓ Safer execution environment
The local-first approach is evolving. Just as mammals adapted better to diverse environments than crustaceans, cloud-native platforms offer flexibility and safety that hardware-dependent tools can't match.
Ready to evolve your development workflow?
#AITools #CloudDevelopment #DeveloperExperience #CloudNative #AIplatform
Threads (413 chars):
从养claw到养capy的感悟 🦞→🐹
有点点生物背景的我突然发现:这简直就是从甲壳类到哺乳类的进化啊!
Claw时代:需要硬件、本地部署、各种配置头疼
Capy时代:云端运行、零部署、打开就用
就像生物进化一样,哺乳类比甲壳类更高级,云端工具也比本地工具更方便更安全。
HappyCapy = 30万+ AI能力,告别配置地狱 ☁️
你还在养claw吗?
~/.mcp.json configuration is correctsk_xxxxxxxxxxxxxxxxuvx is installed: uvx --version~/.claude/settings.local.json has "late" in enabledMcpjsonServersmcp__late__accounts_listmcp__late__media_generate_upload_linkAlways count characters including newlines. Use auto-retry logic:
For configuration issues:
~/.mcp.json