Cloudflare × Claude Code
zdtthaikovsky.org
写给赵德涛 · 进来就能开工

Cloudflare 接进 Claude Code
然后让它替你把网站建起来

你的起点跟别人不太一样:账号、域名、解析、证书都已经给你备好了。你不用注册、不用买域名、不用改 NS、不用备案、不用花钱。接受一封邀请邮件,就能直接跳到「写代码 → 上线」这一步。

从第 1 章到看见自己的站跑在 你起的名字.zdtthaikovsky.org 上,大约 30 分钟。第 8 章开始是真正好玩的部分,前面都是铺路。

§你现在的起点

Leo 把你加进了他的 Cloudflare 账号,并且把 zdtthaikovsky.org 这个域名放在里面给你用。翻译成人话:

🎁
域名已经就绪

解析权已经在 Cloudflare 手里,状态 Active。你想要多少个子域名就有多少个——blog.demo.api. 随你起,全部免费、全部自动 HTTPS。

🌍
全球托管免费用

东西放上去自带 CDN、自带证书、自带防 DDoS,全球 300 多个节点。个人项目基本花不到钱。

🔌
Claude 能直连这个账号

接上 MCP 之后,Claude 能直接看见账号里有什么、建数据库、查线上日志,不用你去后台一个个点。

🚀
目标是一句话上线

「帮我把这个项目部署到 Cloudflare,绑到 demo.zdtthaikovsky.org」——剩下的它自己干完。

先分清两个东西,后面就不会迷路:
MCP 是让 Claude 看得见、查得到、改得动这个账号的一根线,它负责「知道账号里有什么、出错了去哪查」。
wrangler 是 Cloudflare 的官方命令行,它负责「把你本地的代码真的传上去」。
部署这个动作永远是 wrangler 干的,MCP 干不了。两个都配好才是完整体验。

01接受邀请,进入账号

邮箱里会有一封来自 Cloudflare 的邀请邮件,标题大致是 「You have been added to an account」 或中文的「您已被添加到账户」。

  1. 点邮件里的 Accept / 接受找不到就翻垃圾箱,Cloudflare 的信偶尔被误判。也可以直接去 dash.cloudflare.com,登录后在右上角看有没有待处理的邀请。
  2. 用被邀请的那个邮箱注册或登录如果你还没有 Cloudflare 账号,它会让你就地设个密码把账号建起来——必须用收到邀请的那个邮箱,换一个就对不上了。
  3. 验证邮箱没验证的账号很多功能是灰的,别跳过。
  4. 开两步验证右上角头像 → My Profile → Authentication → Two-Factor Authentication。这个账号里有别人的线上服务,被盗是连坐的,麻烦花两分钟开一下。
  5. 确认你看到了正确的账号登录后左上角有账号切换器。你应该能看到一个不是你自己名字的账号(Leo 的账号),点进去,域名列表里有 zdtthaikovsky.org,就对了。
  6. 记下 Account ID随便点进一个产品页,右侧栏能看到一串 32 位的十六进制,那是 Account ID。后面配自动部署要用,先复制到备忘录里。
如果你本来就有 Cloudflare 账号:接受邀请之后,你的账号切换器里会同时存在「你自己的账号」和「Leo 的账号」两个。后面每一步——网页操作、MCP 授权、wrangler 登录——都要留神当前选的是哪个,选错了不报错,只是东西建到了另一边,找半天找不着。这是这份教程里最容易浪费时间的一件事,第 13 章还会再提一次。

02账号里有什么,以及几条规矩

这是个共用账号,进去之后你会看到不止你的东西。花一分钟建立正确的认知,比之后误删了再补救省事得多。

你看到的域名

域名是谁的你能干什么
zdtthaikovsky.org给你的随便玩。子域名随便起,站随便建,删了重来都行
leolee0812.siteLeo 的主力域名只看,别动
saveme505.helpLeo 的私人站只看,别动
openfde.onlineLeo 的备用域名只看,别动

三条规矩

  • 只在 zdtthaikovsky.org 下面折腾。建 Worker、加 DNS 记录、绑域名,全部限定在这个域名里。看到别的域名下有 DNS 记录、Worker、页面规则,路过就好。
  • 给自己的东西起带前缀的名字。Worker 名字建议统一加个 zdt- 前缀,比如 zdt-blogzdt-api。这样账号里一眼能看出哪些是你的,你自己删起来也不会手抖删错。
  • 删东西之前多看一眼。Cloudflare 的删除大多没有回收站。删 Worker、删 D1 数据库、删 R2 桶,删完就没了。看清楚名字再点。

你有哪些权限

你拿到的是 Administrator(管理员)角色:建 Worker、改 DNS、绑域名、开 D1 / R2 / KV、看日志——教程里的每一步你都做得了。

够不到的只有两类:账单相关(升级套餐、绑卡、看发票)和成员管理(拉人、改别人权限)。这两类是 Super Administrator 才有的。所以如果你点某个按钮发现是灰的、或者提示权限不足,八成就是撞上这两条了,找 Leo 就行,不是你操作错了。

额度是全账号共享的。Workers 免费版每天 10 万次请求,这个数是整个账号加起来算的,不是每人一份。正常写写站、练练手完全用不完,但别写死循环、别搞压测——你把额度打爆,Leo 的站也会跟着一起 429。

03装好 Claude Code

已经在用的话跳到第 4 章。没装的话:

终端 · 安装(macOS / Linux)
curl -fsSL https://claude.ai/install.sh | bash

Windows 建议装在 WSL2(Ubuntu)里,体验和 macOS 一致;纯 Windows 下 wrangler 和整条 Node 工具链的坑会多不少,不值得跟它较劲。

装完在项目目录里敲 claude 启动,第一次会让你登录 Anthropic 账号。顺手确认一下 Node 版本,Cloudflare 的工具链要 Node 20 以上

终端 · 检查环境
node -v      # 要 v20 或更高,低了去 nodejs.org 装 LTS 版
claude --version

04先搞懂 MCP 是什么

MCP 全称 Model Context Protocol(模型上下文协议),Anthropic 定的一个开放标准。一句话解释:

MCP 就是给 AI 装「插件」的统一插座。以前你要让 AI 操作某个平台,得自己写脚本、自己包 API;现在平台方(比如 Cloudflare)自己提供一个 MCP 服务器,你在 Claude Code 里连上、授权一次,Claude 就获得了一整套操作那个平台的能力。

具体到 Cloudflare,连上之后 Claude 就能做这些事,不用你复制粘贴任何东西给它

  • 列出账号下所有 Worker、KV 命名空间、D1 数据库、R2 存储桶
  • 直接对 D1 数据库执行 SQL(建表、查数据、改数据)
  • 拉线上 Worker 的实时日志和报错,帮你定位 500 到底是哪一行抛的
  • 查 Cloudflare 官方文档的最新写法(这点比它凭记忆瞎写靠谱得多)
  • 看 CI 构建记录,构建失败时直接读构建日志
再强调一次分工:wrangler 像你的手,能把东西搬上去;MCP 像眼睛和嘴,能看见服务器上现在是什么样、能问清楚官方文档怎么说。只有手没有眼睛,AI 就只能闭着眼睛猜,猜错了它自己都不知道错在哪。

05把 Cloudflare MCP 接进 Claude Code

Cloudflare 官方提供的是 远程 MCP 服务器(Remote MCP)——不用在本地跑任何服务、不用装 Docker、不用手工填 API Token,连上去走浏览器授权就行。

先接这三个就够

Cloudflare 一共开了十几个 MCP 服务器,不要一次全接——接太多会占掉 Claude 的上下文,反而变笨。刚上手接下面三个:

终端 · 在任意目录执行一次即可
# 1. 官方文档:让 Claude 写 Cloudflare 代码前先查文档,别凭记忆瞎编
claude mcp add --scope user --transport http cf-docs https://docs.mcp.cloudflare.com/mcp

# 2. Workers 资源:列 Worker / 建 KV / 建 D1 / 建 R2 / 直接跑 SQL
claude mcp add --scope user --transport http cf-bindings https://bindings.mcp.cloudflare.com/mcp

# 3. 可观测性:拉线上日志和报错,排查线上 bug 全靠它
claude mcp add --scope user --transport http cf-observability https://observability.mcp.cloudflare.com/mcp

--scope user 的意思是装在你的用户级配置里,以后在任何项目目录打开 Claude Code 都能用,不用每个项目重接一遍。

全部可选的服务器

需要哪个再加哪个,命令格式完全一样,只换名字和 URL:

用途名字建议URL
官方文档检索 推荐cf-docshttps://docs.mcp.cloudflare.com/mcp
Workers 资源与绑定 推荐cf-bindingshttps://bindings.mcp.cloudflare.com/mcp
日志 / 分析排障 推荐cf-observabilityhttps://observability.mcp.cloudflare.com/mcp
全量 API(2500+ 接口,含 DNS)cf-apihttps://mcp.cloudflare.com/mcp
CI 构建记录与构建日志cf-buildshttps://builds.mcp.cloudflare.com/mcp
GraphQL 分析数据cf-graphqlhttps://graphql.mcp.cloudflare.com/mcp
无头浏览器抓网页 / 截图cf-browserhttps://browser.mcp.cloudflare.com/mcp
全球网络流量情报 Radarcf-radarhttps://radar.mcp.cloudflare.com/mcp
审计日志cf-auditlogshttps://auditlogs.mcp.cloudflare.com/mcp
AI Gateway 调用记录cf-ai-gatewayhttps://ai-gateway.mcp.cloudflare.com/mcp
想让 Claude 直接帮你加 DNS 解析记录?再加一个 cf-api(全量 API 那个)。cf-bindings 只管 Workers 相关的存储和计算资源,动不了 DNS。不过绑子域名有更省事的办法,见第 9 章,多数时候你用不着 cf-api

接错了怎么删

终端
claude mcp list                            # 看已经接了哪些、连上没有
claude mcp remove cf-radar --scope user    # 删掉不想要的

06授权:这一步最容易选错账号

上一步只是「把线插上了」,还没「通电」。第一次用之前必须走一次 OAuth 授权。

  1. 启动 Claude Code在任意项目目录敲 claude
  2. 输入 /mcp会列出你刚接的那几个服务器,状态多半是 needs authentication(需要认证)。
  3. 选中要授权的那个,回车Claude Code 会自动拉起浏览器,打开 Cloudflare 的授权页。
  4. ⚠️ 在浏览器里选对账号如果你名下有多个 Cloudflare 账号,授权页会让你选择要授权哪个账号一定要选 Leo 那个账号(不是你自己新建的那个空账号)——zdtthaikovsky.org 在它下面。选错了后面 Claude 会告诉你「账号里什么都没有」,你会以为是没连上,其实是连到了空账号。
  5. 确认权限,点 Approve页面会列出它要哪些权限(读 Worker、写 KV、读日志……),确认后回到终端。
  6. 状态变 connected 就成了每个 MCP 服务器都要单独授权一次,三个就走三遍。之后长期有效,不用天天重来。

验证它真的通了

回到 Claude Code 的对话里,直接用大白话问它:

Claude Code 对话框
用 Cloudflare MCP 列一下这个账号下现有的 Worker,
以及 zdtthaikovsky.org 这个域名下已经绑了哪些子域名

如果它能报出 zdt-cf-guide 这个 Worker(就是你正在看的这个站)和 zdtthaikovsky.org,说明整条链路通了,而且账号选对了。如果它说什么都没有,回去重新授权,账号选错了。

连不上的排查顺序:claude mcp list 看状态;② 确认 URL 结尾是 /mcp 没写成 /sse;③ 浏览器授权页一直转圈,多半是网络问题,挂个代理再试;④ 账号选错了,claude mcp remove 删掉重接一遍即可。

07接上之后,具体能让它干什么

下面这些话可以直接原样发给 Claude Code,它会自己调 MCP 完成:

你说的话它背后干的事
「这个账号里都有哪些 Worker,各自绑了什么域名?」调 workers_list,把结果整理成表
「建一个叫 zdt-blog-db 的 D1 数据库,建张 posts 表」d1_database_create + 直接执行建表 SQL
「我那个 Worker 刚才报 500,帮我看看日志」拉 observability 日志,定位到具体报错
「Cloudflare 的 Cron 定时任务怎么写?给我最新写法」查官方文档,而不是凭记忆编一个过时 API
「建个 R2 桶叫 zdt-uploads,绑到这个 Worker 上」r2_bucket_create + 改 wrangler 配置
「把 blog.zdtthaikovsky.org 指到这个 Worker」改 wrangler 配置里的 routes,或走 cf-api 加 DNS
它做不到的事,心里有数:MCP 不负责把你本地的代码传上去。「部署」这个动作永远是 wrangler deploy 干的(Claude 会在终端里替你敲,但那是命令行,不是 MCP)。所以下一章我们先把 wrangler 配好。

08实战:十分钟上线你的第一个站

目标:把一个纯静态网页(手写的 HTML/CSS/JS,或者 Vite、Next、Astro 构建出来的产物)变成一个真实可访问的网址。

第一步:登录 wrangler

终端
npx wrangler login    # 拉起浏览器授权,点 Allow
npx wrangler whoami   # 看看你能操作哪些账号

npx wrangler 而不是全局安装,这样每个项目用自己 package.json 里锁定的版本,不会因为版本漂移出奇怪的问题。

多账号必踩的坑,提前解决:whoami 如果列出不止一个账号,那么 wrangler deploy 会直接报错,说「你有多个账号,请指定用哪个」。解决办法是在 wrangler.jsonc 里显式写死 Account ID(就是第 1 章让你记的那串):
"account_id": "你记下的那串32位"
写死之后就再也不会问了,也不会有把站建到自己空账号里的风险。强烈建议一开始就写上。

第二步:项目结构

最小可用的静态站就三个文件:

目录结构
zdt-blog/
├── public/
│   └── index.html      # 你的网页放这里
├── package.json
└── wrangler.jsonc      # Cloudflare 的部署配置
wrangler.jsonc
{
  "name": "zdt-blog",
  "account_id": "你的 Account ID",
  "compatibility_date": "2026-08-19",
  "assets": {
    "directory": "./public",
    "not_found_handling": "single-page-application"
  }
}

assets 这一段是关键,意思是「把 public 目录当静态资源直接对外服务」。not_found_handling 设成 single-page-application,找不到的路径会回落到 index.html——React/Vue 这类前端路由必须这么配,否则刷新子页面会 404。

name 记得带 zdt- 前缀,这是第 2 章说的规矩。

第三步:本地预览 + 部署

终端
npx wrangler dev      # 本地起服务,浏览器开 localhost:8787 看效果
npx wrangler deploy   # 一条命令上线

部署完终端会直接打印出网址。到这里你已经有一个真实上线、全球可访问、HTTPS 配好的网站了。下一章把它换成好看的域名。

用 Claude Code 的话,这一整章其实是一句话:
「把当前这个项目部署到 Cloudflare Workers,用 static assets 的方式,wrangler 配置也帮我写好,account_id 用 xxx」——它会建配置、跑命令、遇到报错自己改。你要做的只是wrangler login 一次,把授权给它。

09绑上你自己的子域名

这是最爽的一步,也是最简单的一步。域名的解析权已经在 Cloudflare 手里了(这就是 Leo 帮你省掉的那一大坨活儿),所以绑子域名只要改配置文件加两行:

wrangler.jsonc · 加一段 routes
{
  "name": "zdt-blog",
  "account_id": "你的 Account ID",
  "compatibility_date": "2026-08-19",
  "assets": { "directory": "./public" },

  "routes": [
    { "pattern": "blog.zdtthaikovsky.org", "custom_domain": true }
  ]
}

然后再 npx wrangler deploy。就这样——不用去 DNS 后台手动加 CNAME 记录custom_domain: true 会让 Cloudflare 自动建好解析、自动签发证书。等一两分钟证书就绪,https://blog.zdtthaikovsky.org 就能打开了。

子域名要多少有多少,而且互不干扰。blog. 一个 Worker、api. 另一个 Worker、demo. 第三个——各自独立部署、独立代码、独立数据库,全部免费。这就是「一个域名养一堆项目」的玩法,你可以放心地一个想法建一个站。
唯一别占的是根域名。zdtthaikovsky.orgwww.zdtthaikovsky.org 现在指向你正在看的这份教程站。你要是把自己的 Worker 绑到根域上,这个站就被顶掉了。用子域名,随便起,别碰这两个就行。

10加后端:Cloudflare 全家桶怎么用

静态站上线之后,真正的乐趣是加后端。Cloudflare 的做法叫 绑定(bindings):在配置文件里声明你要用哪个资源,代码里就能通过一个变量直接访问,不需要连接串、不需要密码、不需要装 SDK

Workers:写后端接口

在项目根目录建 src/index.js,配置里加 "main": "src/index.js"

src/index.js
export default {
  async fetch(request, env) {
    const url = new URL(request.url);

    // 一个最简单的 API 接口
    if (url.pathname === "/api/hello") {
      return Response.json({ msg: "你好,我是跑在全球边缘节点上的后端" });
    }

    // 其他路径交给静态资源处理
    return env.ASSETS.fetch(request);
  }
};

D1:SQLite 数据库

终端 + 配置 + 代码
# 1. 建库(也可以直接让 Claude 通过 MCP 建,更省事)
npx wrangler d1 create zdt-blog-db

# 2. 把它返回的 database_id 填进 wrangler.jsonc:
#    "d1_databases": [{ "binding": "DB", "database_name": "zdt-blog-db", "database_id": "xxx" }]

# 3. 代码里直接用,不需要连接串、不需要密码:
#    const { results } = await env.DB.prepare("SELECT * FROM posts").all();

其余几件套

🗄️
KV

键值存储。适合放配置、缓存、会话。读极快,写有几秒延迟——不要拿它当强一致数据库用

🪣
R2

对象存储,放图片、视频、备份。接口兼容 S3,流量出站免费。注意它需要账号级绑卡才能开,你没权限,要用先找 Leo。

Cron Triggers

定时任务。配置里写一条 cron 表达式,Worker 就会定点自己醒来跑一次。适合每日抓取、定时推送。

🧠
Workers AI

直接在边缘跑开源模型(文本、图像、向量),按调用计费,每天有免费额度,不用自己配 GPU。

🔗
Durable Objects

有状态的对象,做多人协作、聊天室、实时同步用。搭配 WebSocket 很顺手。

🛡️
Turnstile

免费的人机验证,替代 reCAPTCHA。前端加个组件,后端校验一下 token,防刷立刻上线。

这一章最好的用法是:不要背。直接跟 Claude 说「给我这个 Worker 加一个 D1 数据库,建一张留言表,写一个 POST 接口存留言、GET 接口读留言」,它会调 MCP 建库、改配置、写代码、跑部署,你负责验收。

11让它 push 一次就自动部署

手动敲 wrangler deploy 久了会烦,而且容易忘。正确姿势是接 GitHub Actions:你只管 push 到 main,剩下自动完成。

  1. 准备一个 API TokenCloudflare 后台 → 右上角头像 → API Tokens → Create Token,选 Edit Cloudflare Workers 模板。创建时注意 Account Resources 选的是 Leo 那个账号,别选成你自己的。生成后立刻复制保存,页面关掉就再也看不到了
  2. 写进 GitHub 仓库的 Secrets仓库 → Settings → Secrets and variables → Actions → New repository secret,建两条:CLOUDFLARE_API_TOKEN(刚才那串)和 CLOUDFLARE_ACCOUNT_ID(第 1 章记下的那串)。
  3. 加工作流文件把下面这段存成 .github/workflows/deploy.yml
  4. push 到 main去仓库 Actions 页签看它跑,绿了就是上线了。
.github/workflows/deploy.yml
name: Deploy to Cloudflare Workers

on:
  push:
    branches: [main]
  workflow_dispatch: {}

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 22
      - run: npm install
      - uses: cloudflare/wrangler-action@v3
        with:
          apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
          accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
          command: deploy
坑:wrangler-action@v3 要求项目里的 wrangler 是 4.x 及以上。如果 package.json 里还锁着 "wrangler": "^3.x",构建会报一堆莫名其妙、指向完全无关地方的错。升上去就好。
构建失败的时候,把 cf-builds 那个 MCP 接上,直接问 Claude「我最近这次构建失败了,读一下日志告诉我为什么」,它能直接拉到构建日志。

12速查表与免费额度

免费版对个人项目的实际感受是:只要你不是做爆款产品,基本一辈子花不到钱。但记住这些额度是整个账号共享的,不是你一个人的。

产品干什么用免费额度(大致)
Workers跑你的代码,静态站和后端接口都靠它10 万次请求/天,单次 10ms CPU 时间
Static Assets托管 HTML/CSS/JS/图片带宽和请求不额外计费
D1SQLite 数据库,存结构化数据5GB 总量,单库 500MB;读写有每日额度
KV键值缓存,存配置和会话1GB 存储,10 万读/天,1000 写/天
R2 需账号绑卡对象存储,图片视频文件10GB 存储/月,出站流量全免费
Durable Objects有状态服务、WebSocket、协作免费版可用(SQLite 后端)
Workers AI边缘跑开源模型每天有固定免费调用量
Cron Triggers定时任务免费,最多 5 条触发器
Turnstile人机验证完全免费,100 万次/月
Queues消息队列,异步任务需付费版,你开不了
Pages老一代静态托管新项目别用了,官方在往 Workers 迁
额度数字 Cloudflare 会调整,官方定价页 为准。想省事就直接问 Claude:「查一下 Cloudflare Workers 免费版现在的额度」,它会走 cf-docs MCP 拿最新的。
免费版最硬的一条限制是 CPU 时间 10ms。它算的是纯计算时间,等数据库和外部 API 返回的时间不算在内。所以普通网站、API、爬虫全都没问题,但别在 Worker 里做大图片处理、视频转码、跑复杂算法,那种会直接超时。

13会浪费你半天的十个坑

都是实打实踩过的,提前看一眼能省很多时间。前三条是你这种「共用账号」身份特有的。

  1. 账号选错,是你最可能遇到的问题。MCP 授权页、wrangler login、创建 API Token、网页 dashboard——四个地方都会让你选账号。选成你自己的空账号时不会有任何报错,只是东西建到了另一边,你会对着空列表怀疑人生。根治办法:在 wrangler.jsonc 里写死 account_id
  2. 按钮是灰的,多半不是你的错。账单、升级套餐、加成员这些是 Super Administrator 专属,你是 Administrator,够不着。撞上了找 Leo,别在那儿反复试。
  3. R2 要账号级绑卡才能开。不绑卡这个产品对你完全不可见,会让你以为是自己配置错了。要用先问 Leo 开没开。
  4. 绑域名只能绑 zdtthaikovsky.org 下面的。别的域名是 Leo 的线上服务,绑上去等于把人家的站顶掉。根域和 www 也别占,那是这份教程站。
  5. 免费版不能对外发邮件。Workers 里 fetch 不到 SMTP 端口,Email Routing 只能收和转发。要发邮件走 Resend / Postmark 这类第三方 API。
  6. 脚本大小上限 3MB(压缩后)。塞了大依赖(整包的图表库、Puppeteer 之类)会直接部署失败。解决办法是把大资源丢 R2 或走 CDN,别打进 bundle。
  7. wrangler 必须 4.x。配 GitHub Actions 时用 wrangler-action@v3 搭 3.x 的 wrangler,报错信息会指向完全无关的地方。
  8. Actions 的 paths-ignore 别顺手忽略 **/*.md如果你的站内容本身就是 Markdown 写的,这条会导致「改了内容 push 上去却不部署」,排查半天。
  9. 缓存有时候咬人。部署完发现页面没变,先强刷(Cmd+Shift+R / Ctrl+F5),还不行去 Cloudflare 后台 Caching → Purge Everything。给静态资源加内容哈希是根治办法。
  10. 别把 API Token 提交进仓库。Cloudflare 会扫描公开仓库并自动吊销泄露的 Token,但在被吊销之前,那把钥匙能动的是整个账号,包括 Leo 的东西。Token 一律进 GitHub Secrets 或本地 .dev.vars(记得写进 gitignore)。

14可以直接抄的提示词

把这些原样发给 Claude Code,配合已经接好的 MCP,基本就是「说完等结果」。记得把 Account ID 换成你自己记下的那串。

① 从零建一个站并上线

复制到 Claude Code
我要做一个个人主页,纯静态就行,深色风格,放我的简介、项目列表和联系方式。
做完部署到 Cloudflare Workers,用 static assets 方式,
Worker 名字用 zdt- 开头,account_id 写死成 xxx,
然后绑到 me.zdtthaikovsky.org 这个子域名上。
配置文件里的注释用中文写。

② 给现有项目加后端和数据库

复制到 Claude Code
给这个项目加一个留言板功能:
用 Cloudflare D1 建库建表(通过 MCP 建,别让我手动去后台点),
写好 POST 提交和 GET 读取两个接口,前端加个简单的表单,
加上 Turnstile 人机验证防刷,最后部署上去。

③ 线上出问题时排查

复制到 Claude Code
我的 Worker 叫 zdt-xxx,刚才访问返回 500。
用 Cloudflare 的 observability MCP 拉最近的日志,
定位到具体是哪一行出的问题,然后直接改掉并重新部署。

④ 接 GitHub 自动部署

复制到 Claude Code
把这个项目接上 GitHub Actions 自动部署到 Cloudflare:
建仓库、写 workflow 文件、告诉我需要去 GitHub 配哪几个 Secret,
以后我 push 到 main 就自动上线,不用再手动 deploy。

⑤ 让它先查文档再动手

复制到 Claude Code
先用 cf-docs MCP 查一下 Cloudflare 官方现在推荐的写法,
确认清楚 API 没变之后再动手写,别凭记忆写过时的用法。
最后一条最值钱。Cloudflare 的 API 这两年改得比较快,模型记忆里的写法经常是旧的。养成「让它先查 cf-docs 再写」的习惯,能省掉一大半来回调试。

以后想自立门户

等你玩顺了,大概率会想要一个完全属于自己的账号和域名。这一节是那时候看的,现在可以跳过。

自己注册账号

dash.cloudflare.com/sign-up 用另一个邮箱注册,选 Free 计划。整套流程跟这份教程完全一样,唯一多出来的是下面这步——把域名接进去,也就是 Leo 已经帮你做掉的那部分。

把域名接进 Cloudflare

本质是把域名的解析权从注册商交给 Cloudflare。交出去之后,DNS、CDN、证书、子域名才全部归 Cloudflare 管。

  1. 添加站点Dashboard 左上角 Add a domain,输入域名(只填 example.com,不要带 www 和 https),选 Free 计划,它会自动扫描你现有的 DNS 记录。
  2. 拿到两个 NS 地址形如 josephine.ns.cloudflare.com每个账号拿到的这一对都不一样,一定用你自己页面上显示的那一对。
  3. 回注册商改 NS登录你买域名的地方,找到「DNS 服务器 / Nameservers」,把原来的两条删掉换成 Cloudflare 给你的那两条。
  4. 等生效快则十几分钟,慢则几小时(极端 24 小时)。后台状态从 Pending 变绿色 Active 就成了。
改 NS 最大的坑:切换之后,注册商那边原来的解析记录全部失效。如果域名上原本挂着邮箱(MX 记录)或别的服务,务必在切换前把那些记录先在 Cloudflare 里补建一遍,否则邮件会直接断掉。新买的空域名没这个问题。

买域名去哪

.org / .com 一年几十到一百块。推荐 SpaceshipNameSilo——便宜、改 NS 方便。国外注册商 + Cloudflare 托管的组合不需要 ICP 备案,这也是为什么这条路适合个人练手。

另外,不买域名也能玩:Cloudflare 免费送你一个 你的用户名.workers.dev 子域,部署上去就是 项目名.你的用户名.workers.dev,HTTPS 一样有,功能一模一样,只是网址长一点。