skills/happycapy-social-publisher/SKILL.md
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.
npx skillsauth add happycapy-ai/happycapy-skills happycapy-social-publisherInstall 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.
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.jsontools
Universal LaTeX document skill: create, compile, and convert any document to professional PDF with PNG previews. Supports resumes, reports, cover letters, invoices, academic papers, theses/dissertations, academic CVs, presentations (Beamer), scientific posters, formal letters, exams/quizzes, books, cheat sheets, reference cards, exam formula sheets, fillable PDF forms (hyperref form fields), conditional content (etoolbox toggles), mail merge from CSV/JSON (Jinja2 templates), version diffing (latexdiff), charts (pgfplots + matplotlib), tables (booktabs + CSV import), images (TikZ), Mermaid diagrams, AI-generated images, watermarks, landscape pages, bibliography/citations (BibTeX/biblatex), multi-language/CJK (auto XeLaTeX), algorithms/pseudocode, colored boxes (tcolorbox), SI units (siunitx), Pandoc format conversion (Markdown/DOCX/HTML ↔ LaTeX), and PDF-to-LaTeX conversion of handwritten or printed documents (math, business, legal, general). Compile script supports pdflatex, xelatex, lualatex with auto-detection, latexmk backend, texfot log filtering, PDF/A output, and verbosity control (--verbose/--quiet). Empirically optimized scaling: single agent 1-10 pages, split 11-20, batch-7 pipeline 21+. Use when user asks to: (1) create a resume/CV/cover letter, (2) write a LaTeX document, (3) create PDF with tables/charts/images, (4) compile a .tex file, (5) make a report/invoice/presentation, (6) anything involving LaTeX or pdflatex, (7) convert/OCR a PDF to LaTeX, (8) convert handwritten notes, (9) create charts/graphs/diagrams, (10) create slides, (11) write a thesis or dissertation, (12) create an academic CV, (13) create a poster, (14) create an exam/quiz, (15) create a book, (16) convert between document formats (Markdown, DOCX, HTML to/from LaTeX), (17) generate Mermaid diagrams for LaTeX, (18) create a formal business letter, (19) create a cheat sheet or reference card, (20) create an exam formula sheet or crib sheet, (21) condense lecture notes/PDFs into a cheat sheet, (22) create a fillable PDF form with text fields/checkboxes/dropdowns, (23) create a document with conditional content/toggles (show/hide sections), (24) generate batch/mail-merge documents from CSV/JSON data, (25) create a version diff PDF (latexdiff) highlighting changes between documents, (26) create a homework or assignment submission with problems and solutions, (27) create a lab report with data tables, graphs, and error analysis, (28) encrypt or password-protect a PDF, (29) merge multiple PDFs into one, (30) optimize/compress a PDF for web or email, (31) lint or check a LaTeX document for common issues, (32) count words in a LaTeX document, (33) analyze document statistics (figures, tables, citations), (34) fetch BibTeX from a DOI, (35) convert a Graphviz .dot file to PDF/PNG, (36) convert a PlantUML .puml file to PDF/PNG, (37) create a one-pager/fact sheet/executive summary, (38) create a datasheet or product specification sheet, (39) extract pages from a PDF (page ranges, odd/even), (40) check LaTeX package availability before compiling, (41) analyze citations and cross-reference with .bib files, (42) debug LaTeX compilation errors, (43) make a document accessible (PDF/A, tagged PDF), (44) create lecture notes or course handouts, (45) fill an existing PDF form (fillable fields or non-fillable with annotations), (46) extract text or tables from a PDF (pdfplumber, pypdf), (47) OCR a scanned PDF to text (pytesseract), (48) create a PDF programmatically with reportlab (Canvas, Platypus), (49) rotate or crop PDF pages (pypdf), (50) add a watermark to an existing PDF, (51) extract metadata from a PDF (title, author, subject).
testing
Improves the quality of images, especially screenshots, by enhancing resolution, sharpness, and clarity. Perfect for preparing images for presentations, documentation, or social media posts.
development
Automate HappyCapy skill creation by finding and adapting existing skills from anthropics/skills repository. Handles environment constraints (Python 3.11, Node.js 24, no Docker). Use when user wants to create or adapt skills for specific tasks.
tools
为 HappyCapy 安装并授权飞书(Lark)MCP,让 Claude 直接操作飞书消息、文档、多维表格、日历等。当用户提到安装飞书 MCP、配置飞书、接入飞书、飞书 MCP setup、connect feishu/lark、飞书重新授权、飞书 token 过期、lark mcp 失效等场景时,必须使用此 skill。