Storyblok x enhancely: AI ready in 5 minutes
With enhancely, you get structured data on your Storyblok website automatically – no manual schema markup, no headaches.
How It Works
The Enhancely plugin for Nuxt.js does exactly one thing: it fetches the right JSON-LD for each page and injects it into the <head>. Done.
┌─────────┐ ┌──────────┐ ┌───────────────┐ ┌─────────────┐
│ Browser │ ───▶ │ Nuxt App │ ───▶ │ Enhancely API │ ───▶ │ JSON-LD in │
└─────────┘ └──────────┘ └───────────────┘ │ <head> │
▲ └─────────────┘
│
┌────────┴────────┐
│ Storyblok │
│ Webhook │
│ (invalidates │
│ cache) │
└─────────────────┘
On page load, the plugin sends the current URL to the Enhancely API. It returns the ready-made schema, which gets added as <script type="application/ld+json"> to your HTML. Your visitors won't notice a thing, Google will love it.
Installation
npm install @enhancely/nuxt-plugin
In your nuxt.config.ts:
export default defineNuxtConfig({
modules: ['@enhancely/nuxt-plugin'],
enhancely: {
apiKey: process.env.ENHANCELY_API_KEY
}
})
That's it. Seriously.
Caching Included
The plugin caches automatically. Choose between Memory, File, or Redis – whatever fits your setup. When content changes, it checks via ETag whether an update is needed and only fetches new data when necessary.
Storyblok Webhook for Real-Time Updates
The real trick with headless CMS: when you hit "Publish" in Storyblok, a webhook can invalidate the cache instantly. That way, the new schema is live on the next page request.
For production, we recommend File cache (single host) or Redis (multi-instance). Memory cache works but won't sync across instances in serverless deployments.
Learn More
Full documentation with all configuration options at docs.enhancely.ai.