Content Calendar
The Content Calendar gives you a visual overview of all your content — scheduled, published, draft, and pending approval — and lets the AI plan entire weeks or months of content for you.
The ContentCalendar Model
Behind every AI-generated calendar is a ContentCalendar object that tracks the generation parameters and lifecycle:
ContentCalendar
├── name → Calendar name (e.g., "March 2026 Instagram Plan")
├── description → Optional description of the calendar's purpose
├── status → GENERATING | READY | ACTIVE | ARCHIVED
├── startDate → First day of the calendar period
├── endDate → Last day of the calendar period
├── platforms[] → Target platforms (Facebook, Instagram, TikTok)
├── niche → Your content niche (e.g., "fitness", "SaaS", "fashion")
├── goals[] → Content goals (e.g., "brand awareness", "lead generation")
└── brandVoiceId → Links to your Brand Voice for consistent AI output
Each calendar contains multiple CalendarEntry records — one for each suggested post:
CalendarEntry
├── suggestedDate → Recommended publish date
├── platform → Target platform for this entry
├── contentType → Post format (image, video, carousel, story, etc.)
├── topic → Suggested topic or content idea
├── captionDraft → AI-generated caption draft
├── hashtags[] → Suggested hashtags
├── notes → Additional context or instructions
├── isApproved → Whether this entry has been approved
├── linkedPostId → Links to an actual Post once created
└── sortOrder → Display ordering within the calendar
Calendar Views
| View | Best For |
|---|---|
| Monthly | Big-picture overview — see content density, gaps, and balance across the full month |
| Weekly | Day-by-day detail — review captions, media, and timing for each scheduled post |
AI-Generated Calendar 🤖
Let the AI plan your entire content calendar. This is one of UniPulse's most powerful features.
How to Generate
- Go to Content Calendar
- Click AI Generate Calendar
- Configure the generation parameters:
| Parameter | What to Set |
|---|---|
| Date range | Start and end dates for the calendar |
| Platforms | Which platforms to plan for |
| Niche | Your content niche or industry |
| Goals | What you want to achieve (awareness, engagement, conversions, etc.) |
| Posting frequency | How many posts per week per platform |
| Brand Voice | Select which Brand Voice to use (auto-selects default if set) |
- Click Generate — the calendar status moves to
GENERATING - The AI processes your request on the
calendar-generatequeue - Once complete, the status becomes
READYand you can review all entries
Reviewing Generated Entries
Each CalendarEntry can be individually:
- Approved — Sets
isApproved: trueand the entry is ready to become a real post - Edited — Modify the topic, caption draft, hashtags, or suggested date
- Regenerated — Ask the AI to suggest a different idea for that slot
- Deleted — Remove the entry from the calendar
You don't have to approve everything at once. Review a week at a time, approve what works, and regenerate the rest. The calendar stays in READY status until you activate it.
Activating the Calendar
Once you're happy with the entries, click Activate Calendar. This:
- Changes the calendar status from
READYtoACTIVE - Creates actual
Postobjects from approvedCalendarEntryrecords - Links each entry to its post via
linkedPostId - Posts are created as
DRAFTorSCHEDULEDdepending on your preference
Calendar Status Lifecycle
GENERATING → READY → ACTIVE → ARCHIVED
| Status | Meaning |
|---|---|
GENERATING | AI is processing on the calendar-generate queue |
READY | Generation complete — entries available for review |
ACTIVE | Calendar is in use — entries have been converted to posts |
ARCHIVED | Calendar period has passed or was manually archived |
Drag & Drop
Reschedule posts by dragging them to a different day or time slot on the calendar. This updates the underlying scheduledAt field on the Post's Schedule record (or the suggestedDate on a CalendarEntry if the post hasn't been created yet).
Color Coding
Posts on the calendar are color-coded by status for quick visual scanning:
| Color | Status |
|---|---|
| 🔵 Blue | Scheduled |
| 🟢 Green | Published |
| 🟡 Yellow | Draft |
| 🔴 Red | Failed |
| 🟣 Purple | Pending approval |
What the AI Considers
When generating a content calendar, the AI analyzes:
- Your Brand Voice — Tone, vocabulary, and style from the linked
brandVoiceId - Content goals — Maps each entry to one of your specified
goals[] - Platform best practices — Optimal content types and posting times per platform
- Content variety — Ensures a mix of content types (images, videos, carousels) and topics
- Your niche — Industry-specific trends and seasonal relevance
Behind the Scenes
Calendar generation is handled by the calendar-generate queue, which is separate from the ai-suggestions queue used for individual caption generation. This is because calendar generation is a heavier operation — the AI needs to plan multiple interconnected entries that form a coherent content strategy, rather than generating a single caption.
The process:
- Your generation request is enqueued on
calendar-generate - The AI receives your parameters plus your Brand Voice data
- It generates all
CalendarEntryrecords in a single batch - Entries are stored with
isApproved: falseby default - The calendar status flips to
READY
Related Pages
- Post Composer — Create posts from calendar entries
- Scheduler — How scheduled posts are delivered
- AI Captions — AI caption generation for individual posts
- Brand Voice — Configure the Brand Voice used in calendar generation