AI visibility infrastructure for Next.js

Your Next.js site is invisible to AI engines. Fix it in one file.

Every site you ship needs structured data, an llms.txt, and correct metadata. Grndwerk wires all of it from a single constants.ts - configure once, never think about it again.

One-time payment • You own the code • No lock-in

lib/constants.ts
export const SITE: SiteConstants = {
  deploymentModel: "client-owned",
  businessModel:   "saas",
  identity: {
    name: "Acme Corp",
    description: "Project management for dev teams.",
  },
  org:  { type: "Organization" },
  urls: { canonical: "https://acmecorp.com" },
  // ↑ Change this. Everything updates.
}

↑ The only file you edit. Schemas, metadata, llms.txt — all derived from this.

Get discovered on

ChatGPT
Claude
Perplexity
Gemini
Google
Mistral
Grok
Bing
ChatGPT
Claude
Perplexity
Gemini
Google
Mistral
Grok
Bing
ChatGPT
Claude
Perplexity
Gemini
Google
Mistral
Grok
Bing
ChatGPT
Claude
Perplexity
Gemini
Google
Mistral
Grok
Bing

The problem

You know you need schemas. Setting them up is a nightmare.

3–4 hrs
Write it onceWrite it every project

lost per site setting up Schema.org from scratch. JSON-LD doesn't copy between projects — every archetype is different.

0
next-seoAI engine visibility

existing tools generate an llms.txt. AI crawlers like ChatGPT and Perplexity can't read most sites. They're flying blind.

Shift
RankingBeing cited

from Google to AI assistants is already happening. Without structured data and llms.txt, your site doesn't exist to them.

Grndwerk handles the whole stack — JSON-LD schemas, a well-formed llms.txt, and correct metadata — derived from one constants file. Set it once. Works for every project you ever ship.

For everyone else

What this actually does.

Google, ChatGPT, and Perplexity decide what to surface based on signals they can read, not just words on a page. Most sites send nothing. Grndwerk wires all of it automatically.

yoursite.com
JSON-LD schema
llms.txt
OG + meta tags
sitemap.xml
ChatGPT
Perplexity
Claude
Gemini
Google
Bing

Without these signals, AI engines guess. With them, they know — and recommend you.

What's included

The full AI visibility stack.
Nothing left to wire up.

16 archetypes

Schema.org JSON-LD

Organization, WebSite, WebPage, Article, FAQ, Service, Product, Person, Breadcrumb. Correct types selected per page archetype.

Auto-generated

llms.txt + llms-full.txt

Auto-generated from your constants and served as static routes. AI crawlers can read and understand your site in one pass.

App Router

Next.js Metadata

generateMetadata() and generateRootMetadata() with correct OG, Twitter, canonical, and verification tags. Drop in and forget.

Pre-flight checks

Validator

Checks your constants before schemas are built. Catches missing addresses, bad phone formats, placeholder values, 24hr conflicts.

Debug Dashboard

Health overview, constants viewer, schema inspector per archetype. Built as a first-class tool — see it live on this site at /debug.

Unique to Grndwerk

Deployment Modes

client-owned for real businesses. owned-asset for rank-and-rent sites: Person schemas suppressed, minimal footprint.

shadcn-style installation — you own the code.

Files copy into your project. No package to update, no lock-in. Read it, modify it, ship it.

How it works

Four steps.
Done in an afternoon.

01

Copy the kit into your project

Drop lib/, components/seo/, and the app routes into your Next.js project. No npm install.

cp -r grndwerk/lib ./lib
cp -r grndwerk/components/seo ./components/seo
02

Edit lib/constants.ts

One file. Replace the Acme Corp demo with your real business data. Heavily commented. Takes ~10 minutes.

// lib/constants.ts
export const SITE: SiteConstants = {
  identity: { name: "Your Business" },
  urls: { canonical: "https://yourdomain.com" },
  org: { type: "LocalBusiness" },
  // ...
}
03

Add JsonLd to each page

One component, one prop. The factory handles which schemas to generate for that archetype.

import { JsonLd } from "@/components/seo/json-ld"

export default function Page() {
  return (
    <>
      <JsonLd archetype="serviceDetail" page={pageData} />
      {/* your content */}
    </>
  )
}
04

Open /debug and verify

The debug dashboard shows validation status, schema health, and a live preview of your llms.txt. Fix any warnings before deploying.

localhost:3000/debug
# → Health dashboard
# → Schema inspector per archetype
# → Constants viewer
# → llms.txt preview

Drop in, not rip out

Your project.
Plus a few files.

Grndwerk adds its folders alongside what you already have. Nothing moves, nothing breaks. Your codebase stays yours.

Before

my-next-app/
app/
·layout.tsx
·page.tsx
about/
·page.tsx
components/
·nav.tsx
·footer.tsx
lib/
·utils.ts
·next.config.ts
·package.json
·tsconfig.json

After

my-next-app/
app/
·layout.tsx
·page.tsx
about/
·page.tsx
llms.txt/
·route.ts
llms-full.txt/
·route.ts
components/
·nav.tsx
·footer.tsx
seo/
·json-ld.tsx
·metadata.ts
lib/
·utils.ts
·constants.ts← the one file you edit
types/
schemas/
validators/
generators/
·next.config.ts
·package.json
·tsconfig.json
Grndwerk filesEverything else is untouched

16 page archetypes

Works for whatever
you're building.

Pass an archetype to JsonLd and the right schemas are generated automatically. Every page type covered.

SaaS product
homelandingproduct
Agency client site
homeaboutserviceListserviceDetailcontact
Local business
homelocationserviceDetailfaq
Portfolio / freelancer
homeportfolioabout
Rank-and-rent site
homeserviceDetaillocation
E-commerce
homeproductcategory
Content / blog
homearticlefaq
Directory / listings
listingListlistingDetailcategory

All 16 archetypes

homeaboutserviceListserviceDetaillocationarticlefaqcontactpolicylandingteamproductcategorylistingDetailportfoliolistingList

Pricing

One price.
Own it forever.

grndwerk kitv1.0 • one-time
$99USD

One-time. No subscription. No license keys.

  • All source files - lib/, components/seo/, app routes
  • 16 page archetypes with correct schema mappings
  • Schema.org JSON-LD builders (9 schema types)
  • llms.txt + llms-full.txt auto-generation
  • Next.js Metadata helpers (OG, Twitter, canonical)
  • Site validator with pre-flight checks
  • Debug dashboard - health, constants, schema inspector
  • owned-asset deployment mode for rank-and-rent sites
  • Acme Corp demo config - ready to customise
  • HOWTO.md - clear setup guide
  • Private GitHub repo access
  • Free updates forever
Buy Grndwerk - $99

30-day support guarantee

Set it up and it doesn't work for your project? Email us within 30 days and we'll make it right. No hassle.

Delivery via private GitHub repo • Instant access

Running client sites or rank-and-rent? The owned-asset mode suppresses Person schemas and reduces footprint. One purchase covers all your projects.

Why this exists

Werner Griesel

I rebuilt the same stack four times this year... for four different paying clients.

Every project: same setup, same integrations, same two to five days gone before a single business feature was written. Then I started looking at what was happening with AEO, GEO, and AI search - and realised every site I'd shipped was invisible to ChatGPT, Perplexity, and Claude by default.

The structured data layer didn't exist in any starter I could find, so I built it myself. Then I wired it to a single config file so I'd never have to rebuild it again. That's Grndwerk.

One purchase. Every project from here on ships AI-visible from line one.

Werner Griesel

Builder, Grndwerk

Frequently Asked Questions

Questions? Answered.

If you don't find what you're looking for, feel free to reach out at hello@grndwerk.com.