Skip to content
SlashClone

Content calendar

@contentstudio/content-calendar

Plan a few weeks of content across LinkedIn, a newsletter, a blog, and more. A script lays out dated slots per channel with your content pillars rotated evenly, then Claude fills in specific topics and hooks you can actually write. Exports a CSV for your sheet or planner.

SkillContentv1.0.0 (latest)Tested
Activity
New: be the first to try it
  1. 1---
  2. 2name: content-calendar
  3. 3description: Plan a content calendar for the next few weeks across channels (LinkedIn, newsletter, blog, X, Instagram, YouTube, podcast). A script lays out dated slots with content pillars rotated evenly; Claude then fills each slot with a specific topic and hook, and exports a CSV for a spreadsheet or planner. Use when the user says "plan our content", "content calendar", "what should we post this month?", "editorial calendar", or "posting schedule".
  4. 4license: MIT
  5. 5---
  6. 6
  7. 7# Content calendar
  8. 8
  9. 9Most content calendars fail in one of two ways: a grid of empty boxes, or a list of vague themes ("thought leadership"). This one gets the structure right with a script (dates, channels, an even pillar mix) and then fills every slot with a topic specific enough to start writing today.
  10. 11## When to use
  11. 13- Planning the next 2 to 8 weeks of posts, newsletters, or articles.
  12. 14- "What should we post this month?", "build our content calendar", "plan LinkedIn for Q1".
  13. 15- To turn one big piece into many, use `repurpose-long-form` and slot the results in here.
  14. 17## Inputs
  15. 19Ask in one message, with these defaults:
  16. 211. **Start date** (next Monday) and **weeks** (4).
  17. 222. **Channels and days.** Default: LinkedIn Mon, Wed, Fri; newsletter Thu; blog Tue. Fewer channels done well beats many done badly. Suggest cutting if the team is one person and they ask for more than 4 pieces a week.
  18. 233. **Pillars:** 3 to 4 recurring themes (default: Product tips, Customer stories, Behind the scenes). Good pillars map to what the audience wants, not to departments.
  19. 244. **Audience** in one line, and **what is coming up:** launches, events, holidays, dates to skip.
  20. 255. **Raw material:** existing posts, docs, customer quotes, or notes in `content/`. Read them; good topics come from here.
  21. 266. **Voice:** follow `brand.md` if it exists.
  22. 28## Steps
  23. 301. **Lay out the slots.**
  24. 32 ```bash
  25. 33 node scripts/calendar.mjs content/calendar --start 2026-11-09 --weeks 4 --cadence "linkedin:mon,wed,fri newsletter:thu blog:tue" --pillars "Product tips,Customer stories,Behind the scenes" --skip 2026-11-26
  26. 34 ```
  27. 36 It writes `content-calendar.csv`, `.md`, and `.json` in `content/calendar/`. It will not overwrite an existing calendar; pass `--name december` for a new one, or `--force` only if the user says to replace it.
  28. 372. **Place the fixed moments first:** launches, events, and holidays go in the slots nearest their dates. Put a teaser 3 to 5 days before a launch and a recap after.
  29. 383. **Fill every slot** in the CSV: `topic` (specific, one sentence) and `hook` (the first line a reader sees). Match the pillar and the channel format:
  30. 39 - LinkedIn post: one idea, a story or a lesson, 150 to 250 words.
  31. 40 - Newsletter issue: one main piece plus two short links.
  32. 41 - Blog article: a question people search for, 800 to 1,500 words.
  33. 42 - Thread or carousel: a list of 5 to 8 steps or examples.
  34. 43 Specific beats general: "How one clinic cut no-shows from 18% to 7% with a two-line text" beats "Customer success story".
  35. 444. **Reuse on purpose.** A blog article on Tuesday can feed Wednesday's LinkedIn post and Thursday's newsletter. Note the source in `link`.
  36. 455. **Check the mix:** no pillar twice in a row on the same channel, no more than one promotional piece in five, at least one piece a week that asks the audience a question.
  37. 466. **Update the `.md`** to match the filled CSV and show the first two weeks in chat. Ask what to swap.
  38. 48See `examples/content-calendar-filled.csv` for what a finished week looks like.
  39. 50## Output format
  40. 52```markdown
  41. 53# Content calendar: 2026-11-09 to 2026-12-04
  42. 5520 pieces over 4 weeks. linkedin 12, blog 4, newsletter 4.
  43. 57## Week 1 (from 2026-11-09)
  44. 58| Date | Channel | Format | Pillar | Topic | Hook |
  45. 59| --- | --- | --- | --- | --- | --- |
  46. 60| Mon 2026-11-09 | linkedin | post | Product tips | The 2-line reminder text that halves no-shows | "Most reminder texts are too long. Ours is 2 lines." |
  47. 61```
  48. 63## Guardrails
  49. 65- Never schedule or publish anything. This plans; people post.
  50. 66- Do not invent customer names, results, or quotes for topics. Use `<customer story: need one>` and list what material is missing.
  51. 67- Keep the calendar realistic for the team size the user gave. Say so if the plan is more than they can produce.
  52. 68- Do not overwrite a calendar that has topics filled in.