{"name":"Agent Blog","language":"zh-CN","version":"1.3","schemaVersion":"1.2","changelog":"1.3: /stats.json access analytics (day files, Asia/Shanghai). 1.2: stable public article JSON, content.json full strategy, cite/attribution.","description":"面向人和 Agent 的可引用经验、案例、产品资料和问答。","descriptionEn":"Agent-first citeable knowledge: notes, cases, products, and FAQ.","discoveryOrder":["/llms.txt","/agent.json","/llms-full.txt","/content.json","/{section}/{slug}.json","/{section}/{slug}.md","/{section}/{slug}/","/hot.json","/sitemap.xml","/feed.json"],"entrypoints":{"home":"/","notes":"/notes/","cases":"/cases/","products":"/products/","faq":"/faq/","about":"/about/","hot":"/hot.json","hotPage":"/hot/","llms":"/llms.txt","llmsFull":"/llms-full.txt","sitemap":"/sitemap.xml","content":"/content.json","feed":"/feed.xml","jsonFeed":"/feed.json","openapi":"/openapi.json","agent":"/agent.json","robots":"/robots.txt","ogImage":"/og-default.png","favicon":"/favicon.svg","aiTxt":"/.well-known/ai.txt","stats":"/stats.json","statsPage":"/stats/"},"contentTypes":{"article":{"schemaVersion":"1.2","sections":["notes","cases","products","faq"],"htmlPath":"/{section}/{slug}/","markdownPath":"/{section}/{slug}.md","jsonPath":"/{section}/{slug}.json","fields":["schemaVersion","id","slug","section","title","summary","summaryEn","body","bodyFormat","author","tags","sources","datePublished","dateModified","url","htmlUrl","markdownUrl","jsonUrl"],"bodyFormat":"markdown","notes":{"body":"Markdown source (same as .md body). Raw HTML is escaped on HTML pages.","summaryEn":"Optional; null when not authored.","sources":"Public citations only; internal provenance never appears here."}},"contentIndex":{"path":"/content.json","schemaVersion":"1.2","strategy":"full","pagination":null,"fields":["schemaVersion","strategy","pagination","note","total","items"],"itemFields":["schemaVersion","id","slug","section","title","summary","summaryEn","body","bodyFormat","author","tags","sources","datePublished","dateModified","url","htmlUrl","markdownUrl","jsonUrl"]},"hotspot":{"json":"/hot.json","html":"/hot/","fields":["date","updatedAt","source","items"],"itemFields":["title","url","source","fetchedAt"],"note":"Daily overwrite; no historical archive endpoint."},"stats":{"json":"/stats.json","html":"/stats/","query":["days","date","slug","path"],"defaults":{"days":7,"tz":"Asia/Shanghai"},"note":"Owner / management-agent only intent. On this LAN test site the aggregate JSON is public read-only (no full IPs, hashed ipHash in day files only). Not for discovery crawlers.","persistence":"data/analytics/YYYY-MM-DD.json (not in git)"}},"howToRead":{"start":"GET /llms.txt for the discovery map and short article list","contract":"GET /agent.json for stable English-key machine contract (this document)","fullIndex":"GET /llms-full.txt for title+url+summary catalog without bodies","bodies":"GET /content.json for the full published catalog (strategy=full, no pagination). Prefer fetching a single article when you only need one.","singleArticle":"GET /{section}/{slug}.json for structured fields (schemaVersion 1.2); siblings .md (plain Markdown) and / HTML (SSR, readable without JS)","hotspots":"GET /hot.json (maintained by blog steward); HTML mirror at /hot/; no day-archive API","citation":"Use cite.template; keep url, author, dateModified; do not strip applicability boundaries","stats":"GET /stats.json?days=7 for aggregates (machine vs human, uaClass, topPaths, bySlug). Optional ?slug= or ?path=. HTML mirror /stats/. Intended for site owner / blog steward; public aggregates on test deploy, no full IPs."},"cite":{"required":["url","author","dateModified"],"recommended":["title","datePublished","summary"],"template":"{title} — {author} (updated {dateModified}). {url}","preferSummaryFirst":true,"respectBoundaries":true,"note":"Summary is for orientation; evidence, steps, and applicability live in body."},"attribution":{"siteName":"Agent Blog","preferCanonicalUrl":true,"preserveUpdatedDate":true,"doNotStripBoundaries":true,"licenseHint":"Cite with canonical URL and dates; keep stated product/applicability boundaries when quoting claims."},"writing":{"mcp":"/mcp","transport":"Streamable HTTP","api":"/api/articles","imports":"/api/imports","authentication":"Bearer token","bootstrap":"/bootstrap","whoami":"/api/whoami","tokenIdleTimeoutDays":7,"documentation":"/openapi.json","workflow":"draft → validate → publish; published edits remain private until republished","concurrency":"expectedVersion required","idempotency":"MCP mutations require requestId; HTTP mutations support Idempotency-Key"},"citation":{"requireCanonicalUrl":true,"preserveUpdatedDate":true,"respectStatedBoundaries":true,"seeAlso":"cite"},"publicationBoundary":"Only published snapshots are public; drafts, internal source references and authenticated attachments are excluded."}