---
url: /docs
title: "Documentation — Siere"
description: "Get started with Siere — choose your installation method and configure AI agent optimization."
type: website
language: en
site_name: Siere
canonical: https://www.siere.ai/docs
aeo_generated: 2026-08-24T15:05:17.616Z
---

# Documentation

Choose the installation method that fits your setup.

A
## Install via Vercel Marketplace

The fastest way to get started if your site is deployed on Vercel. Environment variables are configured automatically.

### 1. Add Siere to your Vercel project

Find Siere on the [Vercel Marketplace](https://vercel.com/integrations/siere) and click **Add Integration**. Select the project you want to connect.

This automatically sets `SIERE_API_KEY` and `SIERE_SITE_ID` on your Vercel project — no manual configuration needed.

### 2. Install the edge package

`npm install @siere.ai/edge-vercel @vercel/functions`

### 3. Add the middleware

Create or update your middleware file. AI agent requests get optimized content; human traffic passes through unchanged.

// middleware.ts
import { createSiereMiddleware } from '@siere.ai/edge-vercel';

const siere = createSiereMiddleware();

export default async function middleware(request: Request) {
  const response = await siere(request);
  if (response) return response;
  // ... your existing middleware logic
}
No config needed — the middleware reads `SIERE_API_KEY` from your environment automatically.

### 4. Deploy and verify

Push your changes and check the health endpoint:

curl https://your-site.vercel.app/__aeo/health
Then test with an AI agent user-agent:

curl -H "User-Agent: GPTBot/1.0" https://your-site.vercel.app/
# Should return structured markdown instead of HTML

B
## Manual Install (npm)

Install Siere directly via npm. Use this if you don't deploy on Vercel or prefer manual setup.

### 1. Get your API key

Sign up at [siere.ai](https://siere.ai) and create a site in your [dashboard](/dashboard). Copy your API key from the setup page.

### 2. Install the package

`npm install @siere.ai/edge-vercel @vercel/functions`

### 3. Set environment variables

# .env.local
SIERE_API_KEY=your_api_key_here

### 4. Add the middleware

```
// middleware.ts
import { createSiereMiddleware } from '@siere.ai/edge-vercel';

const siere = createSiereMiddleware();

export default async function middleware(request: Request) {
  const response = await siere(request);
  if (response) return response;
  // ... your existing middleware logic
}
```

### Alternative: Proxy Mode
If you want Siere to run as a standalone edge function in front of your site (instead of as middleware), use proxy mode. Set `SIERE_ORIGIN_URL` to your site's URL.

// .env.local
SIERE_API_KEY=your_api_key_here
SIERE_ORIGIN_URL=https://your-site.com

```
// api/siere/route.ts
import { createSiereEdge } from '@siere.ai/edge-vercel';

export const GET = createSiereEdge();
export const POST = createSiereEdge();
```

### 5. Deploy and verify

```
curl https://your-site.vercel.app/__aeo/health
```

Test with an AI agent:

curl -H "User-Agent: GPTBot/1.0" https://your-site.vercel.app/
# Should return structured markdown instead of HTML

C
## Enable agent surfaces (recommended)

By default the middleware only intercepts known-agent user-agents on paths you have authored Zeus content for. Pass `canonicalOrigin` and turn on the `llmsTxt` fallback so agents that crawl `/llms.txt` and `/llms-full.txt` discover and read your site without any per-page authoring.

### 1. Pass config to the middleware

Replace the bare `createSiereMiddleware()` call with a config object. The middleware reads your `sitemap.xml` once per cache window and produces a markdown index agents can consume.

// middleware.ts
import { createSiereMiddleware } from '@siere.ai/edge-vercel';

const siere = createSiereMiddleware({
  canonicalOrigin: 'https://your-site.com',
  llmsTxt: {
    fallback: true,
    // Optional: hand-curated entries take priority over sitemap discovery
    entries: [
      { category: 'Pages', title: 'Home', url: '/', description: 'Site overview' },
    ],
    // Optional: enrich sitemap entries with each page's <title>+<meta description>
    // enrichFromHtml: true,
  },
  acceptHeader: { enabled: true },
});
`canonicalOrigin` is required for the fallback to locate your sitemap. The default sitemap path is `<canonicalOrigin>/sitemap.xml` — override with `llmsTxt.sitemapUrl` if yours lives elsewhere.

### 2. Verify the agent surfaces

# A markdown index built from your sitemap
curl https://your-site.com/llms.txt

# Same index plus extracted body text per page (token-capped)
curl https://your-site.com/llms-full.txt

# Health endpoint — confirm llmsTxtMode: "fallback"
curl https://your-site.com/__aeo/health

### 3. Optional: JSON-LD and well-known files
Siere also ships pure helpers for JSON-LD structured data (Organization, WebSite, SoftwareApplication, FAQPage, BreadcrumbList) and the well-known files `/.well-known/security.txt`, `/ai.txt`, and `/humans.txt`. These are framework-specific (you decide where to render the scripts and which routes to expose). [Talk to us](/contact) if you want a worked example for your stack.

D
## Framer

Framer hosts published sites entirely on its own infrastructure, so Siere integrates in two ways: an **edge proxy** in front of your Framer site (full feature set — per-agent serving and analytics), or a **Server API sync** that pushes curated content into your Framer project (no proxy, works on any paid Framer plan).

### Option 1: Edge proxy (full feature set)

Uses Framer's official reverse-proxy hosting, available on the Framer **Scale plan (add-on) or Enterprise**. In Framer: publish to the free `framer.website` subdomain (don't connect your custom domain), set your custom domain as Canonical URL under Site Settings → Domains → Advanced, and republish. Then deploy the Siere proxy on your domain:

`npm install @siere.ai/framer`

// src/index.ts — Cloudflare Worker on example.com/*
import { createSiereFramer } from '@siere.ai/framer';

export default createSiereFramer({});

// wrangler.toml:
// [vars]
// SIERE_API_KEY = "your_api_key_here"
// SIERE_FRAMER_ORIGIN = "https://your-site.framer.website"
The handler is runtime-agnostic — it also runs as a Vercel Edge Function: `const siere = createSiereFramer({}); export const GET = (req: Request) => siere.fetch(req);`

AI agents get your curated Zeus content first; uncurated pages fall back to Framer's native markdown, then to Siere's HTML transform. Humans pass through to Framer unchanged. Agent traffic analytics appear in your dashboard.

### Option 2: Server API sync (any paid Framer plan)

No proxy or DNS changes. Built on Framer's Server API (open beta, `framer-api`): Siere pulls your curated content definitions and applies them to your Framer project, then republishes. Framer natively serves markdown to AI agents, so published curated content is what agents read. This tier has no per-agent serving and no traffic analytics.

// sync.ts — run on your server, CI, or a cron job
import { connect } from 'framer-api';
import { createSiereFramerSync } from '@siere.ai/framer/sync';

const framer = await connect(projectUrl, process.env.FRAMER_API_KEY);
const siere = createSiereFramerSync({
  apiKey: process.env.SIERE_API_KEY,
  siteUrl: 'https://example.com',
});

const result = await siere.sync(framer, {
  applyDefinition: async (def) => {
    // Map def.route / def.markdown onto your CMS items or pages
    // using the framer client. Return true when applied.
    return true;
  },
  deploy: true, // promote to production after publishing
});

// result.llmsTxt — generated llms.txt; upload it in Framer under
// Site Settings → Domains → Files so it serves at /llms.txt
framer.disconnect();

Need help? [Contact support](/support) or visit your [dashboard](/dashboard) for site management and analytics.

## Structured Data

```json
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "@id": "https://www.siere.ai/#organization",
  "name": "Siere",
  "url": "https://www.siere.ai/",
  "logo": "https://www.siere.ai/social-square.png",
  "sameAs": [],
  "contactPoint": {
    "@type": "ContactPoint",
    "contactType": "customer support",
    "email": "contact@siere.ai",
    "url": "https://www.siere.ai/contact"
  }
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "WebSite",
  "@id": "https://www.siere.ai/#website",
  "name": "Siere",
  "url": "https://www.siere.ai/",
  "description": "Your website is invisible to AI agents. Siere fixes that. We make your site readable, structured, and optimized for the next generation of AI-powered search.",
  "publisher": {
    "@type": "Organization",
    "name": "Siere",
    "@id": "https://www.siere.ai/#organization"
  }
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "SoftwareApplication",
  "@id": "https://www.siere.ai/#software",
  "name": "Agent Experience Optimization",
  "url": "https://www.siere.ai/",
  "description": "Your website is invisible to AI agents. Siere fixes that. We make your site readable, structured, and optimized for the next generation of AI-powered search.",
  "applicationCategory": "BusinessApplication",
  "operatingSystem": "Web",
  "offers": [
    {
      "@type": "Offer",
      "price": "0",
      "priceCurrency": "USD",
      "name": "Starter"
    },
    {
      "@type": "Offer",
      "price": "99",
      "priceCurrency": "USD",
      "name": "Pro"
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "@id": "https://www.siere.ai/#faq",
  "url": "https://www.siere.ai/",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "What is Agent Experience Optimization?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "AEO makes your website readable, structured, and reliably citable by AI agents like ChatGPT, Claude, Perplexity, and Gemini. Most modern websites are JavaScript-rendered and look like blank pages to AI crawlers — Siere fixes that without changing your visitor experience."
      }
    },
    {
      "@type": "Question",
      "name": "How does Siere work?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Siere sits between your server and incoming requests. When an AI agent visits, Siere serves an optimized markdown version of your content. When a human visits, your normal page is served unchanged."
      }
    },
    {
      "@type": "Question",
      "name": "Do I need to change my site?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "No. Siere installs as middleware. There are no content changes or rewrites required."
      }
    }
  ]
}
```

