Rankody

Publish SEO articles to any stack with signed webhooks

Custom Next.js site? Astro or Hugo with a headless CMS? Internal platform your team built years ago? If your stack can receive an HTTP request, Rankody can publish to it. The webhook integration delivers every finished article to an endpoint you control, as clean JSON with the title, markdown body, meta description, and target keyword.

Every delivery is signed with an HMAC secret we generate for you, so your endpoint can verify each request really came from Rankody before touching your content. You decide what happens next: write to your database, open a pull request, trigger a rebuild, anything your pipeline can express.

How the Webhooks connection works

  1. 1

    Point Rankody at your endpoint

    In the Integrations panel, choose Webhook and paste the URL your stack listens on. We generate a signing secret and show it once for you to store.

  2. 2

    Verify the signature

    Each request carries an HMAC-SHA256 signature header computed over the raw body with your secret. A few lines of code in any language confirms authenticity; the panel shows a worked example.

  3. 3

    Handle the payload your way

    The JSON gives you the article's title, markdown content, meta description, and keyword. Store it, transform it, commit it to git; re-link updates arrive through the same endpoint so old articles stay fresh.

The exact payload your endpoint receives

Every event is a JSON POST to the URL you configure, signed with an HMAC-SHA256 secret we generate once. Your endpoint may answer with {"url": "...", "id": "..."} to tell Rankody where the article ended up, which keeps re-link updates pointed at the right piece.

POST https://your-endpoint.example.com
{
  "event": "article.publish",
  "mode": "publish",
  "sentAt": "2026-08-28T06:00:00.000Z",
  "article": {
    "id": "8f3c...",
    "title": "How to Add Analytics Without Slowing a Site Down",
    "metaDescription": "A practical guide to ...",
    "targetKeyword": "add analytics to next.js site",
    "markdown": "## Answer first\n\n...",
    "html": "<h2>Answer first</h2>..."
  }
}

Verifying the signature

The header X-Rankody-Signature carries sha256=<hex digest> computed over the raw request body with your secret. Compare it before you trust anything in the payload, and compare it in constant time.

Node.js
import { createHmac, timingSafeEqual } from "node:crypto";

export function verify(rawBody, header, secret) {
  const expected = "sha256=" + createHmac("sha256", secret)
    .update(rawBody)
    .digest("hex");
  const a = Buffer.from(header ?? "");
  const b = Buffer.from(expected);
  return a.length === b.length && timingSafeEqual(a, b);
}

Three shapes that work well

What happens when your endpoint is down

The article stays in your Rankody queue and the delivery is retried; nothing is lost because a server had a bad afternoon. Every request carries an article id that is stable across retries and across later updates, so an idempotent receiver can safely ignore a duplicate.

What every article includes

Regardless of where it publishes, each Rankody article is long-form (typically 2,000 to 4,000 words), written from keyword research on your actual market, passed through a fact-check that verifies claims against cited sources, illustrated with properly attributed images, and linked to your existing articles. A monthly re-linking pass then keeps older posts pointing at newer ones, so the blog compounds instead of fragmenting.

Webhooks questions

What's in the webhook payload?+
The article's title, full markdown body (images and internal links included), meta description, and target keyword, plus a stable article id so re-link updates can find the same piece later.
How do I verify a request is really from Rankody?+
Compute HMAC-SHA256 over the raw request body with the secret we issued and compare it to the signature header. If they don't match, reject the request.
Does this work with static site generators?+
Yes, that's a common setup: the endpoint writes the markdown into your content directory (directly or via a git commit) and your CI rebuilds the site. Hugo, Astro, Eleventy, and Next.js all fit this pattern.
What if my endpoint is down when an article ships?+
The article stays safely in your Rankody queue and the delivery is retried; nothing is lost because your server had a bad moment.
Try it on your own sitePaste your URL, get a keyword plan and your first three articles free. Connect Webhooks whenever you're ready.Analyze my site

Publishing somewhere else? See all integrations — the webhook path covers any stack with an HTTP endpoint.