Content & editorial
Blog CMS with Auto-Linking
Indicative price, not an offer: €24/mo; blog authoring, auto-internal-linking, SEO optimization
Generated from docs/plan/paid/blog-cms-with-auto-linking/PLAN.md in the AstroBaaS repository. Nothing described below is implemented — it is the written plan for it.
Blog CMS with Auto-Linking provides a blog authoring system with automatic internal linking to related products. Merchants write blog posts in a rich editor, and an algorithm auto-detects product mentions (e.g., ‘hiking boots’) and inserts links to matching products. Merchants review and remove incorrect links before publishing. This is a paid plugin requiring linking algorithm accuracy (support commitment), blog performance SLA, and compliance review.
The problem
Blog posts don’t link to products. Readers engage with educational content but don’t discover related products, wasting traffic. Manual linking takes hours per post. Auto-linking increases internal traffic and conversions without merchant effort, but requires algorithm accuracy and trust.
What it does
- Blog post editor: rich text (bold, lists, links, images), publish schedule, status (draft, review, published)
- Auto-linking: scan post body for product mentions (case-insensitive, word boundaries), suggest links
- Link confidence scoring: rank suggestions by likelihood (exact match > fuzzy match > category match), show confidence ≥80%
- Link review interface: show suggested links with context (text and surrounding 20 chars), approve/reject each
- Manual link editor: override auto-links, add custom links, remove incorrect suggestions
- Link analytics: track clicks per link, identify low-performing links (suggested but never clicked)
- Publish workflow: blog post cannot publish if ‘Auto-link review required’ flag set; staff must approve
- Product mention detection: exclude brand names and generic terms (configurable stoplist)
- SEO optimization: internal link anchor text follows SEO best practices (keyword-rich, natural phrasing)
- Audit log: link suggestions reviewed, approved, rejected, with timestamp and staff member
What it deliberately does NOT do
Each boundary carries its reason. A boundary without a reason gets crossed by the next person who reads this.
- Blog comment system — scope is post authoring and internal linking only; comments are separate feature
- Guest author workflow (external contributor submits posts) — scope is staff blog only; guest posts require separate auth/approval
- Category auto-assignment (categorize blog post automatically) — scope is linking only; categorization is manual
Data model
Plugin-owned collection: BlogPost (id, title, body, status, publishedAt, linkedProducts[{product_id, anchorText, confidence}], reviewedAt, reviewedBy). No core schema migration.
API
- POST /api/blog/posts — create blog post
- PATCH /api/blog/posts/:id — update blog post (title, body, status)
- GET /api/blog/posts/:id/auto-links — get auto-link suggestions with confidence scores
- POST /api/blog/posts/:id/approve-links — staff approves/rejects suggested links
- GET /api/blog/posts/:id/link-analytics — click-through rate per linked product
- PUT /api/settings/blog/mention-stoplist — configure terms to exclude from auto-linking
Every route added here must also appear in src/pages/openapi.json.ts — a test
fails the build if it does not.
Admin
Blog editor: rich text editor, schedule publish date, preview. Auto-link review pane shows 10 suggested links with confidence bar (80%, 92%, etc.) and context (‘…need quality hiking boots…’). Checkbox per link to approve. ‘Publish’ disabled if unapproved links remain. Analytics view shows links with CTR (e.g., ‘15 clicks of 150 link impressions’ = 10% CTR), sorted by CTR.
The seam — why this is paid
Paid plugin owns: auto-linking algorithm (entity recognition, confidence scoring), link analytics, publish workflow enforcement, support SLA. Core owns: blog storage, rich text editor, schedule publishing, audit log.
Support commitment: linking algorithm accuracy, blog SLA, compliance
Dependencies
- rich-text-editor (blog authoring)
- content-scheduling (schedule publish at specific time)
- core-audit-log (link approval tracking)
Acceptance checks
Each of these must be able to fail. Before claiming this is done, break the code deliberately and watch each one go red.
- Blog post mentioning ‘hiking boots’ auto-detects product ‘KEEN Targhee III Hiking Boots’ with 92% confidence
- Stoplist excludes brand names: mention ‘Nike’ does not auto-link to Nike brand collection
- Staff rejects low-confidence suggestion (45%); link not added to post
- Blog post with unapproved links shows ‘Publish disabled: 2 auto-links need review’
- Analytics show ‘hiking boots link: 45 clicks of 320 impressions (14% CTR)’
- Blog post published only if all auto-links approved or manually resolved by staff
Risks
Auto-linking false positives (e.g., ‘running’ matches ‘Running Shoes’ product incorrectly) erodes trust; confidence threshold too low adds garbage links. Entity recognition trained only on English; other languages produce poor results. Link analytics requires click tracking (need storefront instrumentation); missing clicks breaks feature. Publish workflow enforcement missing allows staff to bypass link review (no gate).
Commercial context
| Suggested price | €24/mo; blog authoring, auto-internal-linking, SEO optimization |
| Rival anchor | Shopify: free (native); Magento: free (native); HubSpot: €50-3200/mo |
The anchor is what the nearest equivalent charges on Shopify or Magento today. It is context for a pricing decision, not the decision.
Generated from the commerce plan. See docs/COMMERCE-PLAN.md for the full
catalogue and ../../AI-GUIDE.md for how to work on this repository.