social-publishing
Publish content to Twitter/X, LinkedIn, and Instagram via the content-calendar API. Use when asked to post to social media, schedule a tweet, publish a LinkedIn update, or post to Instagram through the content-calendar system. Triggers include "post to Twitter", "publish on LinkedIn", "Instagram post", "social media post", or any request to push content to a social platform.
Best use case
social-publishing is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Publish content to Twitter/X, LinkedIn, and Instagram via the content-calendar API. Use when asked to post to social media, schedule a tweet, publish a LinkedIn update, or post to Instagram through the content-calendar system. Triggers include "post to Twitter", "publish on LinkedIn", "Instagram post", "social media post", or any request to push content to a social platform.
Teams using social-publishing should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/social-publishing/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How social-publishing Compares
| Feature / Agent | social-publishing | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Publish content to Twitter/X, LinkedIn, and Instagram via the content-calendar API. Use when asked to post to social media, schedule a tweet, publish a LinkedIn update, or post to Instagram through the content-calendar system. Triggers include "post to Twitter", "publish on LinkedIn", "Instagram post", "social media post", or any request to push content to a social platform.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# social-publishing
Publish social media posts via the content-calendar API. Handles platform-specific formatting constraints and scheduling.
## When to use
- Publishing a post to one or more social platforms immediately
- Scheduling a post for a future date and time
- Checking platform character limits before posting
- Generating a platform-appropriate version of content
## Platform Constraints
Apply these rules before constructing a post body:
### Twitter / X
- Maximum 280 characters
- URLs count as 23 characters regardless of actual length
- Up to 4 images or 1 video
- No clickable links in body; link cards auto-generated
### LinkedIn
- Maximum 3000 characters for company pages
- Up to 9 images or 1 video
- Links generate automatic preview cards
### Instagram
- Maximum 2200 characters for captions
- No clickable links in captions (use "link in bio")
- Images must be at least 1080x1080 pixels
- Aspect ratios: 1:1, 4:5, or 1.91:1
## Workflow: Publish a Post
### 1. Authenticate
```bash
curl -c cookies.txt -X POST http://localhost:3000/api/auth/login \
-H 'Content-Type: application/json' \
-d '{"email":"admin@example.com","password":"yourpassword"}'
```
### 2. Create a post
```bash
curl -b cookies.txt -X POST http://localhost:3000/api/posts \
-H 'Content-Type: application/json' \
-d '{
"title": "Spring announcement",
"body": "Big news from Acme Corp today...",
"platforms": ["twitter", "linkedin"],
"status": "draft"
}'
```
### 3. Schedule it
```bash
curl -b cookies.txt -X PUT http://localhost:3000/api/posts/{id} \
-H 'Content-Type: application/json' \
-d '{
"status": "scheduled",
"scheduled_at": "2026-03-24T09:00:00Z"
}'
```
### 4. Or publish immediately
```bash
curl -b cookies.txt -X POST http://localhost:3000/api/posts/{id}/publish
```
## Workflow: Post with Media
Upload the media first, then reference the ID in the post.
```bash
# Upload media
curl -b cookies.txt -X POST http://localhost:3000/api/media \
-F 'file=@/path/to/image.png'
# Returns: { "id": "abc123", ... }
# Create post with media
curl -b cookies.txt -X POST http://localhost:3000/api/posts \
-H 'Content-Type: application/json' \
-d '{
"title": "Product launch",
"body": "Our new product is here...",
"platforms": ["twitter", "instagram"],
"media_ids": ["abc123"],
"status": "scheduled",
"scheduled_at": "2026-03-25T10:00:00Z"
}'
```
## Platform-Specific Body Overrides
When a single body does not work across all platforms (e.g. Twitter needs a shorter version), use platform overrides:
```bash
curl -b cookies.txt -X POST http://localhost:3000/api/posts \
-H 'Content-Type: application/json' \
-d '{
"title": "Announcement",
"body": "Long LinkedIn version of the post content...",
"platforms": ["twitter", "linkedin"],
"platform_overrides": {
"twitter": "Short version under 280 chars. Link in bio."
},
"status": "scheduled",
"scheduled_at": "2026-03-24T09:00:00Z"
}'
```
## Checking Character Count
Before submitting, count characters for the target platform:
```javascript
const body = "Your post content here...";
const twitterCount = body.length; // URLs counted separately at 23 chars each
const withinLimit = twitterCount <= 280;
```
## Post Status Values
| Status | Meaning |
|---|---|
| draft | Not scheduled, not published |
| scheduled | Has a future scheduled_at, waiting to publish |
| published | Successfully published |
| failed | Publish attempt failed (check platform connection) |
## Troubleshooting
### 400 Bad Request on post create
Check that `platforms` is a non-empty array and `body` is within the character limit for all selected platforms.
### 401 Unauthorized
Session expired. Re-authenticate with `POST /api/auth/login`.
### Post stays in "scheduled" state
The scheduler runs every minute. If a post has not published after 2 minutes past its scheduled time, check `SCHEDULER_ENABLED=1` and review server logs for publish errors.
### Platform publish error
The platform API rejected the post. Common reasons: expired access token (reconnect in Settings), body too long, or invalid media format.Related Skills
Skill: Uptime Monitoring
## Overview
Skill: Status Page
## Overview
Skill: unit-conversion
## Overview
Skill: recipe-scaler
## Overview
reading-list
Operate the reading-list API to save, manage, tag, search, and export articles.
email-digest
Configure, test, and troubleshoot the reading-list daily email digest delivered via nodemailer.
websocket-realtime
Use the WebSocket connection in poll-builder to receive live vote updates. Use when you need to stream real-time poll results, monitor a poll for new votes, or build a live dashboard. Triggers include "live results", "real-time updates", "stream votes", "watch poll", or "WebSocket".
poll-builder
Self-hosted poll creation tool with real-time results. Use when you need to create a poll, check vote counts, close a poll, export results, or get the shareable link for a poll. Triggers include "create poll", "vote", "poll results", "survey", "collect votes", "share poll", or any task involving polling or voting.
Skill: personal-finance
## Overview
Skill: csv-import
## Overview
Skill: Syntax Highlighting
## Purpose
Skill: Pastebin Core
## Purpose