在任何国家创建真实 TikTok 账户的 MCP - TokPortal

发布: (2026年2月28日 GMT+8 00:37)
4 分钟阅读
原文: Dev.to

Source: Dev.to

概览

大多数 TikTok “自动化” 工具会启动无头浏览器,通过代理进行访问,并希望账户在 48 小时内不会被封禁。
TokPortal 采用了不同的方式:在 16 个以上国家拥有真实运营商的网络,使用当地网络上的真实手机。整个工作流程通过 REST API 公开,使您能够以编程方式创建真实的 TikTok 账户并发布视频。

API 基础

  • Base URL: https://app.tokportal.com/api/ext
  • Authentication: 来自开发者门户的 Bearer token
import os
import requests

API_KEY = os.environ["TOKPORTAL_API_KEY"]
BASE = "https://app.tokportal.com/api/ext"
HEADERS = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json",
}

捆绑包

捆绑包 将一个账户与一组视频槽位组合在一起。创建捆绑包、上传视频、设置元数据,然后发布。

resp = requests.post(f"{BASE}/bundles", headers=HEADERS, json={
    "bundle_type": "account_and_videos",
    "platform": "tiktok",
    "country": "US",               # change to BR, DE, ID, GB, FR, etc.
    "videos_quantity": 3,
    "title": "My first campaign",
})
bundle = resp.json()["data"]
print(f"Bundle {bundle['bundle_id']} created — {bundle['status']}")

上传视频

TokPortal 提供预签名 URL,免除 multipart‑form 的繁琐。

# Get a presigned upload URL
upload = requests.post(f"{BASE}/upload/video", headers=HEADERS, json={
    "filename": "promo.mp4",
    "content_type": "video/mp4",
    "bundle_id": bundle["bundle_id"],
}).json()["data"]

# PUT the file directly (no auth header needed)
with open("promo.mp4", "rb") as f:
    requests.put(upload["upload_url"], data=f,
                 headers={"Content-Type": "video/mp4"})

video_url = upload["public_url"]

设置视频元数据

from datetime import datetime, timedelta

publish_date = (datetime.utcnow() + timedelta(days=5)).strftime("%Y-%m-%d")

requests.put(
    f"{BASE}/bundles/{bundle['bundle_id']}/videos/1",
    headers=HEADERS,
    json={
        "video_type": "video",
        "description": "This is wild 🔥 #fyp #tech",
        "target_publish_date": publish_date,
        "video_url": video_url,
    },
)

发布捆绑包

requests.post(
    f"{BASE}/bundles/{bundle['bundle_id']}/publish",
    headers=HEADERS,
)

发布后,所选国家的真实运营商会在预定日期从其设备上上传视频。可通过 API 获取分析数据。

检索分析

analytics = requests.get(
    f"{BASE}/accounts/{bundle['account_id']}/analytics",
    headers=HEADERS,
).json()["data"]

print(f"Followers: {analytics['followers_count']}")
print(f"Views: {analytics['total_views']}")
print(f"Engagement: {analytics['average_engagement_rate']}%")

常见使用场景

  • 音乐厂牌: 在 5–10 个市场创建账号,发布新曲目,并在投放广告前识别自然流量。
  • DTC 品牌: 在新国家种植 10–20 个自然 TikTok 账号,然后启动付费活动。
  • 代理机构: 通过单一 n8n 工作流管理 50+ 客户活动,覆盖不同国家。参见 n8n integration guide
  • AI 代理: 将 TokPortal 接入 Claude、Cursor 或其他代理,实现账号创建和发布的自动化。

批量创建

对于大规模部署,请使用批量端点:

resp = requests.post(f"{BASE}/bundles/bulk", headers=HEADERS, json={
    "bundles": [
        {"platform": "tiktok", "country": "US", "videos_quantity": 3,
         "accounts_count": 10, "title": "US wave"},
        {"platform": "tiktok", "country": "BR", "videos_quantity": 3,
         "accounts_count": 10, "title": "Brazil wave"},
        {"platform": "tiktok", "country": "GB", "videos_quantity": 3,
         "accounts_count": 5, "title": "UK wave"},
    ]
})
# Creates 25 accounts across 3 countries in one call

截至目前的成果

  • 35,000+ 个已创建账户
  • 2 B+ 总观看次数
  • 82 个细分领域已覆盖
  • 16 个国家已支持
  • 平均互动率:6–8 %(因细分领域和国家而异)

高留存率源于使用真实账户——没有影子封禁、没有标记,仅是普通的 TikTok 行为。

更多资源

如果您想要个性化演示,请安排与 TokPortal 团队的通话。欢迎在评论中提问——创作者乐于分享边缘案例的见解。

0 浏览
Back to Blog

相关文章

阅读更多 »