OpenStock 如何用迁移脚本把存量用户导入 ConvertKit 标签?
OpenStock 如何用迁移脚本把存量用户导入 ConvertKit 标签【免费下载链接】OpenStockOpenStock is an open-source alternative to expensive market platforms. Track real-time prices, set personalized alerts, and explore detailed company insights — built openly, for everyone, forever free.项目地址: https://gitcode.com/GitHub_Trending/ope/OpenStockOpenStock 的用户数据存放在 MongoDB 的user集合里而邮件广播走 KitConvertKit。如果你已经有一批注册用户想让这些人进入某个 Kit 标签、后续可以按标签群发仓库提供了迁移脚本 scripts/migrate-users-to-kit.mjs它从数据库逐批读取尚未迁移的用户调用 ConvertKit 的POST https://api.convertkit.com/v3/tags/{tag_id}/subscribe接口把订阅者加入指定标签并在数据库里打标记防止重复迁移。前提是你在项目根目录的.env中配置好三个环境变量然后一条node命令完成导入。脚本会做什么、不会做什么先明确边界再执行只处理user集合中有email字段且email非空、同时没有kitMigratedAt标记的用户见 scripts/migrate-users-to-kit.mjs 中的查询条件。成功调用订阅接口后脚本会写库对应用户执行$set: { kitMigratedAt: new Date() }。也就是说运行脚本会修改你的 MongoDB 数据并且会向 ConvertKit 实际写入订阅者。请确认MONGODB_URI指向的目标库是你打算迁移的库。脚本内置限流保护每批 5 个用户BATCH_SIZE 5批间等待 2 秒DELAY_MS 2000源码注释说明这是按 10 req/s 的安全余量设置的。遇到 429 或Retry later错误时会冷却 10 秒该用户本次不写标记留给下一次运行重试。API 返回 already subscribed 被视为成功。用户没有name时first_name自动用Subscriber兜底。脚本还强制使用 IPv4 并把 DNS 指定为8.8.8.8dns.setServers([8.8.8.8])源码注释说明目的是避免连接错误你的运行环境需要能访问8.8.8.8和api.convertkit.com。准备条件已克隆仓库并完成基础安装npm installNode 环境满足脚本对fetch的要求——源码注释说明 Node 18 已自带全局 fetch脚本仍显式引入了node-fetch以防版本较旧。在项目根目录创建.env位置与 README 的 Environment Variables 章节一致至少包含脚本启动时强制检查的三个变量MONGODB_URI你的 MongoDB 连接串 KIT_API_KEY你的 Kit API key KIT_WELCOME_FORM_ID你的 Kit 表单 ID三者任一缺失脚本会直接输出❌ Missing required env vars: MONGODB_URI, KIT_API_KEY, or KIT_WELCOME_FORM_ID并退出。KIT_WELCOME_FORM_ID只在此处做存在性检查标签订阅请求本身不使用它不知道表单 ID 时可以先跑只读的scripts/list-kit-forms.mjs它会打印ID: ... | Name: ...的表单列表供你挑选。确认目标标签 ID。迁移脚本里标签 ID 是硬编码常量const TAG_ID 15119471; // OpenStock Users这个值对应 OpenStock 项目自己的 OpenStock Users 标签。如果要把用户导入你自己账户下的标签用仓库提供的 scripts/create-kit-tag.mjs 创建它向POST https://api.convertkit.com/v3/tags提交一个名为 OpenStock Users 的标签成功后打印✅ Created Tag ID: 新标签 ID此脚本只读KIT_API_KEY。拿到 ID 后把它替换进迁移脚本的TAG_ID常量再运行。沿用项目默认的15119471则是导入到 OpenStock 的标签。执行迁移在项目根目录运行node scripts/migrate-users-to-kit.mjs运行期间观察控制台输出的判断逻辑 Connecting to MongoDB...→✅ Connected.数据库连接成功。Processing batch of N users...开始处理一批N 不超过 5。每处理完一个用户输出一个字符.表示成功并已写kitMigratedAt标记x表示本次失败不中断继续下一个。⚠️ Rate Limit Hit. Cooling down for 10s...触发限流脚本自动等待后跳过该用户等下次运行重试。 No more users to migrate!没有待迁移用户了首次运行就出现这条说明库里所有用户都已有kitMigratedAt标记或没有带 email 的用户。结束时输出✅ Migration Complete. Total migrated: NN 为本次运行成功迁移的总人数。验证结果看最终输出Total migrated数值应接近你库中未标记用户的数量出现x或有用户被限流跳过时数字会偏小。重跑一次验证幂等性再次执行同一条命令预期直接走到 No more users to migrate!不再产生新的迁移如果失败用户较多这次运行会重试那些未写标记的用户。查数据库迁移成功的用户文档上会多一个kitMigratedAt时间戳字段用它可以在 MongoDB 中核对哪些用户已完成导入。在 ConvertKit 后台确认标签下的订阅者数量与Total migrated相符已存在的订阅者会被计为成功不产生重复。限制与注意标签 ID 硬编码在脚本里换标签必须改代码中的TAG_ID常量脚本不存在命令行参数来指定标签。迁移的粒度是用户 → 标签订阅者只传email和first_name缺失时为Subscriber不会迁移用户资料里的其他字段。脚本失败不抛错、只输出x并继续所以不能只看进程是否正常结束来判断全部成功要结合x的数量和kitMigratedAt字段核对。可选的前置连通性测试scripts/test-kit.mjs会向POST https://api.convertkit.com/v3/broadcasts发一封public: true的测试广播——它真的会给现有订阅者发送邮件副作用明确谨慎执行lib/kit.ts 中的listSubscribers接口GET /v3/subscribers则需要KIT_API_SECRET属于运行时功能迁移脚本本身不需要。项目对 Kit 的集成说明见 API_DOCS.md 的 Email Marketing: Kit (ConvertKit) 章节其中把POST /v3/tags/{tag_id}/subscribe标注为 User Migration 端点鉴权使用KIT_API_KEY。完成迁移后后续新注册用户走的是应用内的运行时链路lib/kit.ts的addSubscriber按表单订阅而存量用户则通过本次脚本一次性进入标签两条路径互不干扰。【免费下载链接】OpenStockOpenStock is an open-source alternative to expensive market platforms. Track real-time prices, set personalized alerts, and explore detailed company insights — built openly, for everyone, forever free.项目地址: https://gitcode.com/GitHub_Trending/ope/OpenStock创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联
返回资讯列表 →