Good SEO is mostly a pile of files and tags — sitemap.xml, robots.txt, Open Graph tags, schema.org JSON-LD — and every one of them is easy to get subtly wrong by hand. The Lacspace SEO Kit turns them into typed functions, so your editor autocompletes them and your build generates them. Seven packages, zero dependencies, Next.js-friendly.

Metadata & structured data — @lacspace/seo
One flat input becomes a Next.js Metadata object (title, description, canonical, Open Graph, Twitter), and sixteen typed builders produce valid schema.org JSON-LD.
import { seoMetadata, article, jsonLd } from "@lacspace/seo";
export const metadata = seoMetadata({
title: "Pricing — Lacspace",
canonical: "/pricing",
image: "https://lacspace.com/og/pricing.png",
baseUrl: "https://lacspace.com",
});
const schema = article({ headline, author: "Lumi AI", datePublished });
// <script type="application/ld+json">{jsonLd(schema)}</script>
The files search engines want

@lacspace/sitemap builds a sitemap.xml (with image, video, news and hreflang support) and automatically splits past 50,000 URLs into an index. @lacspace/robots builds and parses robots.txt — and can block AI crawlers in one line:
import { sitemap } from "@lacspace/sitemap";
import { blockAiBots } from "@lacspace/robots";
sitemap([{ loc: "https://site.com/", changefreq: "daily", priority: 1.0 }]);
blockAiBots({ sitemap: "https://site.com/sitemap.xml" }); // allow search, block GPTBot/ClaudeBot/…
The new one: llms.txt
As people discover sites through AI assistants, a new file is appearing at the root: llms.txt — a Markdown map of your site written for language models, with an optional llms-full.txt that inlines the full content. It is the SEO layer for the AI era, and @lacspace/llms-txt generates and parses both.
import { llmsTxt } from "@lacspace/llms-txt";
llmsTxt({
title: "Lacspace",
summary: "Open-source TypeScript packages and products.",
sections: [{ title: "Docs", links: [{ title: "Packages", url: "https://lacspace.com/packages" }] }],
});
Verification, feeds & slugs
The kit rounds out the everyday SEO chores: @lacspace/site-verify produces the verification meta tags and files for Google Search Console, Bing, Yandex, Baidu, Pinterest and more; @lacspace/rss emits RSS 2.0, Atom and JSON Feed from one set of items; and @lacspace/slugify turns any title into a clean, unique, SEO-friendly URL.
import { verificationMeta } from "@lacspace/site-verify";
import { slugify } from "@lacspace/slugify";
verificationMeta({ google: "abc123", bing: "XYZ789" });
slugify("Héllo, World! — 2026"); // "hello-world-2026"
Practise what we preach
The page you would land on to explore these — lacspace.com/packages — is itself built with this kit: typed metadata, an ItemList of all 35 packages as JSON-LD, a breadcrumb trail and an FAQ schema. Dogfooding, in public.
All seven packages use the Lacspace Free Licence and are dependency-free. Browse them on the packages page or read the source on GitHub.
Frequently asked questions
What is in the Lacspace SEO Kit?
Seven packages: @lacspace/seo (typed metadata + schema.org JSON-LD builders), @lacspace/sitemap (sitemap.xml + index), @lacspace/robots (robots.txt + AI-crawler presets), @lacspace/llms-txt (llms.txt & llms-full.txt), @lacspace/site-verify (Google/Bing/Yandex verification), @lacspace/rss (RSS/Atom/JSON feeds) and @lacspace/slugify (SEO-friendly URL slugs).
What is llms.txt and why does it matter?
llms.txt is an emerging standard (llmstxt.org): a Markdown file at your site root that gives large language models a curated map of your most useful content, with an optional llms-full.txt that inlines the full text. As people increasingly discover sites through AI assistants, it is becoming the SEO layer for the AI era. @lacspace/llms-txt generates and parses both.
Does it work with Next.js?
Yes. @lacspace/seo returns a Next.js App Router Metadata object, and @lacspace/sitemap and @lacspace/robots emit the exact shapes that app/sitemap.ts and app/robots.ts expect — as well as plain XML/strings for any other framework.
Can I block AI crawlers?
Yes. @lacspace/robots ships a one-line blockAiBots() helper and a maintained list of AI crawlers (GPTBot, ClaudeBot, CCBot, Google-Extended, PerplexityBot and more), so you can allow search engines while opting out of AI training — or the reverse.
Is the JSON-LD valid schema.org?
Yes. @lacspace/seo has typed builders for Organization, Article, Product, FAQPage, BreadcrumbList, LocalBusiness, Event, JobPosting, Recipe and more — 16 in total — that produce valid schema.org objects, plus a helper that renders a safe tag (it escapes closing tags).
Are these packages free?
Yes, all seven use the Lacspace Free Licence and are zero-dependency, and work in any JavaScript runtime.

