360 Secure SkillHub
360 安全技能中心

Content360

该 Skill 提供 Content360 社媒管理接口说明和同步脚本:读取 Notion 内容日历,按平台与排期创建草稿或安排发布,并支持 dry-run 与平台筛选;同时列出账户、媒体、标签和 Webhook 端点。

noesis-boss
noesis-boss
热度 47.76
最近更新 2026-05-11 17:42:13
分类:营销依赖:代码执行 / 第三方 API应用场景:社交媒体 / 日程安排 / 工作流 / 自动化脚本

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add content360
Metadata
name
content360
description
Integrates with Content360 (app.content360.io) to create, schedule, and publish social media content across Facebook, LinkedIn, X, Instagram, YouTube, TikTok, Pinterest, Reddit, and more. Supports post creation, scheduling, analytics, media upload, and inbox management. Built on MixPost/Laravel + Inertia.js.
compatibility
Created for Zo Computer
metadata
{"author":"jaknyfe.zo.computer"}

Content360 Skill

Authentication

Content360 uses a session + bearer token auth mechanism built on Laravel Sanctum + Inertia.js.

Setup

  1. Get your bearer token at https://app.content360.io/os/profile/access-tokens
  2. Set secrets in Zo: Settings → Advanced → Secrets
    • CONTENT360_API_KEY = your bearer token
    • CONTENT360_ORG_ID = your workspace UUID (from the dashboard URL)
  3. Set your credentials (for automatic session auth):
    • CONTENT360_EMAIL = your login email
    • CONTENT360_PASSWORD = your login password

Note: 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.

Auth Flow

The API requires all of these headers on every request:

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.


Base URLs

  • App: https://app.content360.io
  • API namespace: /os/api/{workspace} (workspace = org UUID)
  • Web namespace: /os/{workspace} (same routing, differs only by Accept header)

API Endpoints

All require auth headers above. Responses are Inertia JSON.

Posts

Method Path Description
GET /os/api/{workspace}/posts List posts (paginated)
POST /os/api/{workspace}/posts Create post
GET /os/api/{workspace}/posts/{uuid} Get single post
PUT /os/api/{workspace}/posts/{uuid} Update post
DELETE /os/api/{workspace}/posts/{uuid} Delete single post
POST /os/api/{workspace}/posts/add-to-queue/{uuid} Add to queue
POST /os/api/{workspace}/posts/schedule/{uuid} Schedule queued post
POST /os/api/{workspace}/posts/approve/{uuid} Approve post
POST /os/api/{workspace}/posts/duplicate/{uuid} Duplicate post

Create Post Payload

{
  "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)
  • For plain text, use "<div>text</div>" in body

Accounts

Method Path Description
GET /os/api/{workspace}/accounts List all connected accounts
GET /os/api/{workspace}/accounts/{id} Get single account

Media

Method Path Description
GET /os/api/{workspace}/media List media library
POST /os/api/{workspace}/media Upload media
DELETE /os/api/{workspace}/media Delete media

Tags

Method Path Description
GET /os/api/{workspace}/tags List tags
POST /os/api/{workspace}/tags Create tag
PUT /os/api/{workspace}/tags/{id} Update tag
DELETE /os/api/{workspace}/tags/{id} Delete tag

Other

Method Path Description
GET /os/{workspace}/calendar Calendar view
GET /os/{workspace}/posts/rss_campaigns RSS campaigns
GET /os/{workspace}/repeated-posts Repeated posts
GET /os/{workspace}/templates Templates
GET /os/{workspace}/inbox Inbox
POST /os/api/{workspace}/posts/import Import posts

Webhook Endpoints

Method Path Description
GET /os/{workspace}/webhooks List webhooks
POST /os/{workspace}/webhooks/store Create webhook
PUT /os/{workspace}/webhooks/{id} Update webhook
DELETE /os/{workspace}/webhooks/{id} Delete webhook

Running the Sync Script

# 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.

Notion Database Properties

The sync script expects these properties in your Notion content calendar database:

Property Type Description
Posted checkbox Skip posts already marked as posted
Schedule date Schedule date/time (optional)
Platform select Platform: facebook, linkedin, x, instagram, youtube, tiktok, pinterest, reddit
Caption rich_text Main post content
Hook rich_text Opening hook/headline (optional)
CTA rich_text Call-to-action text (optional)