Publishing Integrations
Connect WordPress, Ghost, Notion, Medium, Shopify, Webflow, HubSpot, Payload CMS, GitHub Pages, or a custom webhook to publish AI-generated content directly from AEO Goal.
Last updated August 31, 2026
AEO Goal can publish AI-generated blog posts directly to your CMS with one click. Supported platforms: WordPress, GitHub Pages, Ghost, Notion, Medium, Shopify, Webflow, HubSpot, Payload CMS, and any custom webhook.
Connecting a publishing platform
- Go to Settings → Integrations → Publishing.
- Find your platform’s card and click Connect (WordPress.com and GitHub Pages - opens an OAuth popup) or Configure (every other platform - opens a form asking for a site URL and an API key or token).
- For a Configure form, generate the requested credential in your platform’s own dashboard first - the steps are below, and the form itself links to the right page via “Where do I find this?” under each field.
- Click Save (or finish the OAuth popup). AEO Goal runs a connection test immediately; a failed test shows the reason inline instead of silently saving a broken connection.
- Once connected, the platform appears as a publish target in the Content Studio.
WordPress
Requirements: WordPress.com, or self-hosted WordPress with the REST API enabled (on by default in modern WordPress).
WordPress offers two ways to connect - pick the one that matches your hosting:
WordPress.com (OAuth):
- Click Use OAuth on the WordPress card.
- Authorize AEO Goal to access your WordPress.com account.
Self-hosted WordPress (Application Password):
- Click Configure on the WordPress card.
- Enter your site URL and WordPress username.
- Generate an Application Password in your WordPress admin: Users → Profile → Application Passwords (requires WordPress 5.6+). This is a separate credential from your login password.
- Paste it into the Application Password field and click Save.
When you publish from AEO Goal, posts are created as drafts in WordPress by default. Toggle Publish immediately in the Content Studio to publish live.
GitHub Pages
Requirements: A GitHub repository with GitHub Pages enabled, using Jekyll, Markdown/MDX, or a supported static site generator.
- Click Connect on the GitHub Pages card.
- Authorize AEO Goal to access your GitHub account.
- Pick the repository and branch from your real repos (AEO Goal lists them for you - the branch defaults to the repo’s default branch).
- Set the posts directory (typically
_posts/) and content format. Use Detect from repo to have AEO Goal inspect an existing post and suggest the front-matter mapping automatically. - Optionally enable Publish via pull request instead of committing straight to the branch.
- Click Connect.
Posts are committed as Markdown/MDX files to your specified directory and deploy automatically via your existing GitHub Pages build.
Ghost
Requirements: A Ghost site (Ghost(Pro) or self-hosted) with Admin API access.
- Click Configure on the Ghost card.
- Enter your Ghost site URL.
- In Ghost Admin, go to Settings → Integrations → Add custom integration, name it (e.g. “AEO Goal”), and copy the Admin API Key it generates - it looks like
id:secret. - Paste the full key into the Admin API key field and click Save.
Notion
Requirements: A Notion workspace with a database to publish posts into.
- Click Configure on the Notion card.
- Create an internal integration at notion.so/my-integrations and copy its Internal Integration Secret.
- Open the target database in Notion, click the ••• menu → Connections, and add the integration you just created - without this step Notion returns “not found” even with a valid token.
- Copy the database ID: it’s the 32-character string in the database’s URL (
notion.so/workspace/DATABASE_ID?v=...). - Paste both values into the form and click Save.
Medium
Medium deprecated its Integration Token API for new publications in 2024. This option only works if your account was issued a token before then - most new accounts can’t generate one at all.
- Click Configure on the Medium card.
- If you already have a token, find it (or check whether Medium still shows one for your account) at Medium → Settings → Security and apps → Integration tokens.
- Paste it in and click Save.
If Medium doesn’t offer a token, publish via RSS or a direct import instead.
Shopify
Requirements: A Shopify store with an existing blog.
- Click Configure on the Shopify card.
- Enter your store’s
myshopify.comdomain. - Find your blog ID: in Shopify admin, go to Online Store → Blog posts, open the blog you want to publish to, and read the numeric ID from the URL after
/blogs/. - Generate an access token: Settings → Apps and sales channels → Develop apps → Create an app. Grant it the
write_blogsscope, install the app, then copy the Admin API access token. - Paste the blog ID and access token in and click Save.
Webflow
Requirements: A Webflow site with a CMS collection for blog posts.
- Click Configure on the Webflow card.
- Find your Site ID: Webflow dashboard → Site settings → General.
- Find your blog collection’s Collection ID: open the collection → Collection settings.
- Generate an API token: Site settings → Apps & integrations → API access → Generate API token.
- Enter all three and click Save.
- Once connected, click Edit fields next to the connection in your connected destinations list to map AEO Goal’s content fields (title, body, slug, etc.) to your Webflow collection’s fields.
HubSpot
Requirements: A HubSpot account with a CMS blog and Marketing Hub access sufficient to create private apps.
- Click Configure on the HubSpot card.
- In HubSpot, go to Settings → Integrations → Private Apps → Create a private app, grant it the
contentscope, and copy the generated access token. - Find your content group (blog) ID from your blog’s settings in HubSpot’s CMS.
- Paste both values in and click Save.
Payload CMS
Requirements: A publicly reachable Payload CMS instance with a collection for blog posts.
- Click Configure on the Payload CMS card.
- Enter your Payload server URL and the collection slug you publish into (e.g.
posts). - Generate an API key: in Payload admin, open your auth-enabled collection (default:
users), create or edit a user, and enable API Key - Payload generates it for you. - Choose the content field type: Lexical (Payload’s default rich-text editor) or HTML string if your content field is a plain text/textarea/code field.
- Optionally set a public URL template (e.g.
https://yoursite.com/blog/{slug}) so published posts show a live link in AEO Goal. - Click Save.
Custom webhook
Use this for any destination AEO Goal doesn’t have a built-in integration for - it receives an HTTP POST with the published post’s payload (title, body, slug, and metadata) and you wire it up on your side.
- Click Configure on the New webhook card.
- Enter a name and your endpoint’s URL.
- Optionally add a bearer token if your endpoint requires authentication.
- Click Save.
Managing connections
From Settings → Integrations → Publishing you can:
- View all active connections
- Test a connection (sends a test post as draft, or a test document for Payload)
- View publish history and retry failed publishes
- Disconnect a platform
Publishing from the Content Studio
After configuring a connection, the Publish button in the Content Studio shows a dropdown with your connected platforms. Select the platform and click Publish. AEO Goal tracks the publish status and logs the result in Publish Logs.