# RankHub — Complete Platform Documentation > RankHub is an SEO autopilot platform that researches keywords, generates optimized blog articles, and publishes them to your website via webhook. This document contains the complete v1.0 specification. ## Platform Overview RankHub automates the entire SEO content pipeline: 1. Keyword Research — AI + DataForSEO powered keyword discovery and scoring 2. Content Calendar — Monthly scheduling based on subscription tier 3. Headline Generation — AI generates SEO-optimized headlines from your keyword pool 4. Your Approval — Email-based approval with 5-day window (or auto-approval) 5. Draft Generation — Full article with featured image, internal links, and HTML formatting 6. Publish & Deliver — Webhook delivery to your endpoint with retry logic ## SEO Autopilot Pipeline ### Monthly Cycle - Calendar generated 10 days before each month ends - Headlines created immediately after calendar generation - Approval email sent with secure token (5-day deadline) - Drafts generated 1 day before scheduled publish date - Publishing check runs hourly; articles delivered via webhook ### Content Calendar - Starter: 4 posts/month (every 7 days) - Growth: 15 posts/month (every 2 days) - Scale: 30 posts/month (daily) - Configurable publish day (Monday through Sunday) ### Headline Approval - Email with secure approval link - Select/deselect individual headlines - Shows: headline, target keyword, search intent, scheduled date, rationale - Auto-approval mode available (skips email, immediate queue) - Expired approvals (>5 days) are not generated ### Semantic Safety - Pre-publish similarity check using vector embeddings - Articles with >90% similarity to existing content flagged for review - Prevents duplicate or near-duplicate content publishing ## Article Types 10 article types, auto-selected based on search intent: | Type | Pattern | Intent | Pillar | |------|---------|--------|--------| | HOW_TO | How to [Goal] with [Method] | Informational | No | | LISTICLE | [N] Ways/Tips to [Goal] | Informational | No | | ULTIMATE_GUIDE | The Ultimate Guide to [Topic] | Informational | Yes | | COMPARISON | [A] vs [B]: [Key Factor] | Commercial | No | | BEST_OF | Best [Solutions] for [Audience] | Commercial | No | | PROBLEM_SOLUTION | Why [Problem] and How to Fix It | Informational | No | | CASE_STUDY | How [Entity] Achieved [Result] | Commercial | No | | EXPERT_TIPS | [N] Expert Tips for [Goal] | Informational | No | | BEGINNERS_GUIDE | [Topic] for Beginners | Informational | Yes | | ALTERNATIVES | [Competitor] Alternatives | Commercial | No | Pillar content (ULTIMATE_GUIDE, BEGINNERS_GUIDE): 1-2 per month, comprehensive hub pages. ## Content Settings Configurable per website in Settings > Content: - Article Style: informative, conversational, professional, technical - Image Style: brand-text, textured-illustration, editorial, minimal-typography - Internal Links: 0-10 per article (default: 3) - Brand Color: hex color for featured image text overlays - Call to Action: include CTA section (default: on) - YouTube Videos: embed relevant videos (default: off) - Infographics: generate inline visuals (default: off) - Emojis: use emojis in content (default: off) - Global Instructions: free-text instructions applied to every article ## Webhook Integration ### Role You are helping integrate RankHub webhooks into a web application. ### Context RankHub sends an HTTP POST request to a configured webhook endpoint whenever a new article is published. The endpoint must verify authentication before processing. IMPORTANT: Ask the developer what framework/language/CMS they are using before generating code. ### HTTP Headers - Content-Type: application/json - Authorization: Bearer - X-RankHub-Delivery-Id: ### JSON Payload ```json { "api_version": 1, "id": "string (unique post ID, CUID format)", "title": "string (article title)", "slug": "string (URL-safe, generated from target keyword)", "content_html": "string (sanitized HTML with semantic tags)", "content_markdown": "string (original markdown source)", "meta_description": "string (SEO meta description)", "image_url": "string (featured image URL)", "css_url": "string (URL to full stylesheet with layout + visual design)", "css_base_url": "string (URL to structural-only stylesheet — layout only, no colors/fonts)", "tags": ["string (topic tags)"], "created_at": "string (ISO 8601 timestamp)", "target_keyword": "string (primary SEO keyword)", "word_count": "integer", "reading_time": "integer (minutes, based on 200 wpm)", "schema_json": "array (JSON-LD structured data for BlogPosting rich results)" } ``` ### Task Build an endpoint AND a blog display page: #### 1. Webhook endpoint - Receives POST requests from RankHub - Verifies the Authorization Bearer token matches the AUTH_TOKEN environment variable - Creates or updates a blog post in the CMS/database using the payload fields - Returns HTTP 200 on success #### 2. Blog article page - Renders content_html inside a container with class="blog-prose" - Loads the RankHub stylesheet (REQUIRED for rich components to display correctly) - Renders image_url as the featured/hero image (handle empty string — hide if empty) - Injects schema_json as a