---
name: social_calendar_automation
description: Plan, validate, and maintain a social media posting calendar. Picks scheduling tools, sets per-platform cadence, applies timezone math for global audiences, recycles evergreen content, and keeps publishing under platform limits and spam filters. Use when someone asks to schedule social posts, build a content calendar, automate social publishing, recycle evergreen content, or fix spam or shadowban problems.
---

# Social Calendar Automation

## Purpose
Turn a pile of content into a publishable, validated posting schedule. The skill covers the whole loop: pick a scheduler, set cadence per platform, build the calendar in audience-local time, recycle evergreen posts, and verify the queue against real platform limits before anything goes live.

## Workflow
1. **Inventory.** List the accounts, platforms, content types (text, image, carousel, video), and the audience timezone(s). If the audience spans zones, pick one primary zone for slot planning and note the secondary zones for conversion.
2. **Pick the scheduler.** See `references/platform-limits.md` tool comparison. Defaults: Buffer for simple multi-platform scheduling (free up to 3 channels); SocialBee or MeetEdgar when evergreen recycling matters; Meta Business Suite (free) when only Facebook and Instagram exist. Verify current pricing at the vendor page before quoting a number to a human.
3. **Set cadence per platform.** Use the sweet-spot table in references. Start conservative (fewer posts, more consistency); add volume only after a month of clean delivery.
4. **Build the calendar.** Plan slots in the AUDIENCE's local time, store them in UTC in the queue CSV (see `templates/calendar.csv`). Convert with `zoneinfo` or the CLI; never hand-convert across DST.
5. **Set up evergreen recycling.** Keep an evergreen library separate from time-sensitive posts. Category-based rotation (promote / educate / engage / community) with a minimum repost gap of 14 days, and vary the copy each cycle.
6. **Validate.** Run `python3 bin/queue_check.py calendar.csv --audience-tz <IANA zone>`. Fix every error; treat warnings as decisions to make deliberately, not silently.
7. **Review and publish.** One human eyeballs the week's queue before it ships. Automated queues still get a weekly human pass.

## Output Contract
A finished run hands over:
- the queue CSV (`templates/calendar.csv` format) with all slots in UTC,
- the tool pick plus current pricing (verified, dated),
- a cadence table (posts per platform per week),
- the `queue_check.py` report showing zero errors and a note on each accepted warning.

## Operating Rules
1. Never invent platform numbers. Limits live in `references/platform-limits.md`; the CLI enforces them. If the references conflict with what a vendor page says today, the vendor page wins.
2. Queue CSV columns, in order: `platform,text,media,scheduled_utc`. Text is the full post text; media is a path or empty; scheduled_utc is ISO 8601 in UTC (`2026-10-05T15:00:00Z`).
3. Design cross-platform posts for the lowest common denominator. A post going to X too must fit 280 characters unless you intentionally split it into a thread.
4. Front-load the hook. Instagram folds at ~125 characters, LinkedIn at ~210, so the point goes first.
5. Bursts get accounts throttled, totals rarely do. Keep at least 30 minutes between posts on the same account; the CLI flags gaps under 30 minutes and errors under 15.
6. Stay under the safe daily caps in references, which sit below the platforms' hard ceilings. Hitting a safe cap is a warning to fix; hitting a hard ceiling means the post gets rejected or the account throttled.
7. No duplicate text on the same platform within 72 hours unless the copy was rewritten. Recycled evergreen must vary, not copy-paste.
8. Stagger identical content across platforms by at least 15 minutes so it does not look like a bot blast. LinkedIn especially: put external links in the first comment, not the post body, or expect a reach hit.
9. Reddit is manual. Automated multi-sub posting is the fastest route to a shadowban. One sub per day max, treated as a manual task.
10. Reply time is part of the calendar. Block the first hour after each flagship post for replies; early engagement extends the distribution window.
11. Style law for any text this skill generates: no em dashes, no hype words (delve, tapestry, unlock, supercharge, game-changer), no press-release tone. Plain and direct.
