tiktok-warmup
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseTikTok Warmup Skill
TikTok账号预热Skill
Warms up TikTok accounts for Flooently + Blaze using Multilogin browser profiles. Targets Spanish learners across Latin America.
This is now a semi-manual system. Faiyam runs (see ) when ready to warm up. The agent plans today's sessions, runs them in parallel across accounts, and relies on Faiyam for manual debugging (CAPTCHAs, re-logins, weird modals). No background scheduler, no cron — just a slash command.
/execute-warmupsprompts/execute-warmups.md借助Multilogin浏览器配置文件为Flooently + Blaze预热TikTok账号,目标用户为拉丁美洲的西班牙语学习者。
当前为半手动系统。当准备好进行预热时,Faiyam会运行(详见)。Agent会规划当日的会话,在多个账号上并行运行,并依赖Faiyam进行手动调试(验证码、重新登录、异常弹窗等)。无后台调度器,无定时任务——仅通过斜杠指令触发。
/execute-warmupsprompts/execute-warmups.mdPre-flight — run this immediately on skill load
启动前检查——加载Skill后立即执行
First, update the skill to the latest version from fstack:
bash
npx skills updateThen run the checks below and report health status for each activity. Do not block — just show the user what's ready and what isn't.
bash
source .env.cli 2>/dev/null || true首先,从fstack更新Skill至最新版本:
bash
npx skills update然后运行以下检查,并汇报各项活动的健康状态。无需阻塞流程——只需向用户展示哪些已就绪,哪些未就绪。
bash
source .env.cli 2>/dev/null || true1Password — TikTok vault
1Password — TikTok 密钥库
OP_VAULT_STATUS="❌ OP_SERVICE_ACCOUNT_TOKEN not set"
if [ -n "$OP_SERVICE_ACCOUNT_TOKEN" ]; then
VAULTS=$(OP_SERVICE_ACCOUNT_TOKEN=$OP_SERVICE_ACCOUNT_TOKEN op vault list --format=json 2>&1)
if echo "$VAULTS" | python3 -c "import json,sys; names=[v['name'] for v in json.load(sys.stdin)]; assert 'TikTok' in names" 2>/dev/null; then
OP_VAULT_STATUS="✅ 1Password TikTok vault accessible"
else
OP_VAULT_STATUS="❌ TikTok vault not found (wrong OP token, or vault not shared with this service account)"
fi
fi
OP_VAULT_STATUS="❌ OP_SERVICE_ACCOUNT_TOKEN 未设置"
if [ -n "$OP_SERVICE_ACCOUNT_TOKEN" ]; then
VAULTS=$(OP_SERVICE_ACCOUNT_TOKEN=$OP_SERVICE_ACCOUNT_TOKEN op vault list --format=json 2>&1)
if echo "$VAULTS" | python3 -c "import json,sys; names=[v['name'] for v in json.load(sys.stdin)]; assert 'TikTok' in names" 2>/dev/null; then
OP_VAULT_STATUS="✅ 可访问1Password TikTok密钥库"
else
OP_VAULT_STATUS="❌ 未找到TikTok密钥库(OP令牌错误,或密钥库未与该服务账号共享)"
fi
fi
MLX token
MLX 令牌
MLX_STATUS="❌ MLX_AUTOMATION_TOKEN not set"
[ -n "$MLX_AUTOMATION_TOKEN" ] && MLX_STATUS="✅ MLX_AUTOMATION_TOKEN set"
MLX_STATUS="❌ MLX_AUTOMATION_TOKEN 未设置"
[ -n "$MLX_AUTOMATION_TOKEN" ] && MLX_STATUS="✅ MLX_AUTOMATION_TOKEN 已设置"
AgentMail
AgentMail
AM_STATUS="❌ AGENTMAIL_KEY not set"
[ -n "$AGENTMAIL_KEY" ] && AM_STATUS="✅ AGENTMAIL_KEY set"
AM_STATUS="❌ AGENTMAIL_KEY 未设置"
[ -n "$AGENTMAIL_KEY" ] && AM_STATUS="✅ AGENTMAIL_KEY 已设置"
Airtable
Airtable
AT_STATUS="⚠️ No AIRTABLE_ACCESS_TOKEN (assuming Airtable MCP is connected)"
[ -n "$AIRTABLE_ACCESS_TOKEN" ] && AT_STATUS="✅ AIRTABLE_ACCESS_TOKEN set"
echo ""
echo "🔍 Environment Health"
echo ""
echo " Account Warmup:"
echo " $MLX_STATUS"
echo " $OP_VAULT_STATUS"
echo " $AM_STATUS"
echo " $AT_STATUS"
echo ""
echo " Account Creation:"
echo " $OP_VAULT_STATUS (needs read+write)"
echo " $AM_STATUS"
echo " $AT_STATUS"
echo ""
Report the output to the user before proceeding. If warmup prerequisites (MLX + OP vault) are missing, tell the user warmup won't work and ask if they want to fix it first.
---AT_STATUS="⚠️ 未设置AIRTABLE_ACCESS_TOKEN(假设已连接Airtable MCP)"
[ -n "$AIRTABLE_ACCESS_TOKEN" ] && AT_STATUS="✅ AIRTABLE_ACCESS_TOKEN 已设置"
echo ""
echo "🔍 环境健康检查"
echo ""
echo " 账号预热:"
echo " $MLX_STATUS"
echo " $OP_VAULT_STATUS"
echo " $AM_STATUS"
echo " $AT_STATUS"
echo ""
echo " 账号创建:"
echo " $OP_VAULT_STATUS(需要读写权限)"
echo " $AM_STATUS"
echo " $AT_STATUS"
echo ""
在继续操作前向用户汇报输出结果。如果预热的先决条件(MLX + OP密钥库)缺失,告知用户预热无法正常运行,并询问是否要先修复问题。
---Reference Files
参考文件
| File | Purpose |
|---|---|
| multiloginRef.md | Multilogin X API reference — auth, workspace IDs, profile IDs, how to start/stop profiles, Playwright connection. |
| browserWarmupRef.md | Browser warmup protocol — humanized Playwright sessions on tiktok.com via Multilogin browser profiles. Preferred approach. |
| loginRef.md | TikTok login procedure — do this yourself agentically, never delegate to ensure_login.py. Covers where creds live (1Password Claude-Accessible vault), OTP retrieval (AgentMail), captcha handling, and the visual login-verification checklist. |
| sessionDesignRef.md | How to compose the per-account task queue. Target 50%+ niche-explicit time in early weeks. Recommended task mixes by week, anti-patterns, working example for Sofia. Read this when building a queue for any /execute-warmups run. |
| accountsRef.md | Account registry auto-refresh protocol. Accounts live in Airtable; scripts read from scripts/warmup/accounts.json. The agent refreshes the cache at step 2 of every /execute-warmups run so new/removed accounts propagate automatically with no code edits. |
| airtableRef.md | Airtable base/table/field IDs - Accounts + Session Log are the two tables we use. |
| computerUseRef.md | Mobile cloud phone warmup - computer-use based. Used only for late-stage weeks or special cases. |
| peekabooRef.md | Peekaboo CLI fallback - used when request_access fails for cloud phone sessions. |
| runtimeLearnings.md | Operational learnings from live sessions - read before every execution. |
| accountCreationRef.md | How to create TikTok accounts and store credentials in 1Password. |
| createTiktokRef.md | Full interactive protocol for /create-tiktok — step-by-step account creation walkthrough. |
| executeWarmupsRef.md | Full protocol for /execute-warmups — plans and runs warmup sessions across all active accounts. |
| 文件 | 用途 |
|---|---|
| multiloginRef.md | Multilogin X API参考文档 — 认证、工作区ID、配置文件ID、启动/停止配置文件的方法、Playwright连接方式。 |
| browserWarmupRef.md | 浏览器预热协议 — 通过Multilogin浏览器配置文件在tiktok.com上模拟人类行为的Playwright会话。为推荐方案。 |
| loginRef.md | TikTok登录流程 — 需由Agent自主完成,绝不能委托给ensure_login.py。涵盖凭证存储位置(1Password Claude-Accessible密钥库)、OTP获取方式(AgentMail)、验证码处理及可视化登录验证清单。 |
| sessionDesignRef.md | 单账号任务队列构建方法。前期每周需保证50%以上的细分领域相关时长。按周推荐的任务组合、反模式示例、Sofia账号的工作示例。在为任何/execute-warmups运行构建队列前需阅读此文档。 |
| accountsRef.md | 账号注册表自动刷新协议。账号存储在Airtable中;脚本从scripts/warmup/accounts.json读取数据。Agent会在每次/execute-warmups运行的第2步刷新缓存,以便新增/移除的账号自动生效,无需修改代码。 |
| airtableRef.md | Airtable的库/表/字段ID — 我们使用Accounts和Session Log这两个表。 |
| computerUseRef.md | 基于computer-use的移动云手机预热方案。仅用于后期周或特殊场景。 |
| peekabooRef.md | Peekaboo CLI备选方案 — 当云手机会话的request_access请求失败时使用。 |
| runtimeLearnings.md | 从实际会话中总结的运营经验 — 每次执行前务必阅读。 |
| accountCreationRef.md | TikTok账号创建及凭证存储至1Password的方法。 |
| createTiktokRef.md | |
| executeWarmupsRef.md | |
Protocols
操作流程
- Run today's warmups (the main thing): trigger /execute-warmups. Full protocol in executeWarmupsRef.md.
- Run a one-off browser warmup session: read multiloginRef.md + browserWarmupRef.md + runtimeLearnings.md, then invoke scripts/tiktok-warmup-poc.py.
- Run a mobile warmup session (rare): read multiloginRef.md + computerUseRef.md + runtimeLearnings.md.
- Create a new TikTok account: trigger . Full protocol in createTiktokRef.md.
/create-tiktok - Multilogin API operations: read multiloginRef.md.
- 运行当日预热(核心功能):触发/execute-warmups。完整流程详见executeWarmupsRef.md。
- 运行单次浏览器预热会话:阅读multiloginRef.md + browserWarmupRef.md + runtimeLearnings.md,然后调用scripts/tiktok-warmup-poc.py。
- 运行移动设备预热会话(罕见场景):阅读multiloginRef.md + computerUseRef.md + runtimeLearnings.md。
- 创建新TikTok账号:触发。完整流程详见createTiktokRef.md。
/create-tiktok - Multilogin API操作:阅读multiloginRef.md。
Design philosophy
设计理念
Target 30-90 min of warmup per account per day, split into 2-4 sessions of 15-30 min each. Rest days in weeks 1-2 are natural (deterministic per account). The Scheduled Sessions Airtable table is deprecated - we log results directly to Session Log.
每个账号每日预热时长为30-90分钟,拆分为2-4个15-30分钟的会话。第1-2周自然安排休息日(每个账号的休息日为固定设置)。Scheduled Sessions Airtable表已废弃——我们直接将会话结果记录至Session Log。