On this page
Connect a CMS or webhook
Connect a destination once and Outcited can publish the articles it generates straight to your site - no copy-paste. This guide walks through every option, from a one-field webhook to a full WordPress or GitHub connection.
Overview
Outcited generates GEO-optimized articles aimed at the queries where AI engines cite your competitors instead of you. A publishing destination is where those articles go live. You can connect as many as you like and choose a destination each time you publish.
Every connection is managed from the Publishing page. Credentials (passwords, API keys, tokens) are encrypted before they are stored and are never shown back to you or sent to your browser.
Choose a path
Not sure which to pick? Use this table. WordPress, GitHub PR, and a webhook give fully hands-off publishing; Markdown export is the zero-setup manual option that works with any stack.
| Option | Best for | Setup | Automation |
|---|---|---|---|
| Download Markdown / MDX | Any stack, fastest start | No setup | Manual |
| Webhook | Custom tools, Zapier, Make | 1 field | Full |
| WordPress | WordPress blogs | ~2 min | Full |
| GitHub PR | Next.js / MDX on Vercel | ~3 min | Full (on merge) |
| Webflow / Ghost / Shopify / Notion | Those platforms | ~2-3 min | Full |
Publish an article
Once a destination is connected, publishing takes one click:
- 1Go to Content and open any article (or generate a new one).
- 2Review it - tweak the draft and check its GEO-readiness score.
- 3Click Publish, then choose the destination you connected.
- 4Outcited sends the article and stores the live URL on the article once it is published.
WordPress
Publish straight into a self-hosted WordPress blog via the REST API and an application password.
Step by step
- 1Log in to your WordPress dashboard (the wp-admin page on your site).
- 2In the left menu, click Users, then open Profile (your own account).
- 3Scroll down to 'Application Passwords', type a name like 'Outcited', and click 'Add New Application Password'.
- 4Copy the password it shows you (a few short blocks of letters) and paste it into 'Application password' below. WordPress only shows it once.
- 5Fill in your site address and the username you log in with, then click Connect.
What you will enter
| Field | Required | Notes |
|---|---|---|
| Site URL | Yes | Your WordPress site root (no trailing /wp-json). |
| Username | Yes | e.g. editor |
| Application passwordencrypted | Yes | Create under Users -> Profile -> Application Passwords. |
Webflow
Publish into a Webflow CMS Collection using a site API token.
Step by step
- 1Open your Webflow project and go to Site settings, then 'Apps & integrations'.
- 2Find 'API access', click 'Generate API token', name it 'Outcited', and copy the token.
- 3In the left CMS panel, open the collection you want articles to go into (for example 'Blog Posts').
- 4Click the collection's settings (the gear icon) - the 'Collection ID' is listed there. Copy and paste it below.
- 5Leave 'Body field slug' as post-body unless your blog uses a different rich-text field, then click Connect.
What you will enter
| Field | Required | Notes |
|---|---|---|
| API tokenencrypted | Yes | Webflow -> Site settings -> Apps & integrations -> API access. |
| Collection ID | Yes | The CMS Collection to publish articles into. |
| Body field slug | Optional | Rich-text field slug for the article body (defaults to post-body). |
| Live URL base | Optional | Optional. Used to build the published article link. |
Ghost
Publish to a Ghost blog with an Admin API key from a custom integration.
Step by step
- 1In your Ghost admin, open Settings, then 'Integrations'.
- 2Click 'Add custom integration', name it 'Outcited', and create it.
- 3Copy the 'Admin API Key' (a long code with a colon in the middle) and paste it below.
- 4Set 'Site URL' to your blog's address (for example https://yourblog.ghost.io), then click Connect.
What you will enter
| Field | Required | Notes |
|---|---|---|
| Site URL | Yes | Your Ghost site URL (no trailing slash). |
| Admin API keyencrypted | Yes | Ghost Admin -> Settings -> Integrations -> Add custom integration. |
Shopify
Publish blog posts to your Shopify store with a custom app's Admin API token.
Step by step
- 1In your Shopify admin, go to Settings, then 'Apps and sales channels', then 'Develop apps'.
- 2Click 'Create an app', name it 'Outcited', and create it.
- 3Open the 'Configuration' tab, click Configure on Admin API, turn on the 'write_content' permission, and Save.
- 4Open the 'API credentials' tab, click 'Install app', then copy the 'Admin API access token' (it starts with shpat_). It is shown only once.
- 5Your store domain is your yourstore.myshopify.com address. For Blog ID, go to Online Store > Blog posts > Manage blogs, open your blog, and copy the number from the page's web address.
What you will enter
| Field | Required | Notes |
|---|---|---|
| Store domain | Yes | e.g. yourstore.myshopify.com |
| Admin API access tokenencrypted | Yes | Create a custom app with the write_content scope and use its Admin API token. |
| Blog ID | Yes | Numeric ID of the blog to post into (Online Store -> Blog posts). |
Notion
Create a page per article in a Notion database using an internal integration.
Step by step
- 1Go to notion.so/my-integrations and click 'New integration'. Name it 'Outcited' and submit.
- 2Copy the 'Internal Integration Secret' (it starts with secret_ or ntn_) and paste it into the token field below.
- 3Open the Notion database (a table) where you want articles to appear.
- 4Click the '...' menu at the top-right of that database, choose 'Connections', and add 'Outcited' so it can create pages.
- 5For Database ID, copy the database's web address - the long code after the last slash and before the '?' is the ID. Leave 'Title property' as Name unless your database uses a different title column.
What you will enter
| Field | Required | Notes |
|---|---|---|
| Integration tokenencrypted | Yes | Create an internal integration at notion.so/my-integrations. |
| Database ID | Yes | Share the target database with your integration, then paste its ID. |
| Title property | Optional | Name of the database's title property (defaults to Name). |
GitHub PR
Open a pull request that adds the article as a Markdown file - ideal for Next.js / MDX blogs on Vercel.
We create a new branch, commit the article as a Markdown file into your content directory, and open a pull request. Merge it and your host (for example Vercel) deploys automatically. Nothing goes live until you merge, so you always keep a review step.
Step by step
- 1This option is for blogs whose code lives in a GitHub repository. If that's not you, pick a different destination.
- 2Enter your repository as owner/repo (for example acme/website).
- 3At github.com, go to Settings > Developer settings > Personal access tokens and create a token that can write 'Contents' and 'Pull requests'. Copy and paste it below.
- 4Leave 'Base branch' and 'Content directory' blank unless you know you need specific values, then click Connect.
What you will enter
| Field | Required | Notes |
|---|---|---|
| Repository | Yes | e.g. owner/repo |
| Personal access tokenencrypted | Yes | Fine-grained or classic token with Contents + Pull requests write. |
| Base branch | Optional | e.g. main (defaults to repo default) |
| Content directory | Optional | e.g. content/blog |
Webhook
Send each published article as JSON to any URL - perfect for custom tooling or automations like Zapier and Make.
When you publish, we POST a JSON body to your endpoint. If you set an optional signing secret, we add an X-Outcited-Signature header containing an HMAC-SHA256 of the raw request body so you can verify it came from us.
POST https://example.com/hooks/outcited
Content-Type: application/json
X-Outcited-Signature: sha256=<hmac of the raw body>
{
"event": "article.published",
"title": "How to choose a CRM for startups",
"slug": "how-to-choose-a-crm-for-startups",
"markdown": "# How to choose a CRM ...",
"html": "<h1>How to choose a CRM ...</h1>",
"targetQuery": "best crm for startups",
"domain": "example.com"
}Verify the signature by computing an HMAC-SHA256 of the raw body with your signing secret and comparing it to the header:
import { createHmac, timingSafeEqual } from "node:crypto";
function isValid(rawBody, header, secret) {
const expected = "sha256=" +
createHmac("sha256", secret).update(rawBody).digest("hex");
const a = Buffer.from(expected);
const b = Buffer.from(header ?? "");
return a.length === b.length && timingSafeEqual(a, b);
}Step by step
- 1This sends each published article as data to any web address you choose - handy for custom tools or automations like Zapier.
- 2Paste the address that should receive the article into 'Endpoint URL'.
- 3If your endpoint verifies signatures, add a signing secret. If you're not sure, leave it blank.
What you will enter
| Field | Required | Notes |
|---|---|---|
| Endpoint URL | Yes | e.g. https://example.com/hooks/outcited |
| Signing secretencrypted | Optional | Optional. If set, we send an X-Outcited-Signature HMAC header. |
Markdown / MDX export
No integration required. Open any article on the Content page and use the actions menu to copy or download it as Markdown or MDX. FAQ schema and structured data are included in the file, so it stays GEO-optimized wherever you paste it.
- 1Open the article from the Content page.
- 2Use the actions menu to copy Markdown or download the .mdx file.
- 3Drop it into your repo, CMS, or editor and publish however you normally do.
Troubleshooting
The destination shows an 'Error' status.
WordPress returns 401 or 403.
GitHub PR fails to open.
owner/repo and the token has Contents and Pull requests write access. If you set a base branch, make sure it exists.My webhook never fires.
Secrets fields are disabled.
FAQ
Are my credentials safe?
Can I connect more than one destination?
Will publishing make AI cite me immediately?
Can I edit before it goes live?
Still stuck? Reach us from the contact page or the in-app assistant and we will help you connect.