Auto-Publishing

Connect a channel once, then every article you finish can go out automatically — no copy-pasting into your CMS.

How it works

In the dashboard's Publishing tab, click + Add channel and pick one of three types: WordPress (one click, publishes straight to your blog), Discord (posts a rich embed to a channel), or your own website / CMS(a webhook — works with literally anything, including CMS platforms that don't have a dedicated integration).

Once a channel is connected, finished articles can be sent to it from the article editor's Publish now button, or from the Publishing tab's Publish articleaction. Every attempt — success or failure — shows up in the tab's activity log, and a failing channel shows its last error right on the channel card.

WordPress setup

  1. In WP Admin, go to Users → Profile (your own user).
  2. Scroll to Application Passwords, name it "RankOnGeo", click Add New Application Password.
  3. Copy the generated password — WordPress only shows it once.
  4. In RankOnGeo, add a WordPress channel with your site URL, your WordPress username (exactly as shown on the Users page, not your display name), and the application password.

If publishing fails with a 401, a security plugin may be blocking the REST API — allowlist /wp-json/wp/v2/posts.

Discord setup

  1. Open your Discord server → right-click the channel you want articles posted in.
  2. Click Edit ChannelIntegrationsWebhooks.
  3. Click New Webhook, name it, then click Copy Webhook URL.
  4. Paste that URL into RankOnGeo's Discord channel field — it starts with discord.com/api/webhooks/….

Your website or CMS

There's no plugin needed — RankOnGeo POSTs a JSON payload to any URL you give it, so this works with a hand-coded site, Webflow, Shopify, Ghost, or anything else with an API or database you can write to. The fastest way to build the receiving endpoint is to hand this prompt to an AI coding assistant (Claude Code, Cursor, ChatGPT) — fill in the two bracketed lines first with your stack and the real secret shown when you create the channel in the dashboard:

I want to receive blog posts automatically from RankOnGeo and publish them on my site. My site/stack: {describe your site/CMS/stack here — e.g. "Next.js app router blog", "WordPress", "Webflow CMS collection", "custom Express + Postgres site"} RankOnGeo will POST to an endpoint I create whenever a new article is ready. Please help me: 1. Create an API endpoint (in whatever way fits my stack above) that accepts POST requests with this JSON body: { "title": string, // article headline "content": string, // full article body, as Markdown "keyword": string, // the target SEO keyword this article targets "description": string, // optional — SEO meta description, may be empty "tags": string[], // optional — topic tags, may be empty "image_url": string, // optional — cover image URL, may be empty "status": "publish", "source": "rankongeo" } 2. Verify the request is really from RankOnGeo: reject (401) any request where the `X-RankOnGeo-Secret` header doesn't exactly equal: {your secret — copy it from the "Add channel" modal in your RankOnGeo dashboard when you create a webhook channel} 3. Use the title/content to create and publish a new post through my site's existing content system (CMS API, database, static-file commit — whatever fits my stack above). 4. Return { "ok": true } with a 200 status on success, and a clear error status/message otherwise (RankOnGeo shows the response back to me if something fails). 5. Once it's built (and deployed, if that's needed for it to be reachable), end your reply with a clearly labeled "What to do next" section for me, spelling out: - The exact endpoint URL to paste into RankOnGeo's "Your endpoint URL" field - Any manual step I still need to do myself (deploy, set an env var, restart something, etc.) Put this at the very end and make it stand out — I might not read back through the rest of this prompt.

Once your assistant builds and deploys the endpoint, paste its URL into RankOnGeo's "Your endpoint URL" field and you're done.

Payload reference

If you'd rather wire it up by hand, here's exactly what RankOnGeo sends:

POST <your endpoint URL> Header: X-RankOnGeo-Secret: <your secret> Content-Type: application/json { "title": "string — article headline", "content": "string — full article body, as Markdown", "keyword": "string — the target SEO keyword", "description": "string — optional, may be empty", "tags": "string[] — optional, may be empty", "image_url": "string — optional, may be empty", "status": "publish", "source": "rankongeo" }

The secret is only sent for webhook channels (WordPress uses your application password; Discord doesn't need one). Respond with a 2xx status on success — anything else is logged as a failed delivery.

Troubleshooting

  • WordPress 401 — wrong username or application password, or a security plugin blocking the REST API. Double-check the username matches exactly what's shown on your WP Users page.
  • Discord returns 400 or 404 — the webhook was deleted or regenerated in Discord; create a new one and update the channel URL in RankOnGeo.
  • Webhook delivery failing — check the error shown on the channel card and in the activity log, confirm your endpoint checks the X-RankOnGeo-Secret header correctly, and confirm the endpoint is publicly reachable (not behind auth or a local-only URL).