Skip to content

Commit 7722be5

Browse files
gmoonclaude
andcommitted
SEO quick wins: sitemap, critical CSS, llms.txt, AI bot rules, schema fix
- Add /privacy to sitemap.xml - Inline critical CSS to prevent white flash (FOUC) - Create llms.txt for AI search visibility - Add explicit AI bot rules to robots.txt (GPTBot, ClaudeBot, etc.) - Change /blog schema from WebPage to CollectionPage - Add navigation links to homepage noscript fallback - Use GITHUB_ORG_URL constant instead of hardcoded string Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent f77e6a0 commit 7722be5

4 files changed

Lines changed: 53 additions & 3 deletions

File tree

index.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
<title>Forkzero — AI-First Developer Tooling</title>
77
<meta name="description" content="Forkzero builds tools for the human-agent era. Lattice, Team of Rivals, s3proxy." />
88
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'><text y='28' font-size='28'>⬡</text></svg>" />
9+
<style>body{margin:0;background:hsl(220,40%,10%);color:hsl(220,80%,95%);font-family:system-ui,sans-serif}</style>
910
<link rel="preconnect" href="https://fonts.googleapis.com" />
1011
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
1112
<link href="https://fonts.googleapis.com/css2?family=Outfit:wght@200;300&display=swap" rel="stylesheet" />

public/llms.txt

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# Forkzero
2+
3+
> Forkzero builds developer tools for AI-native teams.
4+
5+
## Lattice
6+
7+
Lattice is a knowledge coordination protocol that captures the research, decisions, and requirements behind your code in a Git-native knowledge graph. Any collaborator — human or AI — picks up where the last one left off.
8+
9+
- Open source, free to use
10+
- Plain YAML files in Git — no database, no SaaS dependency
11+
- Connects four layers: sources (research), theses (strategy), requirements (specs), implementations (code)
12+
- Automatic drift detection when upstream knowledge changes
13+
- Works on macOS, Linux, and Windows
14+
15+
### Install
16+
17+
curl -fsSL https://forkzero.ai/lattice/install.sh | sh
18+
19+
### Key pages
20+
21+
- Homepage: https://forkzero.ai
22+
- Getting Started: https://forkzero.ai/getting-started
23+
- Blog: https://forkzero.ai/blog
24+
- GitHub: https://github.com/forkzero/lattice
25+
- Live Dashboard: https://forkzero.ai/reader?url=https://forkzero.github.io/lattice/lattice-data.json
26+
27+
## Other Projects
28+
29+
- **Team of Rivals**: Multi-agent debate system (private beta)
30+
- **s3proxy**: Streaming S3 proxy for pre-signed URL workflows (production, v3.x)
31+
32+
## Contact
33+
34+
- GitHub: https://github.com/forkzero
35+
- Privacy: privacy@forkzero.ai

public/robots.txt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,16 @@
11
User-agent: *
22
Allow: /
33

4+
User-agent: GPTBot
5+
Allow: /
6+
7+
User-agent: ClaudeBot
8+
Allow: /
9+
10+
User-agent: PerplexityBot
11+
Allow: /
12+
13+
User-agent: Google-Extended
14+
Allow: /
15+
416
Sitemap: https://forkzero.ai/sitemap.xml

scripts/prerender.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import { readFileSync, writeFileSync, mkdirSync, existsSync } from 'fs'
1111
import { join } from 'path'
1212
import { blogPosts } from '../src/data/blog-posts.js'
1313
import { projects } from '../src/data/projects.js'
14-
import { INSTALL_CMD, GITHUB_REPO_URL } from '../src/constants.js'
14+
import { INSTALL_CMD, GITHUB_REPO_URL, GITHUB_ORG_URL } from '../src/constants.js'
1515

1616
const distDir = join(import.meta.dirname, '..', 'dist')
1717
const template = readFileSync(join(distDir, 'index.html'), 'utf-8')
@@ -145,6 +145,7 @@ const sitemapUrls: { loc: string; lastmod: string }[] = [
145145
loc: `https://forkzero.ai/blog/${post.slug}`,
146146
lastmod: post.date,
147147
})),
148+
{ loc: 'https://forkzero.ai/privacy', lastmod: today },
148149
]
149150

150151
const sitemapXml = [
@@ -180,6 +181,7 @@ function buildNoscript(route: RouteMeta): string | null {
180181
`</ul>`,
181182
`<h2>Projects</h2>`,
182183
`<ul>${projectList}</ul>`,
184+
`<nav><p><a href="/getting-started">Get Started</a> · <a href="/blog">Blog</a> · <a href="/privacy">Privacy</a></p></nav>`,
183185
].join(''),
184186
)
185187
}
@@ -248,7 +250,7 @@ function buildJsonLd(route: RouteMeta): string {
248250
'@type': 'ImageObject',
249251
url: 'https://forkzero.ai/logo.svg',
250252
},
251-
sameAs: ['https://github.com/forkzero'],
253+
sameAs: [GITHUB_ORG_URL],
252254
description:
253255
'Forkzero builds developer tools for AI-native teams. Lattice captures research, decisions, and requirements in a Git-native knowledge graph.',
254256
})
@@ -278,7 +280,7 @@ function buildJsonLd(route: RouteMeta): string {
278280
if (route.path === '/blog') {
279281
schemas.push({
280282
'@context': 'https://schema.org',
281-
'@type': 'WebPage',
283+
'@type': 'CollectionPage',
282284
name: 'Blog — Forkzero',
283285
description: route.description,
284286
url: route.canonical,

0 commit comments

Comments
 (0)