集成 Content360,创建、排程并发布社交媒体内容至 Facebook、LinkedIn、X、Instagram、YouTube、TikTok 等平台。
Content360 uses a session + bearer token auth mechanism built on Laravel Sanctum + Inertia.js.
Get your bearer token at https://app.content360.io/os/profile/access-tokens
Set secrets in Zo: Settings → Advanced → Secrets
CONTENT360_API_KEY = your bearer tokenCONTENT360_ORG_ID = your workspace UUID (from the dashboard URL)Set your credentials (for automatic session auth):
CONTENT360_EMAIL = your login emailCONTENT360_PASSWORD = your login passwordNote: Access tokens require an active web session to work. If the token returns 401, re-authenticate by logging in via the web interface or using the session login flow in content360_sync.py.
The API requires all of these headers on every request:
text
Authorization: Bearer {token}
X-Requested-With: XMLHttpRequest
X-Inertia: true
X-Inertia-Version: {version} # from any authenticated page response
Accept: application/json
Content-Type: application/json
The X-Inertia-Version is a hash that changes on app updates. It's returned in every Inertia JSON response under the X-Inertia-Version response header. The sync script handles this automatically.
https://app.content360.io/os/api/{workspace} (workspace = org UUID)/os/{workspace} (same routing, differs only by Accept header)All require auth headers above. Responses are Inertia JSON.
MethodPathDescriptionGET/os/api/{workspace}/postsList posts (paginated)POST/os/api/{workspace}/postsCreate postGET/os/api/{workspace}/posts/{uuid}Get single postPUT/os/api/{workspace}/posts/{uuid}Update postDELETE/os/api/{workspace}/posts/{uuid}Delete single postPOST/os/api/{workspace}/posts/add-to-queue/{uuid}Add to queuePOST/os/api/{workspace}/posts/schedule/{uuid}Schedule queued postPOST/os/api/{workspace}/posts/approve/{uuid}Approve postPOST/os/api/{workspace}/posts/duplicate/{uuid}Duplicate post
json
{
"content": "Post text content",
"accounts": ["126117", "126129"],
"status": "draft",
"versions": [
{
"account_id": 126117,
"is_original": true,
"content": [
{
"body": "<div>Post content</div>",
"media": [],
"url": "",
"opened": true
}
]
}
]
}
status: "draft" or "schedule"accounts: array of account IDs (strings)versions: per-account content blocks (body uses HTML)"<div>text</div>" in bodyMethodPathDescriptionGET/os/api/{workspace}/accountsList all connected accountsGET/os/api/{workspace}/accounts/{id}Get single account
MethodPathDescriptionGET/os/api/{workspace}/mediaList media libraryPOST/os/api/{workspace}/mediaUpload mediaDELETE/os/api/{workspace}/mediaDelete media
MethodPathDescriptionGET/os/api/{workspace}/tagsList tagsPOST/os/api/{workspace}/tagsCreate tagPUT/os/api/{workspace}/tags/{id}Update tagDELETE/os/api/{workspace}/tags/{id}Delete tag
MethodPathDescriptionGET/os/{workspace}/calendarCalendar viewGET/os/{workspace}/posts/rss_campaignsRSS campaignsGET/os/{workspace}/repeated-postsRepeated postsGET/os/{workspace}/templatesTemplatesGET/os/{workspace}/inboxInboxPOST/os/api/{workspace}/posts/importImport posts
MethodPathDescriptionGET/os/{workspace}/webhooksList webhooksPOST/os/{workspace}/webhooks/storeCreate webhookPUT/os/{workspace}/webhooks/{id}Update webhookDELETE/os/{workspace}/webhooks/{id}Delete webhook
bash
# Dry run
python3 /home/workspace/Skills/content360/scripts/content360_sync.py --dry-run
# Real sync
python3 /home/workspace/Skills/content360/scripts/content360_sync.py
# Sync specific platforms
python3 /home/workspace/Skills/content360/scripts/content360_sync.py --platforms facebook,linkedin,youtube
The script reads from your Notion content calendar, creates posts in Content360 as drafts, and schedules them. See README.md for full setup instructions.
The sync script expects these properties in your Notion content calendar database:
PropertyTypeDescriptionPostedcheckboxSkip posts already marked as postedScheduledateSchedule date/time (optional)PlatformselectPlatform: facebook, linkedin, x, instagram, youtube, tiktok, pinterest, redditCaptionrich_textMain post contentHookrich_textOpening hook/headline (optional)CTArich_textCall-to-action text (optional)