Integrations¶
easeo ships adapters for the most common frameworks. They are thin: each one
calls build_seo_payload and hands the result to the framework's native
metadata mechanism.
JavaScript / TypeScript¶
| Framework | Package | Entry point |
|---|---|---|
| Next.js | @easeo/next |
easeoMetadata() |
| Astro | @easeo/astro |
build integration plus contract emission |
| Vite | @easeo/vite |
transformIndexHtml plugin |
| Nuxt | @easeo/nuxt |
useEaseoSeo() composable |
| SvelteKit | @easeo/sveltekit |
buildEaseoPayload() plus <EaseoHead /> |
| React | @easeo/react |
<EaseoHead /> component |
All JavaScript integrations support both default and named imports:
import easeoMetadata from "@easeo/next"; // default
import { easeoMetadata } from "@easeo/next"; // named
Python¶
| Framework | Import |
|---|---|
| FastAPI | from easeo.adapters.fastapi import EaseoSEO |
| Django | from easeo.adapters.django import seo_head |
| Flask | from easeo.adapters.flask import Easeo |
| Zensical | easeo.contrib.zensical markdown extension |
Python adapters are lazy and installed as extras: pip install easeo[fastapi],
[django], [flask], [zensical], or [all].
Choosing an approach¶
- If your framework has a native metadata API, use the adapter that targets it. Next.js is the clearest example.
- If it does not, use the render helpers and inject
payload.render_html()into your template. - For static sites, generate payloads at build time and commit the contract.