← Back to Skills Marketplace
noesis-boss

Content360

by Noesis-Boss · GitHub ↗ · v1.0.0 · MIT-0
cross-platform ⚠ suspicious
130
Downloads
0
Stars
0
Active Installs
1
Versions
Install in OpenClaw
/install content360
Description
Integrates with Content360 (app.content360.io) to create, schedule, and publish social media content across Facebook, LinkedIn, X, Instagram, YouTube, TikTok...
README (SKILL.md)

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": "\x3Cdiv>Post content\x3C/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 "\x3Cdiv>text\x3C/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)
Usage Guidance
This package mostly does what it says (sync Notion → Content360) but contains troubling inconsistencies. Before installing: 1) Do not provide your Content360 password or Notion token unless you trust the source — prefer issuing scoped tokens and use only the minimum credential required. 2) Verify the full script (the file provided is truncated in the listing) for any hard-coded endpoints or exfiltration logic. 3) Ask the publisher for a homepage, source repo, and explanation for why registry metadata lists no required env vars. 4) Remove or rotate any tokens/ passwords after testing. 5) Test in an isolated account/environment (and a throwaway Notion database) because the script will modify remote data (it marks items as Posted). If you cannot verify the origin or full code, treat this skill as high-risk and avoid supplying real credentials.
Capability Analysis
Type: OpenClaw Skill Name: content360 Version: 1.0.0 The content360 skill is a functional integration for syncing social media content from a Notion database to the Content360 platform. The core logic in `scripts/content360_sync.py` implements a reverse-engineered authentication flow (Laravel Sanctum/Inertia.js) requiring a session login and bearer token, which is clearly documented in `SKILL.md` and `README.md`. While the script handles sensitive credentials like `CONTENT360_PASSWORD`, this behavior is aligned with the stated purpose of automating content publishing, and no evidence of data exfiltration, unauthorized execution, or malicious prompt injection was found.
Capability Tags
requires-oauth-token
Capability Assessment
Purpose & Capability
The skill claims to integrate Content360 and the code/docs show it does: it needs Content360 auth and a Notion integration to sync posts. However the registry metadata declares no required environment variables or primary credential while the SKILL.md/README/script clearly require CONTENT360_EMAIL, CONTENT360_PASSWORD, CONTENT360_API_KEY, CONTENT360_ORG_ID, NOTION_API_KEY and NOTION_DATABASE_ID. That mismatch is unexpected and unexplained.
Instruction Scope
Runtime instructions and the included script perform actions matching the stated purpose: logging into Content360, reading a Notion database, creating posts, and updating the Notion 'Posted' checkbox. The instructions do not appear to request unrelated local files or system credentials. They do, however, direct the agent to store and use multiple secrets and to modify remote Notion pages (marking posts as posted), which is destructive by design and should be explicitly approved by the user.
Install Mechanism
No install spec and only a simple pip dependency (requests) is used per README. There are no external downloads or obscure install sources. No binary install or archive extraction is present.
Credentials
The script requires multiple sensitive environment values (Content360 email/password and bearer token, org ID, Notion API key and database ID). Those are proportionate to the declared functionality, but the registry incorrectly lists none, and README contains hard-coded example values (an email, ORG id and a Notion DB id). Hard-coded identifiers and an example email are suspicious and could indicate leaked defaults or sloppy copy-paste.
Persistence & Privilege
The skill does not request always: true and does not modify other skills or system-wide settings. It will, however, modify remote Notion pages (marking posts as posted) which is part of its intended behavior and requires user consent.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install content360
  3. After installation, invoke the skill by name or use /content360
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.0
Initial release of the Content360 integration skill. - Connects Zo Computer with Content360 for social media management. - Supports creating, scheduling, and publishing content across major platforms including Facebook, LinkedIn, X, Instagram, YouTube, TikTok, Pinterest, and Reddit. - Enables media upload, analytics access, and inbox management. - Provides detailed API documentation for posts, accounts, media, tags, webhooks, and more. - Includes a sync script for automated post creation and scheduling from a Notion content calendar.
Metadata
Slug content360
Version 1.0.0
License MIT-0
All-time Installs 0
Active Installs 0
Total Versions 1
Frequently Asked Questions

What is Content360?

Integrates with Content360 (app.content360.io) to create, schedule, and publish social media content across Facebook, LinkedIn, X, Instagram, YouTube, TikTok... It is an AI Agent Skill for Claude Code / OpenClaw, with 130 downloads so far.

How do I install Content360?

Run "/install content360" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Content360 free?

Yes, Content360 is completely free, licensed under MIT-0. You can download, install and use it at no cost.

Which platforms does Content360 support?

Content360 is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Content360?

It is built and maintained by Noesis-Boss (@noesis-boss); the current version is v1.0.0.

💬 Comments