File: //tmp/cs_connect_runbook_private_test.json
{
"ok": true,
"generated_at": "2026-06-14T09:27:51+00:00",
"connect_runbook": {
"generated_at": "2026-06-14T09:27:51+00:00",
"status": "ready",
"ready_steps": 5,
"blocked_steps": 1,
"action_needed_steps": 0,
"total_steps": 6,
"next_step": {
"key": "self_only_direct_smoke",
"label": "Run SELF_ONLY Direct Publish",
"status": "blocked",
"metric": "0 direct publishes · 2 failures",
"owner": "TikTok API Agent / Compliance Agent",
"next_action": "TikTok blocked Direct Post init. Make the TikTok account private for unaudited-client testing or complete Direct Post audit/advanced access, then retry SELF_ONLY."
},
"oauth": {
"start_url": "/creator-studio/auth/tiktok/start.php",
"callback_url": "https://kiwerkzeuge.de/creator-studio/auth/tiktok/callback.php",
"scopes_requested": [
"user.info.basic",
"user.info.profile",
"user.info.stats",
"video.list",
"video.publish",
"video.upload"
],
"connected_accounts": 1,
"creator_info_ready_accounts": 1
},
"scopes": [
{
"scope": "user.info.basic",
"label": "Basic user info",
"purpose": "Bind the private session to the correct TikTok open_id and display the account safely.",
"used_for": "Login identity"
},
{
"scope": "user.info.profile",
"label": "Profile info",
"purpose": "Show handle, avatar, bio, and profile link so the creator confirms the right account before upload.",
"used_for": "Account confirmation"
},
{
"scope": "user.info.stats",
"label": "Creator stats",
"purpose": "Read follower, likes, following, and video counts for lightweight workspace context.",
"used_for": "Creator context"
},
{
"scope": "video.list",
"label": "Video list",
"purpose": "Read recent public videos so review and packaging suggestions fit the existing feed.",
"used_for": "Content context"
},
{
"scope": "video.publish",
"label": "Direct publish",
"purpose": "Fetch Creator Info and enable Direct Publish only with explicit privacy, AIGC, and branded-content confirmation.",
"used_for": "SELF_ONLY direct smoke"
},
{
"scope": "video.upload",
"label": "Draft upload",
"purpose": "Send reviewed videos or photo sets to TikTok drafts while final control stays inside TikTok.",
"used_for": "Draft-first smoke"
}
],
"data_guards": [
"Tokens stay in the private account store with 0600 permissions.",
"OpenClaw events receive hashes, counts, and status only; no raw access or refresh tokens are routed.",
"Draft Upload is the first live TikTok smoke; Direct Publish starts with SELF_ONLY and explicit confirmation.",
"Creator Info controls privacy levels, interaction locks, max duration, AIGC, and branded-content switches before publishing.",
"No like, follow, comment, or engagement automation is part of the approved workflow."
],
"sequence": [
{
"key": "review_before_login",
"label": "Run review before TikTok login",
"status": "ready",
"metric": "3 non-demo reviews",
"owner": "Video Agent",
"next_action": "Use the existing non-demo proof as the creator handoff before OAuth."
},
{
"key": "open_tiktok_login",
"label": "Open TikTok Login Kit",
"status": "ready",
"metric": "6 scopes configured",
"owner": "Creator / TikTok API Agent",
"next_action": "Open /creator-studio/auth/tiktok/start.php and authorize the owned creator account."
},
{
"key": "sync_creator_profile",
"label": "Sync profile and Creator Info",
"status": "ready",
"metric": "1 accounts with Creator Info",
"owner": "TikTok API Agent",
"next_action": "Refresh Creator Info and verify privacy-level options before any Direct Publish."
},
{
"key": "draft_upload_smoke",
"label": "Send first Draft Upload",
"status": "ready",
"metric": "5 draft uploads",
"owner": "TikTok API Agent",
"next_action": "Send one reviewed MP4 to TikTok drafts and refresh status."
},
{
"key": "self_only_direct_smoke",
"label": "Run SELF_ONLY Direct Publish",
"status": "blocked",
"metric": "0 direct publishes · 2 failures",
"owner": "TikTok API Agent / Compliance Agent",
"next_action": "TikTok blocked Direct Post init. Make the TikTok account private for unaudited-client testing or complete Direct Post audit/advanced access, then retry SELF_ONLY."
},
{
"key": "url_photo_smokes",
"label": "Validate URL and Photo smokes",
"status": "ready",
"metric": "4 URL · 2 photo",
"owner": "Video Agent / Content Agent",
"next_action": "Run one PULL_FROM_URL upload and one 2-3 image Photo/Carousel smoke."
}
]
}
}