Skip to Content
ChannelsAdd a blog to your AI-built website

Add a blog to your AI-built website

For sites with a custom front end, including sites built with AI.

Keep your existing website and add a blog that matches its design. Structura researches and writes the articles; your website displays them on your own domain. Article delivery sends a complete article to your website when you publish it.

Before you start

You need a published website, a backend that accepts HTTPS requests and a database to store articles. Your builder can create these, but you must test the result. This is a custom integration, not an official Lovable, Bolt, v0 or Replit connector.

Article delivery requires a paid Structura base plan. You do not need the Channels add-on. For a free headless setup, use the public Content API instead. AI usage and builder hosting may cost extra.

Steps

  1. Create a Structura account and add a Headless site in the portal. Set the public domain and URL pattern to match your blog, for example https://example.com and /blog/%postname%.

  2. Create a campaign in the language you want to publish. Use review mode for your first article.

  3. Paste the prompt below into your builder. Give it the delivery contract and ask it to implement and test the integration. For Lovable or Bolt, use a server function with your project’s database. For v0 or Replit, use a server route and persistent database.

  4. In your site’s Channels store, choose Article delivery. Enter the HTTPS receiver URL. Copy the Signing secret into your backend’s secret storage as STRUCTURA_WEBHOOK_SECRET. Never paste the secret into the builder chat, public code or browser environment variables.

  5. Save the connection. Select the campaigns you want to send and keep the cadence at every post. Publish a draft, then open Activity and your public article URL. Check the title, body, images, language, metadata and mobile layout.

Prompt for your builder

Add a blog to my existing site without replacing its design. Use my current fonts, colors and navigation. Add /blog and /blog/[slug], with real 404s for missing posts, crawlable article pages, metadata, canonical URLs and sitemap entries. Connect Structura Article delivery using the linked delivery contract. Create a public HTTPS POST receiver in the backend and a persistent articles table. Keep STRUCTURA_WEBHOOK_SECRET server-side. Verify X-Structura-Signature against the exact raw UTF-8 request body and X-Structura-Timestamp using HMAC-SHA256(secret, timestamp + "." + rawBody). Reject timestamps outside 5 minutes, invalid signatures and unsupported events/schema versions before changing data. Use a database transaction with a unique event_id to deduplicate deliveries and upsert articles by site.id + post.id + post.locale. Reject older revisions. Store article content and available SEO fields. Sanitize HTML and serialize JSON-LD safely when rendering. Respond with 2xx only after durable storage; duplicate valid events should also return 2xx. Do not require a browser login at this endpoint: authenticate the webhook signature. Show me where to store the secret and the deployed receiver URL. Test valid delivery, invalid signatures, replay, duplicate concurrent requests, storage failure and the public blog pages. Do not claim the integration is complete until the first real published article appears on my site.

WordPress draft approvals queue a background article-delivery job. They do not repeat Slack, social, email or indexing notifications. Normal scheduled publication retains its existing channel behavior.

What happens next

Each new publication sends one article, including drafts you approve later. Drafts stay private. Articles keep their content language; notification language does not translate them. Existing posts are not imported automatically.

Later edits and deletions are not synchronized by this first delivery option. Update the copy on your site, or use the Content API when you need the current published state. Repeated delivery can happen; the receiver must deduplicate it.

Common issues

  • Connected but no article: saving checks the URL format, not whether your receiver stores posts. Publish a new article and check Activity. Confirm the campaign binding and cadence.

  • HTTP 401/403: check the signing secret, raw-body verification and any hosting access protection.

  • HTTP 404: use the deployed receiver URL, not a builder preview page.

  • HTTP 429/5xx or a timeout: Structura makes one immediate retry. There is no durable queue or automatic retry later. Fix the receiver and reconcile missing posts through the Content API.

  • Article unavailable: use the current WordPress plugin, if applicable, and confirm the post is public, has content and has a public URL. Password-protected WordPress posts are not delivered.

  • Article too large: the complete JSON payload must fit within 1 MB. Large articles should be read through the Content API.

  • Plan not entitled: article delivery needs an active paid subscription. Check your plan and payment status. The Channels add-on is not required.

Last updated on