Drupal Integration
Connect BlogSEO to your Drupal site to automatically publish AI-generated articles directly to your content, with full support for rich text, tables, a cover image, inline images, taxonomy, SEO fields, custom URL slugs, and drafts. It works with any modern Drupal using core JSON:API — no contributed module or app-store listing required.
Requirements
Before connecting your Drupal site, make sure you have:
- A Drupal 9, 10 or 11 site (or Drupal CMS), reachable from the public internet over HTTPS.
- The core JSON:API and HTTP Basic Authentication modules enabled.
- JSON:API switched to accept all operations (read + write) — JSON:API is read-only by default.
- An account BlogSEO can sign in as: your administrator account works with no extra setup, or a dedicated user (see below).
Enabling JSON:API
BlogSEO publishes through Drupal's core JSON:API, which ships in read-only mode and must be switched to read-write.
- In Drupal, go to Extend (
/admin/modules) and enable JSON:API and HTTP Basic Authentication. Both are part of Drupal core — there is nothing to download or install. - Go to Configuration → Web services → JSON:API (
/admin/config/services/jsonapi) and select "Accept all JSON:API create, read, update, and delete operations", then save.
If you skip the read-write step, BlogSEO's connection test reports that JSON:API is in read-only mode. Switch the setting and try again.
Choosing an account
BlogSEO authenticates over HTTP Basic Auth with the username and password you provide.
The simplest option is your administrator account — it already has every permission, so there is nothing else to configure.
If you would rather not share administrator credentials, create a dedicated, least-privilege user instead:
- Go to People → Roles (
/admin/people/roles) and create a role (for example,API). - Go to People → Permissions (
/admin/people/permissions) and grant that role, for the content type you publish to (for example, Article):- Access content
- Create new content
- Edit any content
- To unlock optional features, also grant the role the permission below. BlogSEO publishes fine without them and falls back automatically:
- Use the Full HTML text format — for tables and full rich HTML (otherwise Basic HTML is used, which omits tables).
- Create and edit URL aliases — for custom URL slugs.
- Administer node published status — to publish in draft / unpublished.
- Administer content — to publish under a custom author.
- Create [image] media — only if your content type's image field uses Media (Drupal CMS).
The Test Connection button reports any of these permissions that are missing, so you can grant exactly what the features you want require.
4. Go to People → Add user (/admin/people/create), create a user, assign it the role, and set a strong password.
A dedicated user keeps the integration scoped to publishing content, instead of sharing administrator credentials. BlogSEO automatically skips any field the user is not allowed to set, so the minimal permission set is enough to publish.
Connecting BlogSEO to Drupal
- In your BlogSEO dashboard, go to Integrations → Drupal and click Connect Drupal.
- Enter your Drupal site URL (for example
https://example.com). - Enter the Username and Password of your administrator account (or the dedicated user you created).
- Click Test Connection to verify, then Connect.
The connection test confirms your site is reachable, that JSON:API is enabled and read-write, and that the credentials are valid.
Selecting a content type
Drupal stores content in types ("bundles") such as Article, so after connecting you choose where BlogSEO publishes:
- On the Drupal integration page, click Select Content Type.
- Pick the content type you want articles published as (for example, Article).
- Save your selection. The integration becomes active once a content type is selected.
BlogSEO inspects a few of your existing posts of that type to learn its fields automatically — which field holds the body, the cover image, and tags — so it works even when your fields have custom names.
Choosing defaults (optional)
In the configuration dialog you can set:
- Default author — the Drupal user shown as the author on published articles. Leave empty to use the connected account.
- Body text format — the text format applied to the article body (for example, Full HTML).
- Field mapping instructions — free-text guidance for how BlogSEO should fill any extra fields on your content type (for example, "put a one-sentence summary in the Teaser field").
You can also override the author and tags per article from the article preview sidebar before publishing.
Publishing content
You have two options for publishing articles to Drupal:
- Auto-publish: enable auto-publish in the Drupal integration settings, and BlogSEO pushes articles to your site as soon as they are generated.
- Manual publish: from the dashboard, select a generated article and click Publish.
BlogSEO handles the publishing details for you:
- Rich text and tables: articles are converted to clean HTML so headings, lists, links, and tables render correctly.
- Cover image: uploaded to your Drupal site and attached to the content type's image field (file or media), with alt text.
- Inline images: uploaded to your Drupal site when your body text format supports tracked editor images; otherwise they are linked from their original location.
- Taxonomy and extra fields: tags are attached to your taxonomy field, and any additional fields on your content type are filled by AI from the article (guided by your field mapping instructions).
- SEO and slug: the title, body, and a custom URL alias are set on the node.
- Updates: editing an article in BlogSEO and re-publishing updates the same node instead of creating a duplicate.
Draft mode
When draft mode is enabled, articles are saved as unpublished content in Drupal (or moved to the Draft workflow state if your content type uses Content Moderation). You can review them in your Drupal admin and publish them manually when ready.
Troubleshooting
JSON:API is in read-only mode
Go to Configuration → Web services → JSON:API (/admin/config/services/jsonapi) and choose "Accept all JSON:API create, read, update, and delete operations", then reconnect.
Connection test fails
- Check the credentials: use the username and password of the API user, and make sure the account is active.
- Check the modules: confirm both JSON:API and HTTP Basic Authentication are enabled.
- Permissions: the user's role needs create and edit permission on the content type you publish to.
- Firewall / network: make sure your Drupal site is reachable from the public internet over HTTPS so BlogSEO's servers can connect.
Images not appearing
BlogSEO downloads your article's images and re-uploads them to Drupal. If the original image URLs are behind authentication or have expired, the upload is skipped. Re-generate or re-upload the image in BlogSEO and publish again.
For additional support, contact our team through the in-app chat or at support@blogseo.io.