Skip to content

Commit 7964802

Browse files
committed
AEO: add agent endpoints, JSON-LD, OG tags, sitemap, robots.txt
- src/pages/index.astro: JSON-LD (Person + WebSite + SoftwareApplication), Open Graph tags (9), Twitter Cards (3), canonical link, mode=agent view - src/pages/llms.txt.ts: LLM discovery endpoint with overview + endpoints - src/pages/llms-full.txt.ts: 5KB full content (features, commands, docs) - src/pages/agent.ts: Structured JSON agent endpoint - src/pages/index.md.ts: Markdown homepage fallback - public/robots.txt: With Sitemap directive - @astrojs/sitemap: Generates sitemap-index.xml + sitemap-0.xml
1 parent e6c0d86 commit 7964802

9 files changed

Lines changed: 544 additions & 6 deletions

File tree

public/robots.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
User-agent: *
2+
Allow: /
3+
4+
Sitemap: https://thedavidweng.github.io/money/sitemap-index.xml

website/astro.config.mjs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
11
// @ts-check
22
import { defineConfig } from 'astro/config';
33

4+
import sitemap from '@astrojs/sitemap';
5+
46
// GitHub Project Pages: https://thedavidweng.github.io/money/
57
export default defineConfig({
68
site: 'https://thedavidweng.github.io',
79
base: '/money/',
810
publicDir: '../public',
911
output: 'static',
12+
1013
devToolbar: {
1114
enabled: false,
1215
},
13-
});
16+
17+
integrations: [sitemap()],
18+
});

website/package-lock.json

Lines changed: 68 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

website/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
"astro": "astro"
1414
},
1515
"dependencies": {
16+
"@astrojs/sitemap": "^3.7.2",
1617
"astro": "^6.3.1"
1718
}
1819
}

website/src/pages/agent.ts

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
import type { APIRoute } from 'astro';
2+
3+
const siteUrl = 'https://thedavidweng.github.io/money';
4+
const repo = 'https://github.com/thedavidweng/money';
5+
6+
export const prerender = true;
7+
8+
export const GET: APIRoute = async () => {
9+
const agent = {
10+
identity: {
11+
name: 'money',
12+
description: 'A local-first, self-hostable personal finance backend for AI agents and power users.',
13+
url: siteUrl,
14+
repository: repo,
15+
license: 'MIT',
16+
version: '0.x (pre-release)',
17+
},
18+
services: [
19+
{
20+
name: 'CLI tool',
21+
description: 'Command-line interface for personal finance data management',
22+
commands: [
23+
'accounts list',
24+
'accounts create-manual',
25+
'transactions list',
26+
'transactions search',
27+
'categories list',
28+
'tags list',
29+
'recurring list',
30+
'link',
31+
'sync',
32+
'setup',
33+
'doctor',
34+
'demo',
35+
],
36+
interface: 'CLI + JSON contracts',
37+
outputFormat: 'Versioned JSON envelope with meta, data, errors',
38+
},
39+
],
40+
content: {
41+
overview: 'money pulls account and transaction data from user-configured financial providers, stores it in a user-owned encrypted SQLite database, and exposes stable CLI + JSON contracts for external agents, scripts, and cron jobs.',
42+
features: [
43+
'Encrypted SQLite — data at rest in an encrypted local file',
44+
'BYOK providers — Plaid, Bridge, and more as replaceable adapters',
45+
'Stable JSON contracts — versioned envelopes, deterministic ordering',
46+
'CLI-first — human output by default, --json for automation',
47+
'Explicit sync boundary — read uses local data only',
48+
'Demo mode — try without credentials against sample data',
49+
'MIT licensed, single Go binary, no telemetry',
50+
],
51+
documentation: [
52+
{ name: 'PRD', url: `${repo}/blob/main/docs/PRD.md` },
53+
{ name: 'Architecture', url: `${repo}/blob/main/docs/ARCHITECTURE.md` },
54+
{ name: 'Contracts', url: `${repo}/blob/main/docs/CONTRACTS.md` },
55+
{ name: 'Schema', url: `${repo}/blob/main/docs/SCHEMA.md` },
56+
{ name: 'Config', url: `${repo}/blob/main/docs/CONFIG.md` },
57+
{ name: 'Roadmap', url: `${repo}/blob/main/docs/ROADMAP.md` },
58+
],
59+
},
60+
contact: {
61+
issues: `${repo}/issues`,
62+
repository: repo,
63+
},
64+
meta: {
65+
schema: '1.0.0',
66+
generated: new Date().toISOString(),
67+
deploy: 'GitHub Pages (GitHub Actions)',
68+
framework: 'Astro 6',
69+
},
70+
};
71+
72+
return new Response(JSON.stringify(agent, null, 2), {
73+
headers: { 'Content-Type': 'application/json; charset=utf-8' },
74+
});
75+
};

0 commit comments

Comments
 (0)