๐Ÿš€

Welcome to Postpire

Let's get to know your website so we can create perfect content for you.

โœจ

We've Analyzed Your Website!

Here's what we learned about your business:

๐Ÿ“ฆ What You Offer Loading...
๐ŸŽฏ Your Niche Loading...
๐Ÿ‘ฅ Target Audience Loading...

You can update this in Settings anytime.

Analyzing Your Website...

Our AI is reading your website to understand your business.

Postpire logo
U

User

Workspace / Dashboard

Welcome back, User! ๐Ÿ‘‹

Your Google Search Console performance at a glance

๐Ÿ”— Connect Google Search Console to see real data

Total Clicks

--

Last 28 days

Impressions

--

Times shown in search

Click-Through Rate

--%

Clicks / Impressions

Avg. Position

--

In Google search results

Search Performance

Clicks Impressions
Loading search data...

๐Ÿ” Top Search Keywords

Keywords your content ranks for
Loading keywords from Google Search Console...

Content Queue

Article Status SEO Score Actions
No items found

Your 30-Day Content Plan

Click on any article to review

โ— Scheduled โ— Ready โ— Draft
Loading calendar...

โš™๏ธ Settings

Manage your integrations, AI analysis, subscription, and project details

๐Ÿ”— Connected Services

Manage your integrations and connected accounts

Google Search Console

Checking connection...

Connected Website

--

๐Ÿค– AI Website Analysis

AI-powered analysis of your website to generate better content

Current Analysis

No analysis yet. Run AI analysis to understand your website.

Analysis helps generate better SEO-optimized content for your website

๐Ÿ’ณ Subscription & Billing

Manage your subscription plan and payment methods

Checking status...
Next billing date

Monthly subscription. Cancel anytime. No hidden fees.

๐Ÿ“‹ Project Details

Configure your project settings and content preferences

Publish to Your Website

Choose how you want to connect Postpire to your website

Coming Soon
Webflow

Webflow

Sync articles with your Webflow CMS collections

Not available yet
Coming Soon
WordPress

WordPress

Direct integration with WordPress REST API

Not available yet
Available

Custom Webhook

Send articles to any endpoint you control

Custom Webhook
Postpire Your Blog

Your articles flow seamlessly
from Postpire to your website

Connect Your Website

Set up your webhook endpoint to receive published articles automatically.

Not connected Configure your endpoint below
ยท

Quick Setup

  1. Add api/blog-webhook.js to your project
  2. Set WEBHOOK_SECRET in your environment
  3. Save your endpoint URL above
Draft

Article Title

-- -- min read
SEO Preview
--
yoursite.com/article-slug
--
Export

Full HTML with meta tags, schema markup & optimized structure

Review this article and take action

Request an Edit

Let us know what you'd like changed

Changes typically appear within 5 min to 1 hour

SEO Optimization Tasks

Loading...

Generating SEO tasks...

Paste into Cursor, VS Code, or any AI IDE to implement

Custom Webhook Integration

Connect Postpire to any platform via HTTP POST requests

๐Ÿ”— How It Works

When you click "Publish to Website" on an approved article, Postpire sends a POST request to your webhook URL with the article data. Your server receives it, verifies the secret, and saves the article to your database.

๐Ÿ“ค Request Headers

Every webhook request includes these headers:

Content-Type: application/json
X-Webhook-Secret: your-secret-key-here

๐Ÿ“ฆ Payload Structure

Article data includes both Markdown and HTML formats:

{
  "event_type": "article.published",
  "timestamp": "2026-02-01T12:00:00Z",
  "article": {
    "id": "65abc123...",
    "slug": "how-to-rank-higher",
    "title": "How to Rank Higher on Google",
    "content_markdown": "# Introduction\n\nRanking higher...",
    "content_html": "<h1>Introduction</h1><p>Ranking...</p>",
    "meta_title": "How to Rank Higher | Guide",
    "meta_description": "Learn the strategies...",
    "keywords": ["seo", "ranking"],
    "read_time": "8 min read",
    "published_at": "2026-02-01T12:00:00Z"
  },
  "image": {
    "url": "https://example.com/featured.jpg",
    "alt": "Featured image alt text"
  },
  "website": {
    "id": "project-id",
    "name": "My Blog",
    "base_url": "https://myblog.com"
  }
}

๐Ÿ” Verifying Requests

Always verify the secret before processing:

// Node.js / Express
app.post('/api/webhook', (req, res) => {
  const secret = req.headers['x-webhook-secret'];
  
  if (secret !== process.env.WEBHOOK_SECRET) {
    return res.status(401).json({ error: 'Invalid secret' });
  }
  
  const { article, image } = req.body;
  
  // Save to your database
  await db.articles.create({
    postpireId: article.id,
    title: article.title,
    slug: article.slug,
    content: article.content_html,  // or content_markdown
    metaTitle: article.meta_title,
    metaDescription: article.meta_description,
    featuredImage: image?.url
  });
  
  res.status(200).json({ success: true });
});

๐Ÿ“‹ Payload Fields

Field Type Description
article.id string Unique identifier (use for deduplication)
article.slug string URL-friendly slug for the article
article.title string Article headline
article.content_html string HTML content (ready for display)
article.content_markdown string Markdown content (for processing)
article.meta_title string SEO title
article.meta_description string SEO description
article.keywords array Target keywords
image.url string Featured image URL
image.alt string Image alt text

โœ… Best Practices

  • Always verify X-Webhook-Secret before processing
  • Respond with 200 status code within 30 seconds
  • Use article.id to detect updates vs new articles
  • Use content_html for display, content_markdown for editing
  • Store secrets in environment variables, never in code

๐ŸŽจ Styling Your Blog

The content_html contains raw HTML (headings, paragraphs, lists, etc.). Your CSS automatically styles this content - no extra work needed for each article!

<!-- Your blog template -->
<article class="my-article">
  <h1 class="article-title">${article.title}</h1>
  <img src="${image.url}" alt="${image.alt}">
  
  <!-- Content from Postpire - your CSS styles it -->
  <div class="article-content">
    ${article.content_html}
  </div>
</article>

<style>
  /* Your styles apply to all articles */
  .article-content h2 { color: #333; font-size: 1.5rem; }
  .article-content p { line-height: 1.8; color: #555; }
  .article-content ul { padding-left: 24px; }
  .article-content a { color: #10B981; }
</style>

Key insight: Create your blog template ONCE with your design. Every article published from Postpire automatically inherits your styling!

๐Ÿ“ Recommended Setup

For a complete blog, add these files to your project:

your-website/
โ”œโ”€โ”€ api/
โ”‚   โ”œโ”€โ”€ blog-webhook.js  โ†’ Receives articles from Postpire
โ”‚   โ””โ”€โ”€ blog/
โ”‚       โ”œโ”€โ”€ posts.js     โ†’ GET /api/blog/posts (list all)
โ”‚       โ””โ”€โ”€ [slug].js    โ†’ GET /api/blog/:slug (single article)
โ”œโ”€โ”€ blog.html            โ†’ Blog listing page
โ””โ”€โ”€ article.html         โ†’ Single article template