The Geoffy namespace
Geoffy has more surfaces than the three root files: a plain-text twin for every product, a sitemap of them, and your buying-guide pages. They all live under one namespace, and this single catch-all route puts the whole of it on your domain.
import { createGeoffyProxyRoute } from "@geoffy/headless/next";
export const GET = createGeoffyProxyRoute({ siteKey: process.env.GEOFFY_SITE_KEY! });That is it. You now serve:
Directoryapps/
Directorygeoffy/
Directoryllm/
- {handle}.md each product, as plain text
Directoryguides/
- {slug} each published buying guide
- {slug}.md the same guide, as plain text
- sitemap.xml all of the above, listed
Why this is worth a route
Section titled “Why this is worth a route”Without it, that content is still served — from api.geoffy.ai, not from you.
An AI system that reads your buying guide there records api.geoffy.ai as the source, so the citation your guide earns goes to us instead of to you. The point of the route is that everything about your products is addressed at your own domain.
Why a namespace and not three more helpers
Section titled “Why a namespace and not three more helpers”It is the last integration change this package will ask you for. Anything Geoffy adds later appears under the namespace you have already mounted — no upgrade, no new file, no re-deploy on your side.
apps and geoffy are ordinary static route segments, so this wins against a catch-all
such as app/[lang] with no configuration. That is the reverse of the rewrite problem in
the site-wide files: rewrites lose that race, route segments win it.
Setting the freshness window
Section titled “Setting the freshness window”createGeoffyProxyRoute({ siteKey, revalidateSeconds: 3600 });Two behaviours worth knowing
Section titled “Two behaviours worth knowing”They show up in your own logs, so it is worth knowing they are deliberate.
- If Geoffy is unreachable or erroring, this route answers 503 with a
Retry-After— never a fabricated 404, so a crawler retries instead of dropping the page from its index. - Query strings are not forwarded, because no artifact reads one.
Until you add it
Section titled “Until you add it”Geoffy notices and simply says less: your llms.txt will not advertise the twins or the
sitemap, rather than pointing a crawler at pages that are not there. Nothing breaks; you
get less. Confirming the mount is covered in checking it
worked.