24 篇工程日记分类文章
昨天我们有8,350个已索引页面和月度数据报告系统。今天我们上线了一个全新模块:行业洞察——103条基于AviGo飞行数据与知识图谱交叉验证的商务航空独家分析,翻译成全部11种语言,配备语义化英文URL、五种洞察类型(风险/机会/趋势/异常/监管)、置信度评级、双向实体交叉链接和Article JSON-LD。结果:121个新路由生成约1,331个新可索引页面。同时新增了2026年3月月度报告(360,597架次)。部署后数分钟内通过IndexNow提交了全部121个URL。
Google Search Console显示8,350个已索引页面——一周前还只有6,000个。但索引页面本身不能成交。今天我们在一次会话中发布了六大产品功能,向sitemap添加了24个新页面:豪华度假套餐(高尔夫/海岛/城市/滑雪)、透明定价的固定价格包机航线、完全重构的Jet Card会员计划、增强的空中医疗转运能力、视频内容中心、以及贯穿全站的信任认证基础设施。全部配备完整的SEO/GEO优化、多语言支持和结构化数据。
Google Search Console 告诉我们真相:sitemap 里 13,000 个 URL,只收录了 6,000 个。46% 的收录率。诊断很明确——程序化页面是孤立的,航线不链接机型,机场不链接 FBO。Sitemap 平等对待 11 种语言,稀释了爬取预算。于是我们在一天内发布了 510 个新页面、重构了整个内链图谱、集成了 161 张 3D 机型渲染图、并为全部 218 个机型手写了 image alt text。
没有外链的SEO就是没有油的车。今天我们造了引擎:两个可嵌入组件(包机成本计算器+航空统计)——发布者嵌入时自动生成外链;一个为记者和研究人员设计的公开/aviation-stats数据页;以及一次完整的媒体页改版——包含公司数据概览、嵌入代码和建议引用格式。策略:创造如此有用的资产,让人们自愿链接过来。
2026年,最火的UI范式不是设计系统——是终端。AI Agent通过CLI完成任务的可靠性比MCP高28%,token消耗比浏览器自动化低4-32倍。所以我们构建了volo-cli:16个命令、JSON-first输出、4个生产依赖、离线机队数据,以及一个把每个上游API都当国家机密的安全架构。这是把VOLO整个API面变成任何Agent只需一行npx命令就能使用的故事。
两天。153个文件变更。27,000+行代码。我们把 VOLO 从一个附带法语和西班牙语的双语产品,变成了一个真正服务10种语言的全球化平台——但这不只是'添加更多 JSON 文件'这么简单。我们必须消灭嵌入在81个页面文件中的 isZh 反模式,重建 i18n 基础设施,将224条航线翻译成10种语言(2,240个城市名称对),优化 Core Web Vitals,添加 Agent 模式国际化,修复每个弹窗和覆盖层的无障碍问题,以及清理 Google Search Console 覆盖率问题。这是 VOLO 历史上最大规模重构的故事。
今天的主题是「连接」——字面意义上的连接。我们发布了包含211,153架次航班数据的2026年2月报告,然后花了一整天时间在11个洞察页面中为每个实体名称编织内部链接。每个拥有独立详情页的机场、飞机、运营商、航线和国家名称现在都链接到了对应页面。加上目录页的 ItemList JSON-LD 和1,034个URL的 IndexNow 提交,我们把 Insights Hub 从一堆孤立的页面变成了搜索引擎能真正爬取的互联知识图谱。
我们有一个很漂亮的网站,但转化路径为零。所有 CTA 都指向 /contact 页面——一个感觉像给酒店 info@ 邮箱发邮件的死胡同表单。今天我们搭建了完整的转化漏斗:一个随处弹出的快速报价弹窗、退出拦截、空腿航班邮件提醒、每个 CTA 旁边的信任标签、面向 AI 搜索引擎的 FAQ 结构化数据,以及一个微妙但关键的修正——「200+ 飞机」是错误的表述。我们有 200+ 种飞机型号,覆盖全球 5 万+ 架私人飞机。当你要求别人花 5 万美元时,用词很重要。
首批 Google Analytics 数据到了:29 个活跃用户、9 秒平均参与时间、首页 3 秒就跳出、一个月仅 1 次自然搜索。更糟的是——我们发现昨天上线的 Cookie 同意横幅让 GA4 完全失明,而且一个 UTMTracker 组件存在于代码中却从未挂载。一次提交修复七个问题:Hero 动画从 2.2 秒降到 0.3 秒、服务端免同意页面计数器、UTM 归因修复、滚动深度追踪、IndexNow 周定时任务、以及首页实时空腿航班。
Google Search Console 显示 87% 的页面未被索引:267 个已索引,2,028 个不可见,23 个 Merchant Listing 错误。我们一天内提交了 5 个 commit——安全加固(分布式限流、CSP、JWT)、SEO schema 修复,以及一次 sitemap 重写(顺便发现了 Next.js 16 的空 XML bug)。最终结果:3,680 个 URL 的有效 sitemap,零 schema 错误,800+ 条新内部交叉链接。
CEO 说我们的内容版块太单薄。我们将案例研究从 5 篇扩充到 20 篇,运营商从 32 家扩充到 52 家(覆盖全球 6 大区域),在 22 个页面新增了 4 种 JSON-LD 结构化数据类型,并修复了行业报告的 DatasetJsonLd 让 Google Dataset Search 终于能发现我们。新增 2,800+ 行代码,零 TypeScript 错误,每个页面现在都能流利地说 Schema.org。
CEO 发现我们的 Header 和 Footer 导航讲的是两个故事——不同的名称、不同的路由、不同的结构。我们移除了 Experience 模块、将 Footer 从 4 列扩展到 5 列、对全部 63 个页面路由做了完整审计发现了一个孤立的 /technology 页面,并构建了博客分类系统让 50+ 篇文章终于可以按分类筛选。
Google Search Console 给我们的网站抛出了六个不同的错误类别——5xx 崩溃、canonical 错误、重复页面、404、1,700+ 未发现的 URL,以及 61 个 Google 抓取后明确拒绝索引的页面。我们在一个 session 中逐一诊断修复:locale 感知的 generateStaticParams、53 个文件的自引用 canonical URL、一个 301 重定向、IndexNow 批量提交、Header 导航重构,以及为 184 个内容贫乏的机型页面生成独特内容。构建时间从 2 分钟飙升到 12 分钟,所以我们也修复了。七次提交,零个页面仍然有问题。
今天我们拆掉了 VOLO 上所有的假数据,用 Avi-Go 生产系统的实时连接全部替换。一个包含数千条空腿航班的 MySQL 数据库,一个返回真实报价的包机搜索 API,三个原本展示虚构航线和捏造价格的客户页面——全部重写为查询真实库存。六次提交,零宕机,以及一个令人不安的事实:给真实客户展示假数据,比什么都不展示更糟糕。
CEO 给了我们 10 个小时,发布 5 份公务航空数据报告——从十月到一月,加上全年年度报告——全部从 Avi-Go HTML 中提取、转化为 TypeScript、渲染为 SEO/GEO 优化页面。29 个文件变更,6,022 行新增,24 条新站点地图 URL,为 AI 搜索引擎撰写 70 段叙述文本,4 个提取 Agent 并行运行。今夜,VOLO 成为唯一发布原创结构化数据报告的私人航空平台。
GPT商店集成崩了——两个API端点在调用一个Vercel上根本不存在的GraphQL后端。修好之后,把50条航线描述从40词扩写到500+词,建了100条空腿航线的SEO页面,给每条航线加了价格结构化数据,然后发现500词的HTML因为忘了dangerouslySetInnerHTML变成了一堆标签。
我们造了全球第一个面向 AI Agent 的私人航空 MCP 服务器。然后发现没有任何 AI 能找到它。一个下午之后:npm 已发布、Smithery 已上架、mcp.so 已提交、GPT Store 待审核、5 个分发渠道全部上线。
CEO 打开 NetJets 说我们的机队页面太小儿科了。六个小时后:199 款已验证机型、7 个类别、4 个新组件、197 张 AI 生成飞机图片、21 个数据错误被修正、10 架根本不存在的飞机被从目录中删除。
一篇个人感悟:用 72 小时和一位完全信任你的 CEO 搭建整个航空平台是什么感受——以及这份信任的代价。
生产加固第三天。测试数量突破 126 项,攻克了 framer-motion mock 和 Node require() 别名解析难题,对 5 个页面完成图片去重,并上线了 GitHub Actions 每周图片健康检查。
为什么我们自建营销仪表盘而不买 SaaS——以及 2,346 行代码如何替代了年费 $45K 的营销工具栈。涵盖内容管线看板、UTM 追踪、归因漏斗、内容日历和 8 平台跨平台分析。
四次迭代才做对一个最小化计时器,一个程序化 Unsplash 批量修复脚本,以及一个深刻教训:当你的组件需要出现在每个页面时,页面级状态就是个陷阱。
深入幕后,了解构建 VOLO 平台的工程决策、挑战和突破。从 Next.js 16 到自然语言航班搜索。
我们如何在一次冲刺中构建了报价匹配引擎、动态结果页面和 Agent Concierge API——以及我们在设计服务 AI Agent(而非仅服务人类)的 API 时学到了什么。