文档
快速开始
Getting started
把一个新的 Next.js 站点从零带到可撰稿状态:环境要求、安装、配置文件、需要挂载的三条路由、主题,以及本地运行。
页面家族与内容类型
Page families and content types
内容类型是一份结构契约,只在代码中定义一次;页面家族则是站点中一种反复出现的编辑用途,它复用某个内容类型,并补上路由、各语言标签与编辑策略。二者共同划定了 AIBlog 所管理的范围。
DOM 契约与主题化
The DOM contract and theming
渲染器只输出结构、class 钩子和 data 属性,别无其他。本页说明两类属性的分工、文档外壳的结构、主题应优先使用 token 的写法,以及用于保证样式与内容分离的主题切换测试。
编辑、草稿与发布
Editing, drafts and publishing
每个页面带有草稿指针和已发布指针。任何修改都会生成新的版本记录,公开路由只读取已发布版本,未发布的草稿会被明确提示,而不会被遗忘。
在 Firestore 上实现搜索
Search on Firestore
Firestore 通过复合索引可以满足全部结构化查询,但完全不支持全文检索。AIBlog 在发布时派生一份精简的搜索投影,在每个服务进程中以 CJK 双字组分词建立索引,并借助按块生成的向量与原生向量检索来弥补跨语言检索的缺口。
撰写器与创作循环
The composer and the authoring loop
编辑粘贴文本、放入照片、点击生成,模型以一个完整的类型化页面对象作答。本文说明每一轮发送什么、服务器校验什么,以及编辑读回什么。
四套设计,同一份文档
Four designs, one document
主题菜单只更换样式表,文档、DOM 与数据保持不变。本文说明三层 CSS、由 Cookie 驱动的切换、先令牌后选择器的次序以及主题切换测试如何协同,以及为客户写一套主题包的成本。
嵌入向量与检索
Embeddings and retrieval
凡是依赖语义而非字符的功能,都由嵌入向量支撑:相关页面、跨语言搜索、撰写器参考页与访客提问框。每个区块一个向量,发布时计算,存放在 Firestore 中。
提问框及其成本护栏
The question box and its cost guardrails
“Ask the site”提问框是访客无需登录即可触发的唯一一次模型调用。本文说明一次回答的成本、按代价从低到高排列的各道闸门、四个限额配置在何处,以及计数器失效时仍然生效的模型厂商控制台上限。
部署站点
Deploying a site
两种部署目标——从源码部署到 Cloud Run,或作为独立产物部署到虚拟机并置于 nginx 之后——以及每次部署所依赖的依赖审计闸门、最小权限服务账号、安全响应头、密钥与索引。
配置参考
Configuration reference
一个文件描述一个站点:站点标识、页面族及其编辑策略、语气、预览路由、提问限额、后台语言与各项服务——按本站自身配置中出现的顺序逐节说明。
把站点交付给客户
Handing a site to a client
客户项目的最后一步是一份手册和一条边界:客户员工独立完成什么、什么需要开发者介入、开发者为每个客户提供什么,以及所有者需要长期承担的那一项职责。
区块词汇表
The block vocabulary
本包内置的全部区块类型:文本、列表、强调与数据、照片,以及需由页面族显式启用的七种可选类型;并说明编辑器可以就地修改什么,以及注册新类型需要哪些东西。
客户常问的问题
Questions clients ask
交付之前,每次沟通都会出现的那些问题,以及我们给出的简短回答:没有页面搭建器、无法破坏设计、每次保存都可恢复,以及一个页面的运行成本。