Once your brand is connected, a keyword is scheduled, and a webhook is set up, Ranket generates and publishes articles automatically. Here’s what that loop looks like end-to-end.
The daily cron
Every day at 09:00 UTC the daily generation cron fires. It:
- Queries
content_calendarfor entries scheduled today - For each entry, enqueues a
content.generatejob - The job runs the 8-stage pipeline (see below)
- On success, fires the CMS webhook
- Marks the calendar entry
published
You can also generate any article on demand from the dashboard — useful for testing or for ad-hoc topics.
The 8 stages
1. Research — Fetch SERP top 10 + people-also-ask + related kws for the target
2. Scrape — Pull the top 5 competitor URLs' content into a fact pool
3. Strategy — Claude Sonnet picks format, word count, outline, links
4. Brief — Claude Sonnet expands strategy into a section-by-section brief
5. Data points — Claude Haiku extracts ~15 cite-able facts from competitors
6. Draft — Claude Sonnet writes the full body (3,000+ words, follows brief)
7. Polish — Claude Sonnet refines for tone, voice, citation density
8. Images — Fal nano-banana generates hero + ~4 inline images
9. Assemble — Markdown + JSON-LD bundle + meta object → delivery payload
Total time per article: 5-12 minutes (depends on Claude latency and SERP/scrape speed).
If a brand has a pre-computed plan
For efficiency, Ranket can pre-plan articles ahead of their scheduled date. When a keyword goes onto the calendar:
- A
content.planjob runs immediately — produces the strategy + brief (~2-3 min, ~$0.13) - The plan is stored on the calendar row
- On the scheduled day, generation skips stages 1-5 (already done) and only runs draft + polish + images + assemble (~3-5 min)
This is the default. The plan-then-execute split spreads cost over time and makes the daily cron fast and predictable.
Reviewing before publish
If your brand is in review mode:
- The pipeline runs all 8 stages and produces a finished article
- Webhook delivery is paused
- You see the article in the dashboard with a side-by-side preview (rendered HTML + raw Markdown)
- Click Approve → webhook fires
- Click Reject → article is discarded, keyword goes back to
available
In autopilot mode, this gate is skipped — the webhook fires automatically after assemble.
What the article looks like
A finished Ranket article (matching the structure published on bright-shot.com/blog, our reference brand):
- 2,500-3,500 words
- 8-12 H2 sections, 2-4 H3 sub-sections per H2
- TL;DR / “For skimmers:” bullet summary at the top
- 8-12 FAQ entries (with featured-snippet-friendly answers)
- 1-3 inline comparison tables
- 12-15 internal links to your existing site pages
- 5-6 CTA touchpoints (intro implicit + mid soft + end strong + 2-3 inline product mentions)
- Hero image + 3-5 inline section images
- Full JSON-LD bundle (BlogPosting + FAQPage + HowTo when applicable + WebApplication + Organization + WebSite + BreadcrumbList + Person + WebPage)
- 8 cite-able facts from competitor research with inline source links
For full schema details, see article quality.
Cost per article
Steady-state, for a brand on the daily plan:
Plan ~$0.13 (strategy + brief + data points)
Draft ~$0.30 (Sonnet, 24k max tokens)
Polish ~$0.16 (Sonnet refinement pass)
Images ~$0.21 (Fal nano-banana × 3-4)
Backlinks ~$0.02 (optional, when matching offers exist)
─────────────────
Total ~$0.82
This is what Ranket pays per article. Your subscription covers it.
Failures and retries
If any stage fails:
- The pipeline records
current_stage(which stage broke) anderror(the message) - Pipeline-recoverable errors (network blips, transient API errors) are retried automatically up to 3 times
- Permanent errors (auth failure, schema rejection) are surfaced in the dashboard for you to inspect
Failed articles stay on the calendar in failed status until you retry them or dismiss. They don’t block the rest of the cadence.