# Social Calendar Skill

> Comprehensive Brand Social Media Skill

- Skill: `darthflute/social-calendar-skill` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add darthflute/social-calendar-skill`
- Raw SKILL.md: https://api.skillmd.com/api/skills/darthflute/social-calendar-skill/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Productivity
- Author: Darthflute (https://skillmd.com/u/darthflute)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/darthflute/social-calendar-skill

---

# Comprehensive Brand Social Media Skill

**Triggers:**
- `/social-calendar [BrandName] [Month Year]` — build monthly content calendar
- `/social-audit [BrandName]` — audit brand's social channels
- `/competitor-audit [BrandName]` — competitor intelligence + gap analysis
- `/social-suite [BrandName] [Month Year]` — run all three modes end to end
- "create social media calendar", "build the calendar", "audit my social media",
  "analyse my competitors", "do a full social media analysis"

---

## Overview

This skill is a complete social media intelligence and content production system. It operates in three modes — run individually or combined:

| Mode | Command | What it does |
|------|---------|--------------|
| **A — Calendar** | `/social-calendar` | Research → narrative brief → full monthly content calendar for selected platforms |
| **B — Audit** | `/social-audit` | Analyses brand's own social channels, scores performance, outputs recommendations |
| **C — Competitor Intel** | `/competitor-audit` | Studies competitor channels, builds comparison matrix, identifies gaps and whitespace |
| **Full Suite** | `/social-suite` | Runs B + C first, uses findings to inform A — the most comprehensive output |

**The only mandatory pause in any mode is after the narrative brief in Mode A (Phase 4).** Everything else runs sequentially without asking for confirmation.

---

## Step 0 — Mode Selection and Brand Context

### 0a: Identify the Mode

If the user's message is ambiguous (e.g. just "help with social media"), ask:

> "What would you like to do?
> 1. Build a monthly content calendar
> 2. Audit our existing social channels
> 3. Analyse competitors and find content gaps
> 4. All of the above (full suite — recommended)"

### 0b: Gather Brand Context

Extract from the user's message or ask for anything missing:

```
BRAND_NAME      = [brand name, e.g. "Stripe"]
BRAND_URL       = [primary website URL — required for all modes]
TARGET_MONTH    = [Month Year — required for Mode A only, e.g. "June 2026"]
ICP_HINT        = [optional — who they sell to, e.g. "CTOs at mid-market SaaS"]
COMPETITORS     = [list of competitor names/URLs — required for Mode C; discover if not provided]
OUTPUT_DIR      = [save path — default: ~/Documents/[BRAND_NAME]/social/]
```

### 0c: Channel Selection (Mode A — Calendar)

Ask the user which platforms they want content for:

> "Which platforms do you want content for this month? Select all that apply:
> 1. LinkedIn
> 2. X (Twitter)
> 3. Instagram (Feed + Reels)
> 4. Instagram Stories
> 5. Facebook
> 6. TikTok
> 7. YouTube Shorts
> 8. YouTube (Long-form)
> 9. Threads
> 10. Pinterest
> 11. Reddit (community engagement)
> 12. All major platforms (LinkedIn, X, Instagram, Facebook, TikTok, YouTube Shorts)"

Store as: `ACTIVE_CHANNELS = [list of selected platforms]`

If the user says "all" or doesn't specify, default to: LinkedIn, X, Instagram (Feed + Reels), Facebook, TikTok, YouTube Shorts.

For Mode B and C, discover which channels the brand is active on automatically (Phase B1 / C1).

---

## PLATFORM PROFILES

> This section is the canonical reference for all content decisions. Every caption, script, hook, and format must follow the rules for its platform. Content is not platform-native if it's just a shorter or longer version of the same sentence.

### LinkedIn

**What it is:** Professional network. Primary B2B content platform. High-intent audience — people are in a work mindset.

**Audience:** Decision-makers, practitioners, industry professionals. Skews 25–54.

**What performs:**
- Bold data-led hooks (first line is everything — only first 2 lines visible before "see more")
- Carousel documents (native PDF format — high saves and shares)
- Short-form video (under 60 sec, captions on, no sound required)
- Provocative opinions / contrarian takes
- Founder/executive personal posts (far higher reach than company pages)
- Behind-the-scenes / team culture content

**What doesn't perform:**
- Generic promotional content ("We're excited to announce...")
- Long unbroken paragraphs
- Stock photography
- External links in the post body (put links in comments — the algorithm suppresses them)

**Caption rules:**
- Static: max 3 lines before "see more". First line = hook. Second = context. Third = CTA or question.
- Carousel: max 2 lines + "Swipe →" or similar.
- Video: 1–2 lines + what the video is about.
- Hashtags: 2–3, placed at the very end. Use specific ones (#DevSecOps not #Tech).
- Never put URLs in the post body. Always in first comment.

**Best formats:** Carousel (highest saves), static stat cards, short video, text-only opinion posts.

**Optimal posting:** 3–5x per week. Tue–Thu, 8–10am and 12–2pm local.

---

### X (Twitter)

**What it is:** Real-time conversation platform. Audience skews technical, opinionated, media-forward. Organic reach is declining but engagement from the right accounts drives outsized distribution.

**Audience:** Journalists, developers, founders, investors, power users. High signal-to-noise when done right.

**What performs:**
- Very short, punchy takes (1–2 sentences)
- Threads that teach something (numbered lists as connected tweets)
- Contrarian opinions with receipts
- Genuine reactions to breaking news / industry moments
- Quote-tweeting with a strong take
- Polls
- Images with bold text overlay (no caption needed — the image IS the content)

**What doesn't perform:**
- Long blocks of text in a single tweet
- Too many hashtags (0–1 is ideal for reach; branded hashtags only for campaigns)
- Automated cross-posts from LinkedIn (tone is completely different)
- Formal brand-speak

**Caption rules:**
- Max 280 characters (hard limit).
- Aim for under 200 characters — leave room for quote-tweeting.
- Hashtags: 0–1. Only if genuinely trending or campaign-specific.
- End with a question or provocative statement to drive replies.
- For threads: first tweet = standalone hook. Each subsequent tweet = one idea.

**Best formats:** Short text takes, threads, images with text, video clips (first 3 sec matters).

**Optimal posting:** 1–3x per day. Weekdays, 9am–12pm and 5–7pm.

---

### Instagram Feed

**What it is:** Visual-first platform. Discovery via Explore and hashtags. Community via comments and DMs.

**Audience:** Broad consumer and prosumer. B2B brands can work here if the visual output is high quality.

**What performs:**
- High-quality visuals (dark/minimal or bold/colourful — consistency matters more than style)
- Carousel posts (algorithm pushes them because they increase dwell time)
- Behind-the-scenes / authentic content
- Data visualisations as carousels
- Relatable content (memes, workplace humour for B2B)
- Strong first frame on carousels — must compel the swipe

**What doesn't perform:**
- Low-quality images
- Too much text on a static image
- Pure product photography without context
- Inconsistent visual style

**Caption rules:**
- Max 2 lines visible before "more". First line = hook.
- Hashtags: 5–8, placed on a new line below the caption (or in the first comment for cleaner look).
- Use a mix of niche (#DevSecOps 50K), mid-size (#CyberSecurity 2M), and broad (#Tech 100M).
- Alt text: always fill it in (accessibility + SEO).

**Best formats:** Carousel (highest reach), strong static images, Reels.

**Optimal posting:** 4–7x per week (feed). Daily for Stories.

---

### Instagram Reels

**What it is:** Short-form video tab. Highest organic reach on the platform. Algorithm serves Reels to non-followers aggressively.

**Audience:** Broader than feed — Reels reach new audiences who don't follow the account.

**What performs:**
- Hook in first 1–3 seconds (text on screen, bold statement, or surprising visual)
- Trending audio (boosts algorithmic distribution)
- Text-on-screen captions (most watched without sound)
- Under 30 seconds performs better for most brands
- Educational content that delivers value fast ("3 things your team doesn't know about X")
- B-roll with voiceover is fine — doesn't need to be face-to-camera

**What doesn't perform:**
- Slow intros (any brand logo or "Hi guys" opening)
- Repurposed horizontal video
- Low-quality audio (if doing voiceover)
- Not using text overlays (most views are sound-off)

**Caption rules:**
- More relaxed than feed. Can be slightly longer (2–3 lines).
- Hashtags: 3–5, in caption or first comment.
- Include a CTA: "Save this", "Share with your team", "Comment X if you want the full list".

**Best formats:** Text-on-screen + voiceover, B-roll montage with VO, talking head with captions.

**Optimal posting:** 4–7x per week. Evenings and weekends perform well.

---

### Instagram Stories

**What it is:** Ephemeral 24-hour content. Shown only to followers. High intimacy, low pressure.

**Audience:** Existing community — people who already follow the account.

**What performs:**
- Interactive stickers (polls, questions, quizzes, sliders)
- Behind-the-scenes
- Countdown timers (product launches, events)
- Reposts of feed content with a "new post" sticker
- Link stickers (now available to all accounts)
- Quick polls ("Hot take: X or Y?")
- Q&A sessions

**What doesn't perform:**
- Static promotional graphics with no interactivity
- Stories that are clearly an afterthought
- Text-heavy slides

**Content rules:**
- Each story frame = one idea. Max 7 frames per story series before drop-off.
- Always use at least one interactive element.
- Link stickers: use for every story that references external content.
- Produce 3–5 Stories per day (separate from feed).
- Stories content should feel more spontaneous than feed content.

**Format notes:** 9:16 vertical (1080×1920px). Text in the safe zone (middle 60% of screen — top and bottom may be cut by UI).

---

### Facebook

**What it is:** Largest platform by MAU globally. Organic reach for brand pages is very low (1–5%), but paid amplification is highly effective. Also important for community (Groups) and events.

**Audience:** Skews older than other platforms (35–65). High use in international markets. Strong for B2C brands and local businesses.

**What performs:**
- Native video (Facebook prioritises video that keeps people on platform)
- Long-form posts when storytelling (Facebook's audience reads more than X's)
- Events and local content
- Facebook Groups engagement
- Shared articles (with strong comment hooks)
- Facebook-native polls

**What doesn't perform:**
- Short punchy posts that work on X (too terse for Facebook's audience)
- Excessive external links (deprioritised in feed)
- Purely promotional content without narrative

**Caption rules:**
- Can be longer than other platforms — 3–5 sentences is fine.
- Conversational, slightly warmer tone than LinkedIn.
- Questions at the end drive comments.
- Hashtags: 1–2 max (Facebook hashtags have minimal SEO value).
- Emojis: fine to use sparingly, more than LinkedIn.

**Best formats:** Native video, long-form storytelling posts, event posts, Group content.

**Optimal posting:** 1–2x per day. Weekdays 1–4pm.

---

### TikTok

**What it is:** Short-form video-first platform with the most powerful discovery algorithm of any social network. A video can reach millions of non-followers. The algorithm rewards watch time, completion rate, and saves — not follower count.

**Audience:** Skews 18–34 but expanding to 35–54. Highly engaged. B2B brands are growing fast here — the "TikTok for business" audience is real.

**What performs:**
- Hook in the FIRST 1–2 SECONDS — text on screen or a bold opening visual
- Native TikTok formats: POV, "I tried X so you don't have to", "Things nobody tells you about X", "Day in the life of a [role]", "What it's actually like to [experience]"
- Trending sounds + original audio
- Creator-style authentic feel (not polished corporate video)
- Stitches and Duets (engaging with other creators' content)
- Educational content that moves fast ("3 facts in 30 seconds")
- Voiceover-style explanation over text cards
- Jump-cut editing (cut every 1–2 seconds to maintain attention)

**What doesn't perform:**
- Horizontal video (never)
- Slow intros
- Heavily produced corporate-feel content
- Repurposed LinkedIn videos (wrong energy entirely)
- Long setup before getting to the point

**Caption rules:**
- 1–2 lines max. The video IS the content — the caption is a supplement.
- 3–5 hashtags: 1 broad (#Marketing), 1 niche (#B2BSaaS), 1 trending (check weekly).
- Often ends with a question to drive comments.
- Strong CTA: "Follow for more", "Comment if you want part 2", "Save this for your next meeting".

**Script rules (TikTok-specific):**
- ON-SCREEN TEXT must appear within the first 1 second (not 3 seconds like other formats)
- First spoken word must be at second 0 — no silent intros
- Format hook: "Here's what [X] actually means for [ICP role]..." or "Nobody in [industry] talks about this, but..."
- Optimal length: 15–45 seconds (sweet spot for B2B)
- Trending audio: note where to add trending sound (Claude will indicate the scene — user/editor selects actual trending audio at time of production)
- Duet/Stitch potential: flag if a competitor or industry post would be a good Stitch candidate

**Best formats:** Text-on-screen + VO, creator-style explainer, B-roll with VO, reaction/commentary.

**Optimal posting:** 1–4x per day (higher frequency than other platforms). Any time — algorithm matters more than posting time.

---

### YouTube Shorts

**What it is:** YouTube's short-form vertical video format (<60 seconds). Shown in the Shorts feed and also discoverable via search. The SEO element is stronger than TikTok — YouTube Shorts can rank in Google Search.

**Audience:** Broader age range than TikTok. High intent (people search for things). Strong for tutorial and educational content.

**What performs:**
- Educational explainers
- "Quick tip" format
- Repurposed long-form highlights
- Step-by-step "how to" content
- Strong hook in first 3 seconds
- Visuals that loop well (the video replays automatically)

**What doesn't perform:**
- Content without a clear payoff
- Slow intros
- Horizontal video
- Content that only makes sense in context of a longer video without that context provided

**Content rules:**
- Title is critical for searchability — include the keyword people would search for.
- Description: first 2 lines visible in feed. Include target keyword and CTA.
- Unlike TikTok, YouTube Shorts benefits from a SEO-optimised title (not just a hook).
- If related to a long-form video on the channel, include a link in description.

**Script rules:**
- Same structure as regular video scripts but faster paced.
- First 3 seconds = hook text on screen + VO simultaneously.
- Aim for a conclusion or "payoff" at the 45-second mark, leaving time for CTA.

**Optimal posting:** 2–5x per week. Consistency matters more than frequency here.

---

### YouTube Long-Form

**What it is:** The world's second-largest search engine. Long-form video content that ranks in both YouTube and Google Search. High trust, high intent, long shelf life.

**Audience:** Research-mode audience. Willing to invest 5–20 minutes for depth. Strong for tutorial, case study, interview, and documentary-style content.

**What performs:**
- Tutorial / how-to content (evergreen)
- Case studies and customer stories
- Expert interviews and panel discussions
- Thought leadership series
- Product walkthroughs
- Industry analysis and commentary

**What doesn't perform:**
- Poorly structured content with no chapters
- Bad audio (this is the single biggest drop-off driver)
- Videos without a compelling thumbnail
- Titles that don't match search intent

**Content spec (for each YouTube long-form video):**
- **Title:** SEO-optimised. Include primary keyword. Under 60 characters. Pattern: "[What they'll learn] | [Context]"
- **Thumbnail brief:** What should appear — person, text overlay, brand element. High contrast. Single focal point.
- **Description:** Lines 1–2 visible in search. Include hook + keyword. Full description below fold: what's covered, chapters, links, CTA.
- **Chapters:** Always include timestamps. Format: 0:00 Intro, 1:30 [Topic 1], etc.
- **Tags:** 5–10 keyword tags.
- **End screen:** What CTA should appear — subscribe, watch next, visit website.
- **Cards:** Where to place mid-video cards pointing to related content.

**Optimal posting:** 1–2x per week (consistency over volume).

---

### Threads

**What it is:** Meta's text-based platform (launched 2023). Most brand-safe of the Twitter alternatives. Casual, conversational, discovery-oriented. Cross-posts easily from Instagram.

**Audience:** Instagram's existing users (so skews similar to IG). Early-adopter brands are getting outsized reach now while competition is low.

**What performs:**
- Opinions and hot takes (more casual than LinkedIn)
- Questions that spark conversation
- Behind-the-scenes and authentic moments
- Short threads (3–5 connected posts)
- Reposts with commentary
- Genuine humour (brands that are too corporate don't work here)

**What doesn't perform:**
- Formal press-release tone
- Heavy promotional content
- Too many posts (algorithm still establishing itself)

**Caption rules:**
- Conversational, first-person tone.
- No established hashtag culture — skip hashtags for now.
- 2–4 lines max for a single post.
- For threads: each post = one idea. Keep each under 3 lines.

**Optimal posting:** 2–4x per week. Building slowly is fine — the platform is still maturing.

---

### Pinterest

**What it is:** A visual search engine, not a social network. People use Pinterest to plan and discover — they're in a high-intent, aspirational mindset. SEO matters far more than social strategy here.

**Audience:** Skews female, 25–45 globally. Strong for lifestyle, home, food, fashion, wedding, travel. Growing B2B presence for infographics, marketing tips, design inspiration, and tools.

**What performs:**
- Vertical images (2:3 ratio — 1000×1500px ideal)
- Infographics and data visualisations
- Step-by-step process content ("How to X in 5 steps")
- Listicles as visual assets
- Product inspiration (not just product shots — lifestyle context)
- Bold text overlay with minimal background

**What doesn't perform:**
- Horizontal images
- Images without text overlay (hard to understand out of context)
- Content without a keyword-rich description
- Pinning without board strategy

**Content spec:**
- **Pin title:** 60–100 characters. Include the primary keyword naturally.
- **Pin description:** 100–300 characters. Keyword-rich. What the content is, who it's for, what they'll learn or find.
- **Board:** Which board this pin belongs to (each board = a category/topic).
- **Link:** Every pin should link somewhere — blog post, product page, landing page.

**Optimal posting:** 5–15 pins per day (Pinterest rewards volume unlike other platforms). Use scheduling tools.

---

### Reddit

**What it is:** Community-based discussion platform. Extremely high-quality audience with near-zero tolerance for promotional content. The highest-trust community engagement channel available to brands — if done right.

**Audience:** Highly specific per subreddit. Generally skews male, 25–40, technically literate. Will immediately call out inauthenticity.

**What performs:**
- Genuine value-first posts that contribute to the community's conversation
- Data, research, and original findings (communities love original data)
- Honest questions from practitioners
- AMAs (Ask Me Anything) from credible experts
- Sharing genuinely useful resources without asking for anything in return
- Commenting on existing threads with expertise, not promotion

**What doesn't perform:**
- Anything that sounds like marketing copy
- Posts that mention the brand prominently
- Self-promotion without genuine value added
- Cross-posting the same content across multiple subreddits simultaneously

**Content rules:**
- Reddit is a community engagement channel, not a publishing channel.
- Never post promotional content as a top-level post.
- Brand mention: only if directly relevant and only in comments, never in the post title.
- Write like a practitioner who happens to work at the brand — not a marketer.
- Identify the right subreddit per post (each post belongs to one specific community).
- For AMAs: plan in advance, get subreddit mod approval, prepare 10–15 pre-answered questions.

---

## MODE A — Monthly Calendar Build

### Phase 1 — Study the Brand

**WebFetch** BRAND_URL (homepage) and up to 5 sub-pages — prioritise: product, solutions, platform, pricing, about.

Extract and store as `BRAND_PROFILE`:

**Core identity:**
- USPs — what makes this brand genuinely different
- Product/service pillars — main categories of what they offer
- Key terminology — specific phrases, coined terms, product names the brand owns
- ICP — who they sell to, pain points addressed, job titles in copy

**Tone of voice:**
- Register: assertive / technical / empathetic / conversational / executive-facing
- What they avoid: hype / jargon / overly salesy language
- Distinctive voice patterns

**Social presence (study each platform in ACTIVE_CHANNELS):**

For each active platform, WebFetch the profile and study the last 10–15 posts. Document:
- Follower/subscriber count
- Posting frequency
- Content formats in use
- Hook style and opening patterns
- Caption length and structure
- Hashtag strategy
- Engagement pattern (relative to following — high/medium/low)
- What's performing (high engagement)
- What's not (low engagement, ignored formats)
- Visual consistency and brand aesthetic
- Whether content is truly platform-native or cross-posted from another channel

Store observations per platform within `BRAND_PROFILE`.

### Phase 2 — Extract Keywords and Research Targets

From BRAND_PROFILE, extract and store as `RESEARCH_KEYWORDS`:

- **Primary keywords** (3–5): the brand's core product/category terms
- **Pain point keywords** (3–5): problems the brand solves, in the ICP's own language
- **Competitor keywords** (3–5): named competitors and alternative approaches
- **ICP role keywords** (3–5): job titles and personas the brand targets

If ICP_HINT was provided, use it to refine extraction.

### Phase 3 — Community Research (Last 30 Days)

Run `/last30days` with a 4-query plan:

| Query | Focus |
|-------|-------|
| Query 1 | Top 3–4 primary keywords |
| Query 2 | Pain point keywords — what the ICP is actively struggling with |
| Query 3 | Category/industry trends — what's shifting in their space this month |
| Query 4 | Competitor brand mentions — sentiment, claims, community reactions |

Supplement with WebSearch for:
- Platform-specific trending content in each ACTIVE_CHANNEL this month
- Industry news relevant to the ICP in TARGET_MONTH
- Trending formats and sounds on TikTok/Reels if those channels are active
- Any viral content in the brand's category this month

Store as: `RESEARCH_OUTPUT`

### Phase 4 — Narrative Brief (APPROVAL GATE)

Synthesize BRAND_PROFILE + RESEARCH_OUTPUT into:

```
# [BRAND_NAME] — [TARGET_MONTH] Social Media Narrative Brief

## What the Community Is Talking About
[3–5 bullet points — most discussed topics, with platform source cited]

## Key Pain Points and Blockers Surfaced
[3–5 specific frustrations from real posts/threads — cite subreddit or platform]

## Landscape Signals
[What's trending, what competitors are doing, what the ICP is worried about]

## How [BRAND_NAME] Addresses This
[For each pain point — one sentence on how the brand responds]

## Recommended Monthly Narrative
[1–2 sentence theme that runs through all content this month]

## Narrative Pillars (3–4 content themes)
1. [Pillar name] — [one line]
2. [Pillar name] — [one line]
3. [Pillar name] — [one line]
4. [Pillar name] — [one line]

## Tone of Voice for This Month
[Specific guidance — assertive? data-led? empathetic? provocative? why?]

## Platform Strategy Notes
[Any platform-specific angle or opportunity this month — e.g. "TikTok: the [trending sound] is relevant to Pillar 2"]

## Suggested Content Mix
[By platform and format — e.g. "LinkedIn: 60% carousel, 40% static | TikTok: daily short-form, mix of POV and explainer"]
```

**PAUSE HERE.** Present the brief and ask for approval before proceeding.

### Phase 5 — Build the Full Calendar

**Only run after narrative brief is approved.**

#### 5a: Post Structure

Create content for each ACTIVE_CHANNEL based on the approved brief.

**Base volume:** 20 social posts + 4 video reels per month (one video per week). Scale per platform as follows:

| Platform | Monthly volume guidance |
|----------|------------------------|
| LinkedIn | 20 posts (5/week) |
| X | 25–30 posts (6–7/week, includes thread openers) |
| Instagram Feed | 12–16 posts (3–4/week) |
| Instagram Reels | 8–12 Reels (2–3/week) |
| Instagram Stories | Daily (5–7 frames/day — plan themes not individual frames) |
| Facebook | 12–16 posts (3–4/week) |
| TikTok | 20–30 videos (daily or near-daily) |
| YouTube Shorts | 8–12 Shorts (2–3/week) |
| YouTube Long-form | 2–4 videos (1/week or bi-weekly) |
| Threads | 10–15 posts (3–4/week) |
| Pinterest | 20–40 pins (5–10/week, can repurpose from other channels) |
| Reddit | 4–8 posts (1–2/week, value-first) |

For the Excel calendar, organise content by week, with each row = one piece of content on one platform. Group by week, then by platform within each week.

#### 5b: Post Data Structure

For each content piece, define all applicable fields:

```python
{
  "num": int,
  "week": int,                 # 1–4
  "pillar": str,               # narrative pillar
  "date": str,                 # "Mon 1 Jun"
  "platform": str,             # which platform this piece is for
  "topic": str,                # what this post is about
  "format": str,               # format specific to that platform (see Platform Profiles)
  "hook": str,                 # scroll-stopping opening — never starts with brand name
  "post_copy": str,            # creative copy — what goes ON the image/slide/screen
  "carousel_slides": str,      # slide-by-slide content if carousel (LinkedIn, IG)
  "video_script": str,         # production script if video/reel/Short
  "tiktok_script": str,        # TikTok-specific script (distinct format — see TikTok rules)
  "youtube_spec": str,         # YouTube-specific: title, thumbnail brief, description, chapters
  "stories_plan": str,         # Instagram/Facebook Stories frame plan
  "pinterest_spec": str,       # Pinterest: pin title, description, board, link target
  "visual": str,               # visual direction brief for the designer
  "meme_concept": str,         # meme format + panel descriptions (if applicable)
  "caption": str,              # platform-native caption (written per platform's rules above)
  "hashtags": str,             # hashtags for platforms that use them
  "cta": str,                  # specific CTA for this post
  "reddit_sub": str,           # target subreddit (Reddit posts only)
  "trending_audio_note": str,  # TikTok/Reels: note where trending audio should go
  "best_time": str,            # optimal posting time for this platform
}
```

#### 5c: Content Rules

**Universal rules (apply to every piece, every platform):**
1. Hooks never start with "We", "Our", or the brand name.
2. Every piece of content must make the ICP feel seen before the brand appears.
3. Week 1 = plant the problem. Week 2 = insight. Week 3 = proof. Week 4 = authority + action.
4. Never use: "leverage", "synergy", "excited to announce", "game-changing", "seamless", "robust".
5. Each post must have one clear idea. One hook. One CTA. No trying to do multiple things.

**Platform-native rules (apply per platform):**
- Follow every rule defined in the Platform Profiles section above.
- If content for a platform is just a shorter version of another platform's content, rewrite it — it's not platform-native.
- TikTok scripts must feel like TikTok. LinkedIn carousels must feel like LinkedIn. They are different products for different audience mindsets.

**Meme concept rules:**
Use meme formats where they would amplify the message:

| Post type | Best format |
|-----------|-------------|
| Ironic stat or data gap | Gru's Plan, This is Fine dog |
| Before/after contrast | Drake Pointing, Distracted Boyfriend |
| Challenging market assumption | Change My Mind, Always Has Been |
| Impossible choice | Two Buttons |
| Perception vs reality | Anakin / Padme |
| Escalating insight | Expanding Brain |
| Single impossible-sounding task | One Does Not Simply |

Each meme_concept must include: FORMAT name, panel-by-panel description, Caption line, STYLE notes.

**TikTok-specific script rules:**
- ON-SCREEN TEXT must appear at second 0 (not 3, not 5 — zero)
- First spoken word at second 0 — no silent intros
- Format hook: "Nobody in [industry] talks about this, but..." / "Here's what [X] actually means for [role]..." / "POV: you're a [ICP role] and..."
- Mark where trending audio should be added (editor decides actual track at production time)
- Flag Duet/Stitch opportunities where relevant
- Every TikTok script ends with a comment bait line: "Comment [word] if you want the full breakdown"

**Video script rules (non-TikTok):**
```
DURATION: ~[N] sec
FORMAT: [e.g. Text-on-screen + AI voiceover / Talking head / B-roll + VO]
STYLE: [visual aesthetic]
TONE: [tone guidance]
MUSIC: [music direction]

[0:00–0:XX] SECTION
VISUAL: [what's on screen]
ON-SCREEN: [text overlays]
VO: [voiceover]
```

Story arc: Hook (0–7s) → Problem (7–25s) → Reframe (25–40s) → Answer (40–52s) → CTA (52–60s).

**YouTube long-form spec format:**
```
TITLE: [SEO-optimised, under 60 chars, includes keyword]
THUMBNAIL BRIEF: [what appears — person, text overlay, brand element, contrast notes]
DESCRIPTION LINE 1: [hook + keyword — visible in search]
DESCRIPTION LINE 2: [what they'll learn / why to watch]
CHAPTERS:
  0:00 Introduction
  [1:30] [Chapter 1 name]
  [N:NN] [Chapter N name]
TAGS: [keyword1, keyword2, keyword3, keyword4, keyword5]
END SCREEN CTA: [subscribe / watch next video / visit website]
CARDS: [timestamps where to place mid-video cards + what they point to]
```

#### 5d: Generate and Run the Python Build Script

Write `build_calendar.py` tailored to ACTIVE_CHANNELS. The script:

1. Defines all content data as a list of dicts (per structure above)
2. Uses `openpyxl` to generate a styled Excel workbook
3. Creates sheets dynamically based on ACTIVE_CHANNELS:
   - **Overview** — narrative summary, platform breakdown, legend
   - **Full Calendar** — all posts across all platforms
   - **[Platform] Sheet** — one sheet per ACTIVE_CHANNEL with that platform's content in full
   - **Videos** — all video/reel scripts in wide-format
   - **Week 1–4** — content per week across all platforms
4. Columns shown vary by platform — LinkedIn posts show carousel slide column, TikTok posts show TikTok script column, YouTube posts show the full YouTube spec column
5. Applies colour coding by platform (each platform gets a distinct colour)
6. Saves to: `OUTPUT_DIR/[MONTH-YEAR]-[BRAND_NAME]-Social-Calendar.xlsx`

Run:
```bash
PYTHONUTF8=1 python3 build_calendar.py
```

---

## MODE B — Social Media Audit

**Trigger:** `/social-audit [BrandName]` or "audit my social media"

This mode produces a comprehensive audit report of the brand's existing social channels. It works from publicly available data (post performance signals, profile completeness, content patterns) and outputs a scored, actionable report.

### Phase B1 — Channel Discovery

If ACTIVE_CHANNELS is not specified, discover which platforms the brand is on:

1. WebSearch: `[BRAND_NAME] site:linkedin.com/company`
2. WebSearch: `[BRAND_NAME] site:x.com OR twitter.com`
3. WebSearch: `[BRAND_NAME] site:instagram.com`
4. WebSearch: `[BRAND_NAME] site:tiktok.com`
5. WebSearch: `[BRAND_NAME] site:youtube.com`
6. WebSearch: `[BRAND_NAME] site:facebook.com`
7. WebSearch: `[BRAND_NAME] site:pinterest.com`
8. WebSearch: `[BRAND_NAME] site:threads.net`

For each platform found, WebFetch the profile. Store as: `DISCOVERED_CHANNELS = [list with URLs]`

Present the list to the user and confirm: "I found [Brand Name] on [platforms]. Shall I audit all of these?"

### Phase B2 — Per-Platform Audit

For each channel in DISCOVERED_CHANNELS, assess:

**Profile Completeness (score /10):**
- Profile photo / logo: present and high quality? (2pts)
- Header / banner: present, on-brand, updated? (2pts)
- Bio / description: clear, includes keywords, includes CTA or link? (3pts)
- Contact info / website link: present and correct? (1pt)
- Pinned post / highlight: effectively used? (2pts)

**Content Performance Assessment (study last 20–30 posts):**
- Posting frequency: actual vs recommended for this platform
- Content mix: breakdown of formats (static / carousel / video / text / stories)
- Engagement rate: estimate from visible likes + comments relative to follower count
  - Excellent: >5% | Good: 2–5% | Average: 0.5–2% | Poor: <0.5%
- Best performing content: top 3 posts by engagement — what do they have in common?
- Worst performing content: bottom 3 by engagement — what patterns emerge?
- Hook quality: are first lines/frames strong? Rate: Strong / Weak / Absent
- CTA usage: are posts asking for something? Rate: Consistent / Occasional / Never
- Hashtag strategy: present? relevant? over/under-used?
- Visual consistency: consistent brand aesthetic? Rate: Strong / Moderate / Inconsistent
- Brand voice: consistent with the brand's tone? Rate: Consistent / Varies / Off-brand
- Cross-posting: is this platform getting original content or copy-paste from another? Rate: Original / Mixed / Cross-posted

**Audience Signals:**
- Follower count (note if growing, flat, or declining based on visible signals)
- Comment quality: are comments substantive or just emojis?
- Response rate: does the brand reply to comments?
- Community engagement: does the brand engage with others' content?

### Phase B3 — Audit Report Output

Generate a structured audit report:

```
# [BRAND_NAME] — Social Media Audit Report
Audit Date: [date]
Channels Audited: [list]

---

## Executive Summary

**Overall Social Health Score: [X/100]**

[3–5 sentence summary of the brand's overall social media health — what's working,
what's broken, and the #1 priority to fix]

**Top 3 Wins:**
1. [Specific thing that's working well]
2. [Specific thing that's working well]
3. [Specific thing that's working well]

**Top 3 Critical Issues:**
1. [Specific thing that needs fixing, with impact]
2. [Specific thing that needs fixing, with impact]
3. [Specific thing that needs fixing, with impact]

---

## Platform-by-Platform Audit

### [Platform Name] — Score: [X/100]

**Profile Health:** [X/10]
[Bullet list of what's complete / missing / needs updating]

**Content Performance:**
- Posting frequency: [X/week] vs recommended [Y/week]
- Content mix: [% by format]
- Estimated engagement rate: [%] — [Excellent / Good / Average / Poor]
- Hook quality: [Strong / Weak / Absent]
- CTA usage: [Consistent / Occasional / Never]
- Visual consistency: [Strong / Moderate / Inconsistent]
- Original vs cross-posted: [%/%]

**Best Performing Content Patterns:**
[What the top 3 posts have in common — format, topic, tone, hook style]

**What's Not Working:**
[What the lowest-engagement posts have in common]

**Platform-Specific Observations:**
[Anything unique to this platform's audit — e.g. "LinkedIn posts are burying the hook in line 3"
or "TikTok videos have no on-screen text — most views are sound-off"]

**Recommendations for [Platform]:**
1. [Priority 1 — specific, actionable, measurable]
2. [Priority 2]
3. [Priority 3]

[Repeat for each platform audited]

---

## Cross-Platform Analysis

**Brand Voice Consistency:** [Consistent / Varies / Fragmented]
[Observation on whether the brand sounds the same across platforms]

**Visual Consistency:** [Strong / Moderate / Inconsistent]
[Observation on whether the brand looks the same across platforms]

**Content Repurposing:** [Strategic / Ad hoc / None]
[Is the brand smartly adapting content or just copy-pasting?]

**Platform Prioritisation:** [Assessment of whether effort matches platform opportunity]

---

## Priority Action Plan

| Priority | Action | Platform | Expected Impact | Effort |
|----------|--------|----------|-----------------|--------|
| 1 | [Action] | [Platform] | [Impact] | Low/Med/High |
| 2 | [Action] | [Platform] | [Impact] | Low/Med/High |
| 3 | [Action] | [Platform] | [Impact] | Low/Med/High |
| 4 | [Action] | [Platform] | [Impact] | Low/Med/High |
| 5 | [Action] | [Platform] | [Impact] | Low/Med/High |
```

Save the audit report to: `OUTPUT_DIR/[BRAND_NAME]-Social-Audit-[DATE].md`

---

## MODE C — Competitor Intelligence and Gap Analysis

**Trigger:** `/competitor-audit [BrandName]` or "analyse my competitors"

This mode studies competitor social channels, builds a comparison matrix, and identifies content gaps and whitespace opportunities the brand can own.

### Phase C1 — Competitor Discovery

If COMPETITORS list is not provided, discover them:

1. WebSearch: `[BRAND_NAME] competitors alternatives [year]`
2. WebSearch: `best [brand's product category] tools [year]`
3. WebSearch: `[BRAND_NAME] vs [category] comparison`
4. Check G2, Capterra, or relevant comparison sites for the category

From results, identify 3–6 direct competitors. Present the list to the user for confirmation before proceeding.

Store as: `COMPETITOR_LIST = [name, website, social handles per platform]`

### Phase C2 — Competitor Channel Analysis

For each competitor in COMPETITOR_LIST, for each relevant platform:

**WebFetch** their social profiles and study the last 20–30 posts. For each, document:

- Follower count and estimated growth trajectory
- Posting frequency
- Primary content formats
- Top-performing content (topics, formats, hooks)
- Tone and brand voice
- Hashtag strategy
- Engagement rate estimate
- Notable campaigns or content series
- What they're NOT doing (gaps in their strategy)
- Any viral moments or breakout content in the last 30 days

Store as: `COMPETITOR_PROFILES = {competitor_name: {platform: data}}`

### Phase C3 — Gap Analysis

Compare BRAND_PROFILE + audit data (if Mode B was run) against COMPETITOR_PROFILES to identify:

**Content angle gaps:**
- Topics the ICP cares about that nobody is covering
- Questions the community is asking that no brand is answering
- Pain points surfaced in research (from RESEARCH_OUTPUT if available) that competitors are ignoring

**Format gaps:**
- Formats nobody in the space is using (e.g. no one is doing LinkedIn carousels, or no one is on TikTok)
- Format experiments that are working for adjacent categories but haven't been adopted here

**Tone gaps:**
- Is everyone too corporate? Is there room for a more human voice?
- Is everyone too casual? Is there room for a more authoritative, data-led tone?
- Is anyone doing humour? Memes? Educational content?

**Platform gaps:**
- Platforms the brand is absent from that competitors are growing on
- Platforms competitors are absent from that the brand could own early

**Engagement gaps:**
- Are competitors responding to comments? (If not, the brand can win on community)
- Are competitors engaging in Reddit / communities? (If not, whitespace opportunity)

**Narrative gaps:**
- Is there a story nobody is telling in the space?
- Is there a category position nobody is owning?

### Phase C4 — Competitive Intelligence Report

Generate:

```
# [BRAND_NAME] — Competitor Intelligence Report
Date: [date]
Competitors Analysed: [list]

---

## Executive Summary

[3–5 sentences on the competitive social media landscape — who's winning, why,
and where the biggest opportunity for the brand lies]

---

## Competitor Comparison Matrix

### LinkedIn
| Metric | [Brand] | [Comp A] | [Comp B] | [Comp C] |
|--------|---------|----------|----------|----------|
| Followers | | | | |
| Posts/week | | | | |
| Est. engagement rate | | | | |
| Primary format | | | | |
| Tone | | | | |
| Top content topics | | | | |
| Hashtag strategy | | | | |

[Repeat 

…(truncated)
