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.

7 stars

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

$curl -o ~/.claude/skills/social-publishing/SKILL.md --create-dirs "https://raw.githubusercontent.com/heldernoid/agentic-build-templates/main/projects/automation-productivity/content-calendar/skills/social-publishing/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/social-publishing/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How social-publishing Compares

Feature / Agentsocial-publishingStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/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

7
from heldernoid/agentic-build-templates

## Overview

Skill: Status Page

7
from heldernoid/agentic-build-templates

## Overview

Skill: unit-conversion

7
from heldernoid/agentic-build-templates

## Overview

Skill: recipe-scaler

7
from heldernoid/agentic-build-templates

## Overview

reading-list

7
from heldernoid/agentic-build-templates

Operate the reading-list API to save, manage, tag, search, and export articles.

email-digest

7
from heldernoid/agentic-build-templates

Configure, test, and troubleshoot the reading-list daily email digest delivered via nodemailer.

websocket-realtime

7
from heldernoid/agentic-build-templates

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

7
from heldernoid/agentic-build-templates

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

7
from heldernoid/agentic-build-templates

## Overview

Skill: csv-import

7
from heldernoid/agentic-build-templates

## Overview

Skill: Syntax Highlighting

7
from heldernoid/agentic-build-templates

## Purpose

Skill: Pastebin Core

7
from heldernoid/agentic-build-templates

## Purpose