Skip to content
Marketing
Skill

/content-calendar-audit

Audit a Planable workspace's content calendar for a given period — surface what's scheduled, what's missing, what has no date, and what might have publishing issues. Use this skill whenever the user asks about upcoming content, wants to review the calendar, says things like

From plugin
planable-smm
412 skills1 MCP

Claude Code

$ npx -y skills add seranking-planable/smm-skills --skill content-calendar-audit --agent claude-code

SKILL.md

content-calendar-audit.SKILL.md
name: content-calendar-audit
description: >
  Audit a Planable workspace's content calendar for a given period — surface what's
  scheduled, what's missing, what has no date, and what might have publishing issues.
  Use this skill whenever the user asks about upcoming content, wants to review the
  calendar, says things like "what's scheduled this week", "check the calendar for
  [client]", "what's going out next week", "any gaps in the schedule", "content audit",
  "what do we have planned", or wants a weekly/monthly content overview for a workspace.
  Always activate for calendar review and scheduling gap analysis in Planable.

Content calendar audit

Review a Planable workspace's content schedule for a given period — what's ready, what's missing, what needs attention.

How this skill works

1. Identify the workspace and time window 2. Fetch scheduled and unscheduled posts 3. Surface gaps, issues, and a clean calendar view 4. Flag anything that needs action before posts go live

---

Step 1: Gather inputs

  • **Workspace / client name** — which workspace to audit
  • **Time window** — default to the next 7 days if not specified; accept "this week", "next week", "this month", or a custom range
  • **Platforms** — all pages by default, or specific platforms if requested

---

Step 2: Fetch posts

When the window is a calendar week or month, call `show_calendar` (`view: "week"` or `"month"`, with `date` inside the period) instead of the scheduled-posts `list_posts` call below. It returns every dated post grouped by day in the workspace timezone, each with a `status` (`draft`, `scheduled`, `approved`, `issues`, `published`) and `failedToPublish`:

  • Count only `scheduled` posts as confirmed for publishing. Other dated posts only have a proposed date, and `published` ones already went out.
  • `failedToPublish: true` marks a post whose publishing failed.
  • If `truncated` is true, the result holds only the first 150 of `totalCount` posts: fetch the remaining days with `list_posts` before calling any day empty.
  • In Claude chat the result shows as a calendar card, so in Step 3 skip the day-by-day overview and go straight to the gap analysis. In Claude Code and other clients without the card, list the posts by day as in Step 3.

For any other window, such as the next 7 days or a custom range, use the `list_posts` calls below.

`list_posts` results are paginated (25 per page by default, up to `limit: 100`). When you only need a count, such as undated drafts, read `totalCount` from the first page and pass `includeText: false`. Page through with `offset: nextOffset` (while `hasMore` is true) only for the posts you will list.

list_workspaces → find workspaceId
list_pages(workspaceId) → get pageIds for context

// Scheduled posts in window
list_posts(
  workspaceId,
  postStatus: ["SCHEDULED"],
  scheduledAfter: [start of window],
  scheduledBefore: [end of window]
)

// Posts with no date set (drafts that may be intended for this period)
list_posts(
  workspaceId,
  postStatus: ["NO_DATE_SET"]
)

// Posts that failed to publish
list_posts(
  workspaceId,
  postStatus: ["PUBLISHED_WITH_ERRORS"]
)

// Posts with incompatible content that can't publish as they are (e.g. Instagram without media)
list_posts(
  workspaceId,
  postStatus: ["WITH_ERRORS"]
)

If the workspace has an approval workflow (`approvalWorkflow` from `get_workspace_details` is not "none"), also check for posts needing approval that are scheduled soon:

list_posts(
  workspaceId,
  approvalStatus: ["NOT_APPROVED", "PARTIAL_APPROVED"],
  scheduledAfter: [start of window],
  scheduledBefore: [end of window]
)

---

Step 3: Build the audit view

Calendar overview

Show scheduled posts grouped by day. For each day:

  • List platform + post preview (first 80 chars)
  • Flag approval status inline (✅ approved / ⏳ pending / ❌ not approved)
  • Flag any errors (🔴)

**Example format:**

Monday, May 19
  • LinkedIn — "Three things we learned running 50 client campaigns..."  ✅
  • Instagram — "Behind the scenes of our Q2 content sprint..."  ⏳ pending approval

Tuesday, May 20
  ⚠️ Nothing scheduled

Wednesday, May 21
  • Facebook — "Meet the team: this month we're spotlighting..."  ✅
  🔴 Instagram — Publishing error — needs attention

Gap analysis

After the calendar view, add a short summary:

  • **Total posts scheduled:** [n] across [n] platforms
  • **Days with no content:** list them
  • **Posts with no date set:** [n] drafts not yet placed on the calendar
  • **Posts with errors:** [n] — list them with platform and preview, keeping failed-to-publish posts apart from posts with incompatible content
  • **Posts scheduled but not yet approved:** [n] — flag urgency if within 24–48h

Recommendations

2–4 short, specific callouts. Examples:

  • "Wednesday has nothing scheduled across any platform — consider moving [post X] there."
  • "2 Instagram posts are going out tomorrow without approval."
  • "3 LinkedIn drafts have no date — worth placing them before the end of the week."

Keep recommendations specific to what's in the data. Don't generate generic best-practice advice.

---

Step 4: Optional follow-up

After the audit, offer:

  • "Want me to draft posts to fill the gaps?"
  • "Should I check another client or a different date range?"

---

Edge cases

  • **Many workspaces**: If the user asks to audit "all clients", loop through workspaces and produce one summary section per workspace. Warn if there are more than 5 — it may take a moment.
  • **Empty calendar**: If nothing is scheduled, say so directly. Offer to draft posts if appropriate.
  • **Recurring / synced posts**: Grouped posts show as one unit — note this if multiple platforms are covered by a single grouped post.
  • **Time zones**: `list_posts` returns scheduled times in UTC. If the user's timezone is known, convert. Otherwise, note that times shown are UTC. `show_calendar` already uses the workspace timezone.
Read more
@seranking-planable
Ships withplanable-smm

Production-ready Claude Agent Skills for social media managers, paired with the Planable MCP server and — for the cross-channel skills — the SE Ranking MCP server.

412 skills1 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
4
Star history of seranking-planable/smm-skills on GitHub, a chart by star-history.com

Other skills on planable-smm.

More skills from other plugins.

seo

seo

Comprehensive SEO analysis for any website or business type. Full site audits, single-page analysis, technical SEO (crawlability,…

@agricidaniel@agricidanielInstall Skill
brag

brag

Turn the current project website into a short, polished, shareable launch video using Hyperframes. Use when someone says "/brag",…

brag3w21k
@latent-spaces@latent-spacesInstall Skill
geo-audit

geo-audit

Full website GEO+SEO audit with parallel subagent delegation. Orchestrates a comprehensive Generative Engine Optimization audit…

Questions about content-calendar-audit.

Which coding agents can use content-calendar-audit?
content-calendar-audit installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.