关于 lovable-cloud-migration
lovable-cloud-migration 是将 Lovable Cloud 项目迁移到自有 Supabase 的 Skill,主要采用同一 Lovable 项目迁移路径。它涵盖数据、存储、函数、身份验证决策与迁移核验,并提供新项目迁移备选方案。
主要功能
- 01迁移前盘点项目组件
- 02导出并恢复数据库数据
- 03迁移存储文件与边缘函数
- 04选择密码重置或获批的哈希路径
- 05核验目标环境后再移除 Cloud
- 06提供新项目迁移备选路径
适用场景
- 01将 Lovable 应用迁移至自有 Supabase
- 02设置预发布与生产环境
- 03保留项目并更换 Cloud 后端
- 04不迁移而创建数据备份
MCP 相关
该 Skill 建议使用 Lovable MCP 盘点项目并检查源端,采用可选密码哈希保留路径时则需要它。它还介绍用于目标端自动化的 Supabase MCP;没有 MCP 时也可通过人工检查完成迁移。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ carolmonroe22/ lovable-cloud-to-supabase-migration --skill lovable-cloud-migration安装后在 Claude Code 中输入/lovable-cloud-migration确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
LICENSECHANGELOG.mdREADME.mdreferences/migrate-storage-function.mdexport-methods.mdmigration-steps.mdtroubleshooting.mdsame-project-path.mdfresh-project-path.md详细介绍
Lovable Cloud 迁移到自有 Supabase
由 Carol Monroe 创建——Lovable Champion 和 Supabase SupaSquad 成员 此次完整迁移已于 2026-07-06 在真实端到端迁移中得到验证(12 张表、 237 行、23 位用户、40 个存储文件、5 个边缘函数、2 个定时任务)。通过 Lovable MCP 访问密码哈希的能力已于 2026-08-31 重新检查,未暴露任何哈希值。
v4.1.2 变更内容(2026 年 8 月)
Lovable 的官方文档指出,用户密码不会以可用形式导出,并建议为迁移后的用户提供密码重置流程。因此,此技能将密码重置作为默认路径。
原生导出仍是数据库的主要来源,但绝不能将其描述为可以保留密码的导出方式。
如果 Lovable MCP query_database 能够读取受支持 Cloud 项目中的
auth.users.encrypted_password,则仍可使用可选的高级路径。2026-08-31 的布尔值能力检查已成功,此前也已于 2026 年 3 月和 7 月验证了完整的保留哈希流程。此路径为可选方案,涉及敏感信息,且可能发生变化,因为 Lovable MCP 仍处于研究预览阶段。
v4 变更内容(2026 年 7 月)
Lovable 为 Cloud 推出了官方的 Export、Pause 和 Remove 按钮(Cloud 标签页 > Overview > Advanced settings)。Lovable Cloud 不再是永久性的。 这彻底改写了迁移指南:
- 旧说法“Cloud 无法断开连接”已过时。现在,你可以导出数据库、从同一个项目中移除 Cloud,并连接自己的 Supabase。
- 原生导出文件(
pg_dump自定义格式备份)现已成为数据库的主要来源。不要假设它能保留可用密码。默认遵循官方重置流程,或在完成能力检查和安全确认后,明确选择高级 MCP 哈希路径。 - 旧版通过 MCP 将项目迁移到全新 Lovable 项目的 68 步流程,现在已成为备用路径,仅在原生导出无法满足需求时使用。
命名说明:此技能有意保留 lovable-cloud-migration 这个名称,以便 v4 替换任何早期安装的同名技能(其“Cloud 永久存在”的指导现已过时),而不是与之共存。如果此版本和旧版本不知何故同时存在,请以此版本为准——删除旧版本。
此技能的功能
将整个 Lovable Cloud 项目迁移到你自己的 Supabase:数据库架构、数据、RLS 策略、函数、触发器、序列、身份验证用户和身份、存储桶和文件、配置了正确 verify_jwt 的边缘函数、定时任务以及密钥清单。然后移除 Cloud,并将用户自己的 Supabase 连接到同一个 Lovable 项目。默认使用官方密码重置流程;如果高级 MCP 路径可用且已明确获准,则可以保留现有哈希。
决策点(始终从这里开始)
先询问用户的实际需求,然后选择相应路径:
| 用户的情况 | 路径 |
|---|---|
| “我的应用在我不工作时也会消耗额度” | 无需迁移。暂停 Cloud(Cloud 标签页 > Overview > Advanced settings)。完成。 |
| “我想备份 Cloud 数据” | 无需迁移。导出项目数据可以独立使用,每 24 小时一次,并继续在 Cloud 上构建。 |
| 准备在自有 Supabase 上运行,数据库 ≤ 5 GB | 同一项目路径(下文的主要路径):在现有 Lovable 项目上执行导出 + 身份验证方式选择 + 移除 + 连接。 |
| 数据库 > 5 GB、无法使用导出或导出失败,或者用户希望原样保留原始 Cloud 项目 | 全新项目路径(旧版备用方案):通过 MCP 完整迁移到新的 Lovable 项目。参见 references/fresh-project-path.md。 |
提醒用户:Export/Pause/Remove 按钮不消耗额度,只有 Agent 提示词会消耗额度。
为什么要迁移(合理的原因)
Lovable Cloud 是一款可靠的托管后端。只有当项目需要完整 Supabase 设置才能提供的功能时,迁移才有意义:
| 你想要…… | 为什么需要自己的 Supabase |
|---|---|
| 自定义身份验证邮件(发件人、设计、内容) | Cloud 使用 [email protected] 发送邮件 |
| 访问完整的 Supabase 控制台 | SQL 编辑器、扩展、日志、监控 |
| 使用服务角色密钥 | 管理操作和某些边缘函数 |
| 配置预发布环境和生产环境 | Cloud 每个项目只有一个数据库 |
| 长期拥有自己的基础设施 | 你的项目、你的组织、你的账单 |
如果这些情况都不适用,且用户对 Cloud 感到满意,就如实说明:无需迁移,目前通过“导出为备份”+“暂停”即可解决大多数顾虑。
前提条件
| 要求 | 用途 | 设置方法 |
|---|---|---|
| 已启用 Cloud 的 Lovable 账户 | 所有操作 | - |
| Supabase 账户 | 所有操作 | https://supabase.com |
| 项目已连接 GitHub | 所有操作(函数代码通过代码库迁移) | Editor > + menu > GitHub > Connect |
| Lovable MCP | 强烈建议用于清点和源端检查;使用可选的密码哈希保留方案时必需 | 在 Claude Code 中使用 /mcp,或前往 claude.ai Settings > Connectors - https://docs.lovable.dev/integrations/mcp-servers |
| Supabase MCP | 目标端自动化(创建项目、运行所有验证) | 内置于 Claude Code - https://supabase.com/docs/guides/getting-started/mcp |
| 带 zstd 的 pg_restore 16+ | 同项目路径的步骤 14 | macOS:brew install postgresql@18 |
GitHub CLI(gh) | 仅限新项目路径 | brew install gh + gh auth login |
| Supabase CLI | 可选——加快函数部署和存储上传 | https://supabase.com/docs/guides/getting-started |
适用于 Claude Code 和 claude.ai,也适用于 Cursor 等其他兼容 MCP 的 Agent。即使没有 MCP,同项目路径仍然可行——用户手动从 Cloud 面板读取计数,Claude 会引导其完成终端步骤。
选择迁移级别
开始前,先询问用户想选择哪个级别:
| 级别 | 适用人群 | 执行方式 |
|---|---|---|
| 引导式 | 首次迁移、不熟悉技术 | 解释每个阶段,继续前先确认,并展示当前操作 |
| 标准 | 熟悉 Supabase/Lovable | 确认关键决策,以最少的暂停执行各阶段 |
| 快速 | 经验丰富、以前迁移过 | 询问源端和目标端,然后执行所有操作,并在检查点报告 |
无论选择哪个级别,都会在相同的硬性检查点暂停:费用确认、第 7 阶段检查点以及“移除”操作。
关键信息
原生导出
- 格式:
pg_dumpv18 自定义格式,采用 zstd 压缩(源数据库为 Postgres 17)。 - 恢复需要使用基于 zstd 构建的
pg_restorev16+。Homebrew 提供的 libpq 构建版本不包含 zstd,即使版本号看起来没问题,也会报错 "does not support compression with zstd"。请使用postgresql@18(Trap 18)。 - Lovable 的文档指出,密码材料不会以可用形式导出。请将导出视为包含用户但不包含可用密码,并计划好密码重置,除非已完成并验证可选 MCP 路径。
- 支持的数据库流程中包含:架构和数据、RLS 策略、触发器、自定义函数、序列、cron 和存储元数据。请对照基线验证每个组件,因为导出规范可能会变化。
- 不包含:存储文件(实际字节数据)、边缘函数代码(位于代码库中)、边缘函数密钥值、Vault 密钥值(行会恢复,但使用旧项目密钥加密,无法跨项目恢复)。
- 导出内容会保存到项目自己的 Cloud 存储中,存储桶名称类似
database_export_06_07_26。移除 Cloud 前请先下载——移除 Cloud 后,该内容也会消失(Trap 17)。限制:5 GB,每 24 小时只能导出一次。 - “我们会给你发邮件”的提示不可靠。不要等邮件:请检查 Storage 中的导出存储桶(小型数据库约需 1 分钟)。
密码:官方默认方案与高级 MCP 路径
- 官方默认方案: Lovable 表示密码不会以可用形式导出。移除 Cloud 前,请构建并测试密码重置流程。
- 高级选项: 运行能力检查,只返回计数,绝不返回哈希。如果可以访问非空哈希,请说明这些值会经过 MCP/Agent 执行流程,取得明确批准,然后仅迁移必需的最少认证字段。
- 绝不要将哈希粘贴到聊天中、打印、提交到代码库或存储在普通项目文件夹中。登录测试后,请删除受保护的临时文件。
- 如果能力检查失败、Agent 无法保证对机密的安全处理,或者预期使用密码的用户缺少哈希,请为该用户采用重置流程。OAuth 和无密码用户可能确实没有哈希。不要擅自设置密码。
Lovable 端
- 连接自有 Supabase 后,Lovable Agent 可以向其部署边缘函数(已直接向 Agent 确认,且遵循 config.toml)。它无法设置边缘函数密钥——只有用户可以在 Supabase 控制台中设置。
LOVABLE_API_KEY是由系统管理的工作区密钥,独立于 Cloud。移除 Cloud 后它仍会保留。重新接线后,AI 功能仍可正常工作(Trap 25)。- 连接 Supabase 集成会自动重写
.env(填入正确的 URL 和密钥,无需手动编辑)。但它也可能会用模板覆盖src/integrations/supabase/client.ts,导致现代(TanStack)技术栈项目的 SSR 出现问题(Trap 23)。 - GitHub 同步是双向的。你在 Supabase 中删除的临时辅助函数,如果仍留在代码库中就会重新出现——请在所有地方都删除它们(Trap 24)。
- Remix 仍然无法用于迁移——它会继承 Lovable Cloud。
安全
.backup文件包含个人和认证数据,也可能包含敏感的凭据材料。请像对待密码一样处理:仅保存在本地,绝不要提交,并在迁移后删除。- 如果数据库密码在迁移期间出现在聊天、脚本或 AI 会话中,请在结束时轮换密码(Dashboard > Settings > Database)。
- 将任何迁移文件推送到公开代码库前,请扫描其中是否含有项目引用、密钥、电子邮件和个人数据。
严格顺序
1. EXPORT the database (button)
2. DOWNLOAD the export + the storage files ← they live inside Cloud
3. BUILD the new Supabase (restore, fix, upload, deploy)
4. AUTH test password reset, or explicitly run the MCP hash route
5. VERIFY the 12-count gate — ALL GREEN or stop
6. REMOVE Lovable Cloud ← only now, nothing before this is destructive
7. CONNECT your own Supabase to the same project
只有在替代方案已就绪并通过验证后,才能移除现有内容。第 6 步之前的每一步中,应用仍会在 Cloud 上运行,且不会受到改动。如果任何步骤失败,请停止并修复——在通过关卡前,Cloud 都是安全网。
同项目路径(主要路径)
完整的 33 步操作手册位于 references/same-project-path.md。 实际执行迁移时请阅读。流程如下:
| 阶段 | 步骤 | 进行的操作 | 需要人工参与的环节 |
|---|---|---|---|
| 1. 基线 + GitHub | 1-4 | 12 项计数清单、连接仓库、verify_jwt + 密钥映射 | 如果尚未连接 GitHub,则进行连接 |
| 2. 导出 + 下载 | 5-8 | 触发官方导出、在 Storage 中找到导出文件、下载文件、下载存储文件 | 点击导出、下载 |
| 3. 创建目标项目 | 9-12 | 创建 Supabase 项目、获取会话池连接字符串 | 确认费用 |
| 4. 恢复 | 13-16 | 支持 zstd 的 pg_restore、修复身份信息、确定身份验证方案、检查快照 | 批准高级哈希路径,或使用重置方案 |
| 5. 恢复后修复 | 17-21 | 重新创建 Cron + 排查孤立项、清除幽灵行、上传文件、重写 URL、处理序列 | - |
| 6. 函数 + 密钥 | 22-25 | 部署(CLI/MCP/Agent)、重新输入密钥、重新配置 AI、在所有位置删除临时辅助程序 | 输入密钥 |
| 7. 关卡 | 26-28 | 对照基线进行 12 类审计 + 测试身份验证路径 + 确认图像可打开 | 关卡决策 |
| 8. 移除 + 连接 | 29-33 | 移除 Cloud、连接自有 Supabase、修复集成覆盖问题、最后整理 | 点击移除 + 连接 |
必须遵守的停步条件(任何迁移都不能跳过)
- 创建 Supabase 项目(第 9 步)前,必须确认费用。
- 必须通过关卡(第 28 步):每项计数均为绿色,并通过选定的身份验证路径完成一次登录测试(MCP 保留原密码后使用原密码登录,或完成重置后登录),否则不得继续。Cloud 必须保留为安全保障。
- 移除是唯一具有破坏性的点击操作(第 29 步),必须始终由用户亲自操作,不得自动化,也不得在通过关卡前执行。
何时阅读哪些内容
| 情况 | 阅读 |
|---|---|
| 执行主要迁移 | references/same-project-path.md |
| 无法导出、数据库 > 5 GB,或必须保持原项目不变 | references/fresh-project-path.md |
| 选择/比较导出方法 | references/export-methods.md |
| 存储辅助函数(新项目路径) | references/migrate-storage-function.md |
| 症状需要修复 | references/same-project-path.md 中的症状表,然后参阅 references/troubleshooting.md |
新项目路径(旧版备用方案)
完整的 v3.1 流程——68 个确定性步骤、9 个阶段,通过 MCP 扫描并重建到一个新的 Lovable 项目中——位于 references/fresh-project-path.md。
以下情况请使用此路径:
- 数据库超过 5 GB 的导出上限(此外:发送邮件至 [email protected],并提供项目 ID,以申请手动导出)。
- 项目无法使用导出功能,或导出功能失败。
- 用户希望原 Cloud 项目继续运行/保持不变(类似暂存环境的迁移,原项目零风险)。
该参考文档保留了自己的陷阱表(陷阱 1-16)和故障排除条目。
v4 中新增的陷阱(17-26,均已命中并经过实时验证)
| 陷阱 | 严重程度 | 描述 | 预防措施 |
|---|---|---|---|
| 17 | 严重 | 导出会保存到 Cloud 存储中——移除操作会将其删除 | 严格遵循顺序:导出 -> 下载 -> 最后再移除(步骤 5-7、29) |
| 18 | 阻断 | brew libpq 的 pg_restore 不支持 zstd,无法处理 .backup 文件 | 先用 pg_restore --list 测试;使用 postgresql@18(步骤 13) |
| 19 | 严重 | 由于还原时外键顺序问题,auth.identities 被丢弃 | 检查数量 + 再执行一次仅数据还原(步骤 15) |
| 20 | 隐蔽错误 | 还原 cron.job 时会出现权限被拒绝;还原或重建的命令仍指向旧项目 URL,并会在失效的端点上运行 | 使用 cron.schedule + 搜寻僵尸任务 + cron.alter_job(步骤 17) |
| 21 | 隐蔽错误 | storage.objects 中的幽灵行会阻止上传(“resource already exists”);protect_delete 会阻止 SQL DELETE | 上传前通过 Storage API/CLI 清理,绝不能使用 SQL(步骤 18) |
| 22 | 隐蔽错误 | 签名 URL(?token=)会随旧项目失效;文本替换会让它们看起来像是已迁移 | 重新生成或设为 NULL,绝不要改写(步骤 20) |
| 23 | 故障 | Supabase 集成会覆盖 client.ts,导致现代技术栈上的 SSR 出错 | 连接后使用包含明确“禁止操作”要求的修复提示词(步骤 31) |
| 24 | 僵尸 | 临时辅助函数会通过双向 GitHub 同步再次复制回来 | 在 Supabase 和代码仓库中都删除(步骤 25) |
| 25 | 意外收获 | 移除 Cloud 后,LOVABLE_API_KEY 仍会保留(工作区密钥) | 重新配置:使用服务端函数(推荐)或复制密钥(步骤 24) |
| 26 | 数据丢失 | 还原的是导出时的快照;之后的写入不会包含在内 | 询问写入何时停止;重新导出或重新应用增量(步骤 16) |
v4.1 中新增的陷阱
| 陷阱 | 严重程度 | 描述 | 预防措施 |
|---|---|---|---|
| 27 | 账户锁定 | 当前 Lovable 文档指出,官方导出不包含可用密码 | 默认重置密码;仅在能力检查、明确批准并安全处理后,才使用 MCP 哈希方案 |
需要人工协助的环节(同项目路径)
| 步骤 | 用户必须执行的操作 | 无法自动化的原因 |
|---|---|---|
| 1 | 在编辑器中连接 GitHub | 只能通过控制面板操作 |
| 5 | 点击 Export project data | 仅限控制面板按钮 |
| 7 | 下载导出 zip | 浏览器下载 |
| 8 | 下载存储文件(小型项目) | 浏览器下载(大型项目可用脚本处理) |
| 23 | 输入边缘函数密钥 | MCP/Agent 均无法设置密钥 |
| 29 | 点击 Remove Lovable Cloud | 操作具有破坏性,因此特意设为手动 |
| 30 | 连接自己的 Supabase | 控制面板 OAuth 流程 |
| 33 | OAuth 提供方、JWT 密钥 | 仅限控制面板设置 |
| 费用 | 确认 Supabase 项目费用 | MCP 需要明确确认 |
方案要求
| 工具 | 所需方案 | 费用 |
|---|---|---|
| Lovable | 任何包含 Cloud 的方案 | 不固定 |
| Supabase | 有可用项目名额时,免费方案即可 | $0-$10/月 |
| Claude Code(可选,可自动完成所有操作) | Pro 或 Max | $20/月以上 |
| claude.ai(可选,无 CLI 方案) | Free/Pro | $0 以上 |
| GitHub | Free | $0 |
文档链接
| 资源 | URL |
|---|---|
| Lovable Cloud 高级设置(导出、暂停、移除) | https://docs.lovable.dev/features/advanced-settings |
| Lovable GitHub 集成 | https://docs.lovable.dev/integrations/github |
| Lovable MCP | https://docs.lovable.dev/integrations/mcp-servers |
| Supabase:还原备份 | https://supabase.com/docs/guides/platform/migrating-within-supabase/dashboard-restore |
| Supabase:数据库备份 | https://supabase.com/docs/guides/platform/backups |
| Supabase MCP | https://supabase.com/docs/guides/getting-started/mcp |
| Supabase Edge Functions | https://supabase.com/docs/guides/functions |
| Supabase Storage | https://supabase.com/docs/guides/storage |
| Supabase Auth | https://supabase.com/docs/guides/auth |
Carol Monroe 提供的资源
- 此技能自动化的手动操作流程: https://carolmonroe.com/blog/export-remove-lovable-cloud
- AI 迁移指南(claude.ai 路径 + Claude Code 路径): https://carolmonroe.com/blog/migrate-lovable-cloud-with-ai
- 旧版 MCP 迁移指南(新建项目路径): https://carolmonroe.com/blog/lovable-cloud-mcp-migration
- claude.ai 聊天的 MCP 设置: https://carolmonroe.com/blog/connect-lovable-supabase-mcp-to-claude