// Storyblok Integration

AI ready structured data for
Storyblok.

Storyblok is a headless content management system with an API-first architecture and a unique visual editor. Content teams can see changes in real-time directly on the frontend, with drag-and-drop functionality for arranging components. The system is built around reusable content blocks delivered via REST API or GraphQL to any frontend technology.

enhancely automatically injects the right JSON-LD (schema.org) for each Storyblok page—no manual markup, no brittle scripts. enhancely and Storyblok is a perfect match. Read more about how enhancely fits in a composable architecture.

graph LR
  A["Browser"] --> B["Next.js / Nuxt App"]
  B --> C["enhancely Plugin"]
  C --> D["enhancely API"]
  D --> E["JSON-LD"]
  E --> C
  C --> F["Cache"]
  B --> G["HTML + JSON-LD"]
  H["Storyblok Webhook"] -.-> I["Cache Invalidation"]
  I -.-> F
Fig. 1 — Storyblok integration with webhook-based cache invalidation
// How it works

Fetch. Inject. Cache.

The integration is delivered as an npm package and operates with any Node.js frontend framework.
01

Send URL

Your app sends the current page URL to the enhancely API.
02

Receive JSON-LD

enhancely returns ready-made JSON-LD for that URL.
03

SSR Injection

The plugin injects it as <script type="application/ld+json"> in SSR HTML.
04

Revalidation

Throttled revalidation (revalidateInterval, default 5 minutes) avoids calling the API on every request.
05

Webhook Refresh

A Storyblok webhook can invalidate the cache on publish.
// Features

What you get.

SSR
Server-Side Rendering
JSON-LD injected during SSR for maximum visibility to search engines and AI bots.
API
Cache-Aware
ETag-based caching with Memory, File, or Redis backends for production traffic.
WH
Webhook Support
Storyblok webhooks refresh schema automatically — per page or full cache clear.
// Getting started

Quick setup.

01
Install package
npm install from GitHub release tarball
02
Copy recipe bundle
Copy from recipes/storyblok/next-app-router/template/
03
Set environment variables
ENHANCELY_API_KEY, NEXT_PUBLIC_SITE_URL, STORYBLOK_WEBHOOK_SECRET

Installation

npm install https://github.com/enhancely/headless-cms-plugin/releases/download/v1.0.6/enhancely-headless-cms-plugin-1.0.6.tgz

Caching included

ETag-aware caching (reduces API calls; keeps schema fresh)

Cache backends: Memory, File, or Redis

For multi-instance/serverless production, prefer Redis (shared cache)

Storyblok Webhook

Create a webhook pointing to: /api/webhooks/storyblok

Protect with secret via x-webhook-secret or Authorization: Bearer header.

If payload contains full_slug, clears that page. Otherwise clears all.

Compatibility & Requirements

Node.js >= 18

Next.js: >= 13 (App Router recommended)

Nuxt: >= 3

CMS: Storyblok (webhook supported)

// FAQ

Storyblok & enhancely
FAQ.

Storyblok is a headless CMS with an API-first architecture and a real-time visual editor that sets it apart from other headless platforms. Content teams can see changes directly on the frontend with drag-and-drop component editing — combining the flexibility of headless API delivery with the intuitive editing experience of a traditional CMS. Storyblok supports multi-language content, custom components, and delivers content via both REST and GraphQL APIs.
No. As a headless CMS, Storyblok focuses on content management and API delivery — structured data generation is entirely the responsibility of the frontend application. Development teams would need to build custom JSON-LD logic in their Next.js, Nuxt, or other framework setup. enhancely eliminates this effort by integrating via webhooks: when content is published in Storyblok, schema is regenerated and validated automatically, supporting all 806 Schema.org types.
Add the enhancely snippet to your frontend application (Next.js, Nuxt, or any JavaScript framework). Configure a Storyblok webhook pointing to /api/webhooks/storyblok and protect it with a secret via x-webhook-secret or Authorization: Bearer header. When content is published, Storyblok notifies enhancely, which regenerates and validates schema markup for the affected pages. Full_slug-based cache clearing ensures only updated pages are reprocessed.
Nothing changes. You continue using Storyblok's visual editor as usual — drag components, edit content, preview changes in real-time, hit publish. enhancely runs entirely in the background. It automatically detects what type of content you published (article, product, FAQ, event, organization) and generates the right schema types. The enhancely dashboard gives you visibility into schema coverage and Rich Result eligibility across all pages without requiring any technical knowledge.
Every piece of markup passes through a 3-layer curation pipeline before deployment. Layer 1 (Validity) checks against the full Schema.org specification — all 806 types, every property, every value range. Layer 2 (Factuality) cross-references structured data against your actual page content — no hallucinated data, no invented prices, no phantom opening hours. Layer 3 (Compliance) verifies Rich Result eligibility against Google, Bing, and AI search engine guidelines. Peer-reviewed research (Dang et al., Semantic Web Journal, IOS Press, 2025) showed that without such a pipeline, 40–50% of AI-generated markup is invalid or non-compliant.
Yes. Multiple JSON-LD blocks on a single page are valid and supported by all major search engines — Google, Bing, and others evaluate and merge all structured data blocks they find. enhancely adds additional, validated markup without conflicting with or overwriting your existing schema. If enhancely detects invalid or outdated markup from other sources, Schema Healing can automatically identify and repair it — so legacy schema from previous tools or manual implementations gets fixed and kept current.

Stop leaving
bots hungry.

Your content is already great for humans. Let us make it perfect for bots.