Jason Finance 从零到一:10 天、190 个 commit,用 Claude Code 搭建四语理财网站的技术架构与做法
Jason Finance 从 2026 年 10 月 2 日第一个 commit 到四语上线的完整记录:Astro、Cloudflare Workers、GitHub、Supabase 的技术架构、为什么这样选、每天做了什么,以及内容、数据同步、SEO 和 AI 权限的做法。
本文目录
Jason Finance 的第一个 commit 是 2026 年 10 月 2 日。到 10 月 11 日,网站累计 190 个 commit,27 篇文章各有繁体中文、简体中文、英文版,其中 22 篇加密货币文章另有西班牙语版,还有后台、留言、每天自动更新的数据和一套 SEO 监控。代码都是 Claude Code 写的,我看不懂代码,负责的是决定方向和审稿。
这篇把整套技术架构和做法写下来:用了什么、为什么这样选、每天做了什么,以及哪些东西刻意没用。想知道每个服务花多少钱、我怎么给 AI 权限,见《看不懂代码也能建网站》。
本文是 Jason Finance 的建站记录,数字是 2026 年 10 月 11 日的状态。工具的功能、免费额度和价格都会变动,以各服务官方说明为准。
一句话说完整套架构
一个 Astro 网站部署在 Cloudflare Workers:公开页面全部预先生成为静态网页,文章存放在 GitHub;后台走服务器端;登录、留言和后台数据放在 Supabase;一台 Oracle 服务器运行 Claude Code 和每日备份。
| 层 | 用什么 | 为什么 |
|---|---|---|
| 网站框架 | Astro | 公开页面输出为静态 HTML,只有后台和首页的语言跳转需要服务器 |
| 内容 | Markdown + 内容结构检查(zod schema) | Git 就是内容管理系统:有版本记录、可以审稿,网站构建不依赖数据库 |
| 语言 | 繁中、简中、英文,加密货币主题另有西班牙语 | 每个语言都带网址前缀,规则没有例外 |
| 托管 | Cloudflare Workers | 静态页面走全球 CDN;数据库出问题时文章页不受影响 |
| 部署 | push 到 main 自动部署;preview 分支生成包含草稿的预览网址 | push 就是发布,不需要另外的发布系统 |
| 登录与数据 | Supabase 免费方案(Postgres、登录、RLS) | 留言和后台都要分清“数据属于谁”,用数据库的行级权限控制 |
| 登录方式 | Google 登录 | 免费方案的发信额度很低,避开需要发邮件的登录方式 |
| 后台防护 | Cloudflare Access | 未授权的请求在 Cloudflare 这一层就被拦下 |
| 留言防机器人 | Cloudflare Turnstile | 在数据库里验证,绕过网站直接调用也跳不过 |
| 常驻服务器 | Oracle 免费服务器 | 运行 Claude Code、每日备份 |
| 备份 | 数据库每天备份到 Cloudflare R2,保留 30 天 | 免费方案没有自动备份,自己做 |
| 流量与 SEO | GA4、Google Search Console、另一个 SEO Monitor 项目 | 网站本身只负责被收录,分析交给独立的项目 |
| 测试 | Vitest、Astro 的类型检查、内容结构检查 | 数据或格式有错,构建就失败,不会带着错误上线 |
10 天做了什么
| 日期 | 主要进度 |
|---|---|
| 10 月 2 日 | 创建 Astro 项目 |
| 10 月 3 日 | 写下 AI 的权限规则(看影响决定要不要问我)、沟通语言;第一篇草稿;结构化数据(WebSite、BlogPosting、BreadcrumbList) |
| 10 月 4 日 | 菜单、语言切换、深色模式、作者介绍、留言;后台(Google 登录、内容分析、翻译进度、留言审核);定投试算工具;第一批文章三语发布 |
| 10 月 5 日 | 交易所数据框架;写作润色规则 |
| 10 月 6 日 | 扁平的 sitemap.xml |
| 10 月 7 日 | 加密货币内容规划;第一篇交易所评测上线;USDT 利率工具(草稿) |
| 10 月 8 日 | 交易所事实数据(费率、储备金、牌照、事件)和公开评分方法;后台上传截图;西班牙语版 |
| 10 月 9 日 | 全站侧栏和手机底部横幅;第一篇时事文章四语上线 |
| 10 月 10 日 | 交接用的待办清单;交易所按 CoinGecko 排名排序 |
| 10 月 11 日 | sitemap 日期、Organization 结构化数据、四语 RSS、延伸阅读;接入 SEO Monitor;12 篇交易所评测四语上线 |
每天的 commit 数从 1 到 36 个不等,最多的是 10 月 7 日。我会用手机上的 Claude App 连到 Oracle 服务器上的 Claude Code,用中文交代要做什么。
七个关键决定
1. 公开页面全部静态
Supabase 免费项目闲置一周会暂停,云服务也会出问题。公开页面如果每次都向数据库请求数据,数据库一挂网站就跟着挂。所以读者看的页面全部在构建时就生成好,Supabase 只负责留言和后台这些“额外的功能”;留言加载失败时,只显示“留言暂时无法加载”,文章照常可以看。
2. 文章放在 Git,一篇一个文件夹,各语言共用 slug
每篇文章一个文件夹,里面每种语言一个 Markdown 文件,例如 okx-review/zh-hant.md、okx-review/en.md。网址只差语言前缀,所以语言切换和 hreflang 不需要对照表。某个语言没有文件,就不生成那一页,也不拿其他语言顶替。slug 一旦上线就不改,真的要改就设置 301 跳转。
3. 规则写进数据结构,不靠记性
每篇文章的 frontmatter(标题、描述、主题、日期等字段)都有格式检查:一定要属于一个主题、描述不能超过 160 字、翻译要写明从哪个语言翻译而来以及原文的日期。不符合就构建失败。这次 12 篇评测上线前,就有一篇英文描述超过 160 字,被拦下来改短才上线。
4. 每种数据只有一个来源
- 交易所的费率、储备金、牌照、事件:放在一份数据文件里,每一条都附官方来源和核实日期;评分、比较表和每篇评测的数据框都读取同一份,数字不会互相矛盾。
- 理财利率和交易所排名:GitHub Actions 每天抓取,抓取失败就保留上一次的数据。
5. 一套登录,数据库权限是真正的边界
后台有三层:Cloudflare Access 先拦、程序再检查一次、数据库的行级权限(RLS)最后决定能看什么。网站程序和服务器都不持有能绕过权限的最高权限密钥。
6. 翻译是规则,不是额外工作
繁中定稿后,简中、英文(加密货币文章再加西班牙语)按固定流程生成:英文和西班牙语直接从繁中翻译,简中先按用词对照表转换再润色。翻译版记录原文的更新日期,原文改了、翻译没跟上,构建时会提醒。
7. 给 AI 的权限:看影响,不看指令
我看不懂代码,不可能逐条批准指令。规则是按“这件事会造成什么影响”决定要不要问我:一般的修改和部署直接做;发布我没看过的内容、改正式环境的设置要由我决定;删除数据、改数据库则是开工前说明一次范围、风险和备份。细节见《看不懂代码也能建网站》。
一篇文章从写到上线
- 定题目:主题和角度由我决定,Claude Code 根据内容规划提出建议。
- 写繁中初稿:每个数字附官方来源和日期,我自己的经验和截图由我提供。
- 润色:用多语言润色规则去掉翻译腔和 AI 套话,不增减事实。
- 自查清单:关键词、结构、来源、内部链接、FAQ、分享图逐项检查,结果汇报给我。
- 预览:草稿推送到 preview 分支,我在预览网址上看。
- 定稿后翻译:我说定稿,Claude Code 生成其他语言版本,四语一起发布。
- 上线后记录:SEO 的修改记录到 SEO Monitor,7、14、28 天后看效果。
SEO 和 AI 搜索的基本功
- 结构化数据:网站与组织(WebSite、Organization)、文章(BlogPosting)、面包屑、FAQ、主题页的文章列表(CollectionPage、ItemList)。
- sitemap:一份扁平的
/sitemap.xml,每个网址的更新日期来自文章本身,列表页取最新一篇的日期。 - RSS:每种语言一份。
- llms.txt:从已发布的文章自动生成,供 AI 搜索引擎读取。
- 多语言:hreflang 只列出实际存在的语言版本。
- 监控:Search Console、GA4、PageSpeed 和收录状态由独立的 SEO Monitor 每天收集,Claude Code 可以直接查询。
刻意没用的东西
| 没用 | 原因 |
|---|---|
| 公开页面走服务器端渲染 | 数据库或服务挂掉时,公开站会跟着挂 |
| 用数据库存文章、网页编辑器 | 单一作者用 Claude Code 写 Markdown,Git 已经提供版本与审稿 |
| 后台写回 Git | 双向同步容易出错,后台只读 |
| 魔法链接(Email)登录 | 免费方案的发信额度太低 |
| 留言支持 HTML 和自动链接 | 有 XSS 与垃圾链接风险,纯文本就够 |
| 滚动动画库 | 文章站不需要,接管滚动会损害阅读体验 |
| 从 CDN 加载前端库 | 全部打包,不依赖外部服务 |
| 备份放在 Git 或服务器本地 | repo 会越来越大,服务器被回收就一起消失 |
| 各语言不同 slug | 需要对照表,每个翻译都变成特殊情况 |
现在的规模
| 项目 | 数量(2026 年 10 月 11 日) |
|---|---|
| commit | 190 个 |
| 已发布文章 | 27 篇 × 繁中、简中、英文,22 篇另有西班牙语 |
| 主题 | 美股投资、加密货币、信用卡与银行(AI 创业筹备中) |
| 每天自动更新 | 理财利率、交易所排名 |
| 自动测试 | 204 项 |
更多文章在 AI 创业主题页。
常见问题
Jason Finance 用什么技术搭建?
网站框架是 Astro,公开页面全部预先生成为静态网页,部署在 Cloudflare Workers;文章是 GitHub 里的 Markdown 文件;登录、留言和后台数据用 Supabase;一台 Oracle 的免费服务器运行 Claude Code 和每日备份。
为什么公开页面要全部做成静态网页?
Supabase 免费项目闲置一周会暂停,云服务也可能出问题。公开页面如果每次都要向数据库请求数据,数据库一出事网站就跟着挂;静态页面不依赖数据库,读者照样能看到文章。
从零到上线花了多久?
第一个 commit 是 2026 年 10 月 2 日,10 月 4 日第一批文章以三种语言发布,到 10 月 11 日累计 190 个 commit、27 篇文章各有繁中、简中、英文版,其中 22 篇另有西班牙语版。
多语言网站的网址怎么设计?
每篇文章一个文件夹,各语言共用同一个 slug,网址只差语言前缀,例如 /zh-hant/okx-review/ 和 /en/okx-review/。某个语言没有文件就不生成那一页,不拿其他语言顶替。
没有后台编辑器,文章怎么发布?
文章是 Markdown 文件,Claude Code 改好后 push 到 GitHub 的 main 分支,Cloudflare 自动构建并部署。另一个 preview 分支会生成包含草稿的预览网址,先给我看过再发布。
延伸阅读
- 看不懂代码也能建网站:我用 Claude Code + GitHub + Cloudflare 低成本搭建 Jason Finance 的方法与成本我看不懂代码,Jason Finance 是用 Claude Code、GitHub、Cloudflare Workers 和 Supabase 免费方案搭起来的。整理整套架构、每个服务的用途与费用、我怎么给 AI 权限,以及这种做法的限制。
- Git 可以 push,Claude Code 却读不到 GitHub Issues:SSH 与 GitHub API 权限的区别Claude Code GitHub Issues 读不到,但 git push 正常?SSH key 只授权 Git 传输,Issues 和 PR 要另外的 API 认证。用 gh CLI 登录、确认权限、保护 token,并把 Issue 串成 PR 流程。
- 一台主机运行多个 Claude Code Remote Control:Linux user、systemd 与 git worktree 分工Claude Code 多个 Remote Control 运行在同一台主机:信任边界不同就分 Linux user,每个环境一个 systemd service,同一个 repo 的开发和写文章用 git worktree 分开,并说明 --spawn=worktree 的限制。

留言
使用 Google 登录即可留言。留言“不会”使用您的 Google 头像或姓名,对外显示的昵称是系统随机生成的代号,以保护您的隐私。
登录即表示你同意本站的隐私政策。