Content Engine
Content Planner
Plan and schedule articles on the content calendar.
The Content Calendar (app.grandranker.com/content-planner) is Grandranker's home screen for content: a month view where every scheduled keyword sits on the day its article will be written. Grandranker fills the calendar for you (during onboarding and with automatic monthly refills) and generates one article per scheduled day without you touching anything. The calendar is where you review and adjust that plan.

Reading the calendar
On desktop, each card shows the keyword, its content type (Blog Post, How-To Guide, Listicle, Comparison, Alternatives, Ultimate Guide, or Product Review), volume and difficulty, and a status badge. Generated articles with a featured image also show a compact image preview. On mobile, cards keep only the title, status, and featured-image preview so the calendar stays easy to scan.
- Generating...: the article is being written; the calendar live-updates.
- Draft: the article exists and is waiting for review or its publish date.
- Published: live on your site.
- Overdue: the scheduled day passed without an article; Grandranker's daily backfill retries these automatically.
Click a card with an article to open it. Use the arrows next to the month name to browse up to about six months back and two months ahead.
Rescheduling with drag & drop
Drag any unpublished card to a different day. If the target day is already at capacity, Grandranker swaps the two keywords instead of rejecting the move, so your daily counts stay balanced. Published articles can't be dragged.
Adding keywords to the plan
Hover an empty future day for two shortcuts:
- Add keyword: manually add a keyword scheduled to that exact date.
- Generate: open the AI keyword generator (pick a generation type and count; subject to the monthly AI keyword quota).
The Add Keywords button in the header takes you to the full Keywords page.
Per-article settings
Click the gear icon on a card to open Keyword Settings. On the right, under Article Settings, you can override how this one article is written:
- Content Type: choose one of the seven types.
- Article Length: Default (~2,000 words, Long for ultimate guides), Micro (~300), Short (~1,000), Medium (~2,000), or Long (3,000+).
- Custom Instructions: up to 2,000 characters of free-form guidance, e.g. "Write for beginners, mention our free trial, include a comparison table".
If the card has no article yet and its date is within the next few days, a Generate button lets you start it immediately instead of waiting for the scheduled run.
Publishing drafts
The Publish articles button in the header pushes every due draft to your connected CMS in one go (future-scheduled drafts are left alone). If no integration is connected yet, the dialog offers Connect integration instead. See the Integrations overview.
Your monthly article volume
The Articles Plan pill in the header shows your current cadence: 30 articles per month by default (one per day). From the pill you can upgrade to 60 articles/month (2 per day) or 90 articles/month (3 per day) per website. Checkout happens in-app and the new capacity applies immediately.
Local SEO tip: if you use Local SEO and your plan skews too general, a banner offers to Optimize Mix. It swaps low-priority general keywords for local ones to reach a roughly 50/50 balance. Swapped-out keywords aren't deleted; they return to your unscheduled backlog.
FAQ
Do I have to schedule anything manually?
No. Onboarding builds your first 30-day plan, a monthly refill adds ~30 fresh keywords before each cycle, and daily jobs generate and publish on schedule.
What happens to a day I leave empty?
Nothing is generated that day. Drag a keyword onto it or use Add keyword / Generate to fill it.
Why did an article generate on a different day than shown?
If a day's run fails, a same-day guard pass retries later that day, and a daily backfill retries past-due keywords for up to a week before returning them to the pool.
Can I remove a keyword from the calendar?
Yes. The trash icon on a card (available until an article exists) asks you to confirm, then removes the keyword.
Questions? Contact us at [email protected].