An editorial calendar is the difference between a blog and a publishing operation. With a calendar you know what goes out tomorrow, next Tuesday, and three weeks from now; without one you wake up every morning wondering whether you have anything to post. AI Content Generator includes a full editorial calendar that doesn’t just display scheduled posts the way the native WordPress calendar plugins do — it actively drives the publish queue, lets you pick between random windows and specific times, supports drag-and-drop rescheduling, and shows you a healthy weekly overview at a glance.
This tutorial walks through the entire feature: how the calendar reads from your campaigns, the two scheduling modes (random window versus specific time), how to mix both modes inside the same campaign, drag-and-drop rescheduling, the “this week at a glance” stats panel, and the common patterns for running a multi-campaign editorial calendar without conflicts.
By the end you’ll have a calendar that publishes 3, 5, or 30 posts per day automatically, with the natural irregularity of a human-edited blog (random windows) plus the predictability of a corporate publishing rhythm (specific times) — both achievable in the same UI, configurable per campaign, with zero ongoing maintenance once set up.
Where the calendar lives
Open the WordPress admin and go to AI Content Generator → Calendar. The view loads with the current week centred and a month-grid layout, similar in spirit to a Google Calendar week view but adapted to publishing: each day shows the slots already scheduled, colour-coded by mode and status, with the campaign name and the configured time.

The colour code is consistent across the entire view: blue tiles mean a fixed-time slot, yellow tiles mean a random-window slot, ticked tiles mean the slot has already been published. The top control bar lets you switch month, filter by campaign (useful when you have ten campaigns running and want to see only one of them), and open the “Schedule new drafts” dialog that drives the rest of this tutorial.
The two scheduling modes
AI Content Generator supports two scheduling modes, and each campaign can use one, the other, or a mix.
Specific time means exactly what it says: a slot pinned to a hour:minute. You set “every weekday at 09:00”, the plugin schedules the draft to publish at 09:00 sharp (server time, modulo the WP-Cron caveats covered in another tutorial). Specific time is the right choice for newsletters, daily news roundups, anything where readers expect to find the new post at a predictable moment.
Random in window means the campaign picks a random time inside a window you define. You set “10:00–14:00, 3 drafts per day”; the plugin schedules three posts at three random moments inside that window, evenly distributed (not clustered at the start). Random window is the right choice for evergreen content, for blogs that want to look more “human” in their publishing pattern, and for high-volume sites where exact times don’t matter.
Step 1 — Schedule a campaign in random-window mode
From the Calendar view, click the blue Schedule new drafts button at the top right. The Schedule mode panel opens. Switch the mode toggle to Random in window. Two fields appear: Window (start and end time) and Drafts per day.
Set the window to your editorial working hours — 10:00 to 14:00 is a common starting point for English-language SEO blogs because it covers the late-morning US East Coast peak. Set drafts per day to the number you want. Pick the campaign from the dropdown and the date range you want to populate (typically “next 14 days”). Save.
The calendar repopulates with yellow tiles distributed across the next two weeks, each labelled “⟳ random 10–14”. When the cron actually fires for each day, the plugin picks a random time inside that window, generates the article, and publishes it. The yellow tile becomes blue (with a tick) once published.
Step 2 — Add fixed-time slots for predictable rhythm
On the Schedule mode panel, switch the mode toggle to Specific time. The fields change: instead of a window, you set a single time. Configure something like “09:00 every weekday” plus “11:00 every weekday”. Pick the campaign, the date range, save.
The calendar now shows blue tiles at 09:00 and 11:00 on every weekday in the range. If you previously created yellow random-window tiles, both modes coexist — random in the middle of the day, fixed at the predictable hours. This is the configuration most editorial teams converge to: a few anchor publishes at fixed times to set the rhythm, plus randomly distributed extras to fill the publishing cadence.
Step 3 — Drag and drop to reschedule
Every tile on the calendar can be dragged. Drop it on a different day to move that slot to the new date. Drop it on an empty day to add a new slot there. Drag it onto the trash icon at the top right to delete the slot entirely (the article isn’t deleted if already published, just unscheduled if still in the queue).
Drag-and-drop is also how you reorder titles inside a single day. Each tile has a small grip handle on the right; grabbing it and dropping inside the same day re-orders without changing the schedule. Useful when you want to publish related posts in a specific order (a comparison article before the round-up that references it).
Step 4 — Use the “This week at a glance” panel as a health check
The stats panel on the right summarises the publishing health of the current week: scheduled count, published already, in-queue (next 7 days), average daily output, balance between random and fixed slots, and the next cron fire time. Three numbers to watch.
- In queue (next 7 days) below 5 is a warning sign — your campaigns are running out of titles. Add more titles in the campaign editor or the calendar runs dry.
- Avg daily output should match what you intended when you scheduled the campaigns. A drift from your intent usually means a campaign was paused and its slots are now being skipped.
- Next cron fire longer than 10 minutes is a sign that WP-Cron isn’t firing reliably — see the WP-Cron tutorial for fixes.
Step 5 — Filter by campaign when running multiple in parallel
The campaign filter dropdown at the top of the calendar lets you isolate a single campaign. With 10 campaigns publishing 3 posts a day each, the calendar quickly fills with 30 tiles per day and you can’t read anything. Filter down to “Blog Claude” to see only that campaign; filter down to “All” to get the full picture again.
A useful habit: when planning a new campaign, filter the calendar to the campaign nearest in tone and check its actual publishing pattern. You’ll quickly see whether the random window is too narrow (tiles cluster), too wide (tiles spill into weekends), or whether the fixed times collide with other campaigns. Adjusting before you launch is much cheaper than re-shuffling once published posts are in the air.
Step 6 — The “smart spread” option for uneven schedules
In the Schedule mode dialog there’s a third toggle hidden under the “advanced” twirl: Smart spread. With smart spread enabled, the plugin doesn’t distribute slots uniformly — it weights them by day-of-week, putting more posts on the days your historical analytics show higher reader engagement (Monday morning, Wednesday afternoon, etc.).
The data source for the smart spread is whatever analytics integration you have active: Google Site Kit, Jetpack Stats, or a manual CSV you can upload. Without an active source, smart spread falls back to a fixed weighting (heavier Mon-Wed, lighter Fri, lightest weekend). Most blogs benefit from enabling it as soon as they have two months of analytics data.
Step 7 — Pre-flight check before publishing
The calendar includes a pre-flight check button (the small lightning icon in the controls bar). It runs through the next 7 days and flags potential issues: a day with no scheduled posts, a slot whose campaign is paused, a campaign about to run out of titles, two campaigns with overlapping fixed-time slots, an external cron trigger that hasn’t fired in the last 30 minutes.
Run pre-flight every Friday afternoon as a habit. Five minutes spent fixing the flags now saves the panic of finding that next Wednesday’s slot was empty because the queue ran out — and Google notices when a blog goes dark for two days in the middle of a publishing rhythm.
Common patterns and recommendations
- Single-author blog, 1 post per day — one campaign in specific-time mode, weekdays at 08:00, weekends off.
- News blog, 5 posts per day — two campaigns: a “morning briefing” in specific-time mode at 08:00, plus a “throughout the day” campaign in random-window mode 10:00–18:00 with 4 drafts per day.
- Multi-cluster SEO blog, 3 clusters — three campaigns, each in random-window mode 09:00–17:00, 1 draft per day per cluster. Smart spread enabled.
- Local portal, 30 cities, 50 articles per city — one campaign per city in random-window mode 10:00–16:00, 1 draft per day per city, 1500 total articles over 50 days.
Troubleshooting
- Tiles show in the calendar but no post appears at the time — your WP-Cron isn’t firing on time. See the WP-Cron tutorial.
- Tiles disappear after saving — the campaign hit its title queue limit. Add more titles.
- Random window tiles all cluster at the start of the window — the plugin’s randomiser uses the campaign ID as a seed; if you create three campaigns one after the other they may produce correlated random distributions. Toggle “Reseed every day” in the advanced panel to fix.
- Drag-and-drop doesn’t stick after page reload — your browser blocked the save POST due to a Cloudflare rule. Whitelist your admin user agent in Cloudflare or temporarily disable the firewall for the admin path.
You’re done
That’s the full editorial calendar: random-window mode for natural irregularity, specific-time mode for predictable rhythm, drag-and-drop for fine-tuning, the stats panel as a daily health check, smart spread for analytics-weighted distribution, pre-flight for Friday-afternoon peace of mind.
Once configured, the calendar becomes the only AI Content Generator screen you’ll need to open weekly. The campaigns generate articles, the cron fires the publishes, the calendar shows you what’s coming — and you spend your editorial time on the upstream work (adding titles, tuning the brief) rather than on the downstream scheduling. That’s the entire point of an editorial calendar.
