GET STARTED
Mentionwell is a headless content engine with a public read-only API. Your destination site pulls content; Mentionwell never writes to your codebase.
The data model
Five top-level objects live in Mentionwell's database. Most operations move data from one to the next.
- Site — one destination domain. Has a brand profile, taxonomy, delivery config, and an automation policy.
- Taxonomy — a tree of content clusters. Headlines get attached to nodes for topical authority + internal linking.
- Headline — a planned article. Has a target keyword, search intent, schedule, and lifecycle status (
proposed → approved → queued → generating → drafted → scheduled → published). - Draft — a generated article waiting on review. Includes HTML, Markdown, FAQs, JSON-LD, sources, and a measured cost.
- Post — a published article. Same shape as a draft plus
published: true+publishedAt.
Plus Run (one execution of the planner / writer / critic / publish flow, with cost + duration) and Job (one worker run on the queue: onboarding, draft, publish, autopilot, refresh).
The pipeline
Site profile + taxonomy
│
▼
Headline ─────► Draft ─────► Post ─────► /api/public/.../posts
(planner) (writer + (publish (your site fetches)
critic) flow)
Every step writes to the database; the API serves directly off the latest published row.
Two halves: push and pull
Mentionwell supports both delivery directions, and most sites use one or both:
- Pull (the default): your destination reads the Reader API on its own schedule — every request (SSR), every revalidation (ISR / SWR), or every rebuild (static). Mentionwell doesn't have to do anything on publish — your site fetches when it next needs to render.
- Push (optional): Mentionwell calls a webhook on your destination the moment a post publishes, so the destination can revalidate cached paths or kick off a rebuild. This is what makes static sites publish in under a minute instead of waiting for the next cron rebuild.
The two halves are independent. A static site usually needs both (push to trigger a rebuild + pull during the rebuild to fetch new posts). An SSR site usually needs only pull. The Connect wizard picks the right combination for your stack and saves it as the site's delivery mode.
| Wizard architecture | Push half | Pull half | When articles appear |
|---|---|---|---|
| Static + deploy hook | Webhook → deploy hook → rebuild | Build-time fetch | ~30–90s (rebuild time) |
| Next.js ISR | Webhook → revalidatePath() |
Request-time fetch with next: { tags } |
Seconds |
| Dynamic / api_reader | none (intentionally) | Request-time or short-TTL fetch | Next visit picks it up |
| GitHub MDX | MentionWell commits an MDX file to your repo | Your CI/CD picks up the commit | 1–3 min (commit + their CI build) |
| CMS adapter | Webhook → adapter → create-draft in your CMS | The CMS renders the post itself | Depends on CMS |
Three reasons the design leans into pull rather than push-only:
- No deploy on every post (for SSR sites). You publish in Mentionwell and the next request picks it up. No CI run, no minutes burned.
- No coupling. Your destination doesn't need a CMS adapter, plugin, or per-publish webhook unless you choose one — pull works with any framework.
- Caching is honest. The Reader API returns ETag + Cache-Control headers tuned for SWR. Your CDN takes care of the rest.
What lives where
| Concern | Where it lives |
|---|---|
| Article body (HTML, Markdown, JSON-LD, FAQ, TOC) | Mentionwell database, served via /api/public |
| Site chrome (header, footer, layout) | Your destination repo |
URL structure (/blog, /blog/[slug]) |
Your destination repo (typically) |
| SEO metadata for the article | Mentionwell returns it; your destination renders it into <head> |
| RSS / JSON Feed / sitemap | Mentionwell serves them; you link to them from your destination |
| Auth + roles | Mentionwell handles internal auth; your destination only needs the read API key |
What Mentionwell is not
- Not a CMS. There's no rich-text editor for non-technical users; it's an AI editorial pipeline.
- Not a static site generator. Posts aren't built into your site at deploy time.
- Not a CDN. The reader API has caching headers; your destination's CDN does the actual edge serving.
Once this model clicks, every weird symptom ("post isn't showing", "it's stale", "preview is fine but prod isn't") collapses to either: env var wrong, cache stale, or post not published yet. Treat those three as your first checks every time.