Launch a TikTok network from Claude Code in 10 minutes (with the TokPortal plugin)
Install the TokPortal Claude Code plugin, sign in with OAuth, and go from zero to a published bundle of geo-targeted TikTok accounts with scheduled videos.
Launch a TikTok network from Claude Code in 10 minutes (with the TokPortal plugin)
This is the walkthrough we use internally when someone new joins and needs to see the whole loop once. It uses the TokPortal plugin for Claude Code, which bundles the remote MCP server, five skills and a /tokportal-status command. Ten minutes is realistic if you already have a TokPortal account with credits; the accounts themselves are delivered by human managers over the following days.
0. Prerequisites (1 min)
- Claude Code installed and signed in.
- A TokPortal account at app.tokportal.com with a few hundred credits (a US account with 10 videos and 3 warming targets is 32 + 20 + 15 = 67 credits at standard rates; check pricing).
- Nothing else. No TikTok developer app, no OAuth per account, no API key unless you prefer stdio.
1. Install the plugin (1 min)
claude plugin marketplace add tokportal/claude-plugin
claude plugin install tokportal@tokportal
Inside a Claude Code session you can also run /plugin marketplace add tokportal/claude-plugin then /plugin install tokportal@tokportal. The plugin adds the remote server https://app.tokportal.com/api/ext/mcp (Streamable HTTP), the skills tokportal-setup, tokportal-launch-network, tokportal-post-videos-at-scale, tokportal-warm-accounts, tokportal-monitor-and-bans, and the /tokportal-status command.
If you would rather use an API key and a local process: claude mcp add tokportal -e TOKPORTAL_API_KEY=sk_... -- npx -y tokportal-mcp (keys from the Developer Portal).
2. Sign in (1 min)
Run /mcp, pick tokportal, and complete the browser sign-in. Choose Full access — Read-only would block create_bundle. TokPortal mints a dedicated key named Claude (MCP connector) that you can revoke from the Developer Portal at any time.
Then:
/tokportal-status
It runs read-only tools only — connection, credit balance, current costs, recent bundles, open ban cases, webhook endpoints — and is a good habit before spending credits.
3. Ask for the network (2 min)
Paste something like this. It is written to make Claude read first, quote, and stop before the first write.
Use the tokportal tools. I want a small US TikTok network for a home-fitness brand:
3 accounts, 10 videos each over the next 10 days, advanced warming with 3 terms per account.
1) list_countries (confirm US), get_credit_costs, get_credit_balance.
2) generate_warming_terms (platform tiktok, count 3, text "home workouts for busy parents").
3) Show me the create_bundles_bulk payload and the total credits. Wait for my GO.
Claude Code shows each call: tokportal_list_countries, tokportal_get_credit_costs, tokportal_get_credit_balance, tokportal_generate_warming_terms. Because tools carry MCP annotations since tokportal-mcp 1.12.1, read-only tools are marked readOnlyHint and Claude Code can auto-approve them; write tools prompt.
Say GO. Claude calls tokportal_create_bundles_bulk with {"platforms":["tiktok"],"country":"US","accounts_count":3,"videos_per_account":10,"wants_advanced_warming":true,"advanced_warming_terms":[...]} and returns three bundle ids. Nothing is charged yet — publishing is what debits.
4. Configure the accounts (2 min)
For each bundle: configure_bundle_account with these personas —
@liftwithmara "Mara | Home Gym" bio "30-min workouts, zero excuses"
@dad.bod.reset "Tom" bio "45, two kids, getting strong again"
@kitchen.floor.fit "Priya" bio "workouts between the dishes"
link_in_bio https://fitapp.example/?utm_source=tiktok
Three tokportal_configure_bundle_account calls (PUT, so re-running with a fix is fine). If a handle turns out to be taken, the manager will flag it later with account.pending_corrections and you send another.
5. Schedule the videos (2 min)
If your clips are already hosted (S3, R2, Drive with public links), give the URLs directly; if they are local, ask Claude to upload them — tokportal_upload_video returns a presigned URL and a public_url, and Claude Code can PUT the file from disk.
Fill positions 1–10 of each bundle with batch_configure_bundle_videos:
video_type video, one per day from 2026-09-01, captions from captions.csv (column per account),
video_url from urls.txt in order, ai_content_disclaimer false. Then get_bundle_publish_readiness for each.
The daily cap is 3 per bundle per day; one per day is well inside it. Readiness tells you if a slot is missing media or a date before you publish.
6. Publish and wire the events (1 min)
publish_bundle for the three bundles. Then create_webhook_endpoint at https://hooks.example.com/tokportal
for account.finalized, video.finalized, account.ban_appeal.submitted, account.banned,
account.ban_resolution.decided, and send a test.
Credits are debited now. From here the managers take over: create the accounts on US devices, run the three warming sessions each (recorded and verified per term), then post one video a day. account.finalized fires when an account is delivered; video.finalized after each post clears its 72-hour review window (auto-finalized unless you turned auto_finalize_videos off).
7. Watch it (ongoing)
Two prompts you will reuse:
Use tokportal tools: list_bundles status published; for each, list_bundle_videos and count
configured vs published vs finalized. Any list_account_bans since yesterday?
get_analytics_dashboard for the last 7 days (platform tiktok, country US) and the top 5 videos
via list_account_video_analytics. One paragraph, then a table.
Or just /tokportal-status.
What just happened, in API terms
Six operations, all available as REST too: POST /bundles/bulk → PUT /bundles/{id}/account → PUT /bundles/{id}/videos/batch → GET /bundles/{id}/publish-readiness → POST /bundles/{id}/publish → POST /webhooks. Claude Code's contribution was reading the OpenAPI-derived tool schemas, filling them from your sentences, and stopping where you asked. The plugin's skills encode the same guardrails — quote costs before creating, never call the two secret-returning tools without a human, treat list_account_bans as the only truth for bans — so a teammate who has never opened the docs gets the same behavior.
More jobs, same pattern: Claude Code × 12 jobs — posting 100 videos a day, seeding UGC, ban webhooks, multi-account analytics.