Skill flagged — suspicious patterns detected

ClawHub Security flagged this skill as suspicious. Review the scan results before using.

Content360

v1.0.0

Integrates with Content360 (app.content360.io) to create, schedule, and publish social media content across Facebook, LinkedIn, X, Instagram, YouTube, TikTok...

0· 138· 1 versions· 0 current· 0 all-time· Updated 17h ago· MIT-0

Install

openclaw skills install content360

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

MethodPathDescription
GET/os/api/{workspace}/postsList posts (paginated)
POST/os/api/{workspace}/postsCreate 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

MethodPathDescription
GET/os/api/{workspace}/accountsList all connected accounts
GET/os/api/{workspace}/accounts/{id}Get single account

Media

MethodPathDescription
GET/os/api/{workspace}/mediaList media library
POST/os/api/{workspace}/mediaUpload media
DELETE/os/api/{workspace}/mediaDelete media

Tags

MethodPathDescription
GET/os/api/{workspace}/tagsList tags
POST/os/api/{workspace}/tagsCreate tag
PUT/os/api/{workspace}/tags/{id}Update tag
DELETE/os/api/{workspace}/tags/{id}Delete tag

Other

MethodPathDescription
GET/os/{workspace}/calendarCalendar view
GET/os/{workspace}/posts/rss_campaignsRSS campaigns
GET/os/{workspace}/repeated-postsRepeated posts
GET/os/{workspace}/templatesTemplates
GET/os/{workspace}/inboxInbox
POST/os/api/{workspace}/posts/importImport posts

Webhook Endpoints

MethodPathDescription
GET/os/{workspace}/webhooksList webhooks
POST/os/{workspace}/webhooks/storeCreate 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:

PropertyTypeDescription
PostedcheckboxSkip posts already marked as posted
ScheduledateSchedule date/time (optional)
PlatformselectPlatform: facebook, linkedin, x, instagram, youtube, tiktok, pinterest, reddit
Captionrich_textMain post content
Hookrich_textOpening hook/headline (optional)
CTArich_textCall-to-action text (optional)

Version tags

automationvk97d9v7td222p0vkrn7k2dmqvd84ndmrcontentvk97d9v7td222p0vkrn7k2dmqvd84ndmrlatestvk97d9v7td222p0vkrn7k2dmqvd84ndmrnotionvk97d9v7td222p0vkrn7k2dmqvd84ndmrsocial-mediavk97d9v7td222p0vkrn7k2dmqvd84ndmr