jubjub
Publish content across TikTok, Instagram, YouTube, Facebook, LinkedIn, Vimeo, Vimeo OTT, and Mux. Manage team workflows, collaborate with your team, and track verified publish history.
Best use case
jubjub is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Publish content across TikTok, Instagram, YouTube, Facebook, LinkedIn, Vimeo, Vimeo OTT, and Mux. Manage team workflows, collaborate with your team, and track verified publish history.
Teams using jubjub should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/jubjub/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How jubjub Compares
| Feature / Agent | jubjub | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Publish content across TikTok, Instagram, YouTube, Facebook, LinkedIn, Vimeo, Vimeo OTT, and Mux. Manage team workflows, collaborate with your team, and track verified publish history.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
Related Guides
AI Agents for Marketing
Discover AI agents for marketing workflows, from SEO and content production to campaign research, outreach, and analytics.
AI Agent for YouTube Script Writing
Find AI agent skills for YouTube script writing, video research, content outlining, and repeatable channel production workflows.
ChatGPT vs Claude for Agent Skills
Compare ChatGPT and Claude for AI agent skills across coding, writing, research, and reusable workflow execution.
SKILL.md Source
# JubJub — SKILL.md ## 1. OVERVIEW JubJub is a content publishing and team collaboration platform for creators. Upload video content, collaborate with team members through threaded messaging and notifications, and publish across multiple platforms — TikTok, Instagram, YouTube, Facebook, LinkedIn, Vimeo, Vimeo OTT, and Mux — from a single workflow. Every publish creates a verified on-chain record on Base, giving creators immutable proof of ownership and publish history. Supported platforms: TikTok, Instagram, YouTube, LinkedIn, Facebook, Vimeo, Vimeo OTT, Mux. JubJub does not currently support X/Twitter. ## 2. AUTHENTICATION - **Get your key:** jubjubapp.com → Profile → Agents → Create New Agent - **Header:** `X-JubJub-Agent-Key: jjagent_YOUR_KEY` - **Base URL:** `https://api.jubjubapp.com` ## 3. PRICING JubJub uses a three-tier pricing model. All plans include multi-platform publishing and on-chain records. Publishing and platform access are never restricted by plan. | Plan | Price | Key features | |------|-------|--------------| | Free | $0 | 7-day workspace TTL, files deleted with workspace, no collections, 10 AI calls/min | | Creator | $39/month AUD | Permanent workspaces and storage, collections, 60 AI calls/min | | Studio | $199/month AUD | Everything in Creator, 300 AI calls/min, team seats, priority support | Sign up: studio.jubjubapp.com/auth?tab=signup Creator plan: studio.jubjubapp.com/checkout?plan=creator Studio plan: studio.jubjubapp.com/checkout?plan=studio **Per-action pricing (agent callers without a subscription):** | Tool | Cost | Currency | |------|------|----------| | `contents_create` | $0.25 | USDC | | `launches_create` | $0.50 | USDC | Payment is accepted via x402 (USDC on Base) or MPP (USDC on Tempo) — pass the credential in the `_meta` field of the tool call. Creator and Studio subscribers are not charged per-action. Subscribe at: studio.jubjubapp.com/profile/subscription If a publish fails due to plan limits, give the user the relevant upgrade link above. ## 4. TOOLS ### Workspaces (6 tools) | Tool | Description | |------|-------------| | `workspaces_create` | Create a new workspace. Required: `name`. Optional: `description`. | | `workspaces_list` | List workspaces for the current user. Optional filters: `team_id`, `role`, `limit`, `offset`. | | `workspaces_get` | Get workspace details. Required: `workspace_id`. | | `workspaces_update` | Update workspace name or description. Required: `workspace_id`. Optional: `name`, `description`. | | `workspaces_delete` | Delete a workspace. Required: `workspace_id`. Destructive. | | `workspaces_invite_link_create` | Generate a shareable invite link for a workspace — recipients can view content without an account and are prompted to sign up free to comment or approve. | ### Content (5 tools) | Tool | Description | |------|-------------| | `contents_create` | Create a content item. Required: `workspace_id`, `title`, `video_id`. Optional: `description`, `thumbnail_id`, `tags`, `language`, `is_made_for_kids`. **Payment required** for agent callers without an active subscription ($0.25 USDC). Pass x402 credential at `_meta["x402-payment"]` or MPP credential at `_meta["org.paymentauth/credential"]`. Returns `_payment` with `payment_verified`, `protocol`, `payment_id` on success. Subscribe to avoid per-action charges: studio.jubjubapp.com/profile/subscription | | `contents_list` | List content in a workspace. Required: `workspace_id`. Optional: `status`, `limit`, `offset`. | | `contents_get` | Get content details. Required: `content_id`. | | `contents_update` | Update content fields. Required: `content_id`. Optional: `title`, `description`, `tags`, `video_id`, `thumbnail_id`, `language`, `is_made_for_kids`. | | `contents_delete` | Delete content and associated resources. Required: `content_id`. Optional: `force` (bool). Destructive. | ### Platform Configs (3 tools) | Tool | Description | |------|-------------| | `platform_configs_create` | Create a platform configuration linking content to a credential. Required: `content_id`, `platform` (tiktok/instagram/youtube/facebook/linkedin/vimeo/vimeo_ott/mux), `credential_id`. Optional: `settings`, `visibility`/`privacy`. Mux defaults: playback_policy=public, mp4_support=standard. | | `platform_configs_list` | List platform configs for a content item. Optional: `content_id`. | | `platform_configs_update` | Update platform config settings. Required: `config_id`. Optional: `settings`. | ### Launches (5 tools) | Tool | Description | |------|-------------| | `launches_create` | Create a launch to publish or schedule content. Required: `content_id`, `platform_config_ids` (array). Optional: `scheduled_for` (ISO 8601 with timezone offset). **Payment required** for agent callers without an active subscription ($0.50 USDC). Pass x402 credential at `_meta["x402-payment"]` or MPP credential at `_meta["org.paymentauth/credential"]`. Returns `_payment` with `payment_verified`, `protocol`, `payment_id` and `_ownership` with on-chain proof details (transaction hash available in Vault once the onchain worker confirms). Subscribe to avoid per-action charges: studio.jubjubapp.com/profile/subscription | | `launches_get` | Get launch details including per-platform status. Required: `launch_id`. | | `launches_list` | List launches. Required: `workspace_id`. Optional: `limit`, `offset`. | | `launches_cancel` | Cancel a scheduled launch. Required: `launch_id`. Destructive. | | `launches_retry` | Retry a failed launch. Required: `launch_id`. Optional: `data` (object). | ### Teams (14 tools) | Tool | Description | |------|-------------| | `teams_create` | Create a new team. Required: `name`. Optional: `description`. | | `teams_list` | List teams for the current user. | | `teams_get` | Get team details. Required: `team_id`. | | `teams_update` | Update team name, description, or avatar. Required: `team_id`. Optional: `name`, `description`, `avatar_url`. | | `teams_delete` | Delete a team. Required: `team_id`. Destructive. | | `teams_transfer` | Transfer team ownership. Required: `team_id`, `new_owner_profile_id`. Destructive. | | `teams_members_list` | List team members. Required: `team_id`. | | `teams_members_update` | Update a member's role. Required: `team_id`, `member_profile_id`, `role`. Optional: `custom_permissions`. | | `teams_members_remove` | Remove a member from a team. Required: `team_id`, `member_profile_id`. Destructive. | | `teams_leave` | Leave a team. Required: `team_id`. Destructive. | | `teams_permissions` | Get your permissions for a team. Required: `team_id`. | | `teams_stats` | Get team statistics. Required: `team_id`. | | `teams_search` | Search teams by name. Required: `query`. | | `teams_activity` | Get recent team activity. Required: `team_id`. | ### Team Invites (6 tools) | Tool | Description | |------|-------------| | `teams_invite` | Invite someone to a team by email. Required: `team_id`, `invitee_email`, `role`. Optional: `custom_permissions`. | | `teams_invites_list` | List invitations for a team. Required: `team_id`. Optional: `status`. | | `teams_invites_cancel` | Cancel a pending invite. Required: `team_id`, `invite_id`. Destructive. | | `teams_invites_pending` | List pending invites for the current user. | | `teams_invites_accept` | Accept a team invitation. Required: `invite_id`. | | `teams_invites_reject` | Reject a team invitation. Required: `invite_id`. | ### Team Workspaces (3 tools) | Tool | Description | |------|-------------| | `teams_workspaces_link` | Link an existing workspace to a team. Required: `team_id`, `workspace_id`. | | `teams_workspaces_unlink` | Unlink a workspace from a team. Required: `team_id`, `workspace_id`. Destructive. | | `teams_workspaces_list` | List workspaces linked to a team. Required: `team_id`. | ### Communication (6 tools) | Tool | Description | |------|-------------| | `communication_create` | Send a message in a scope (team, workspace, content, media, or collection). Required: `scope_type`, `scope_id`, `body`. Optional: `parent_message_id`, `thread_root_id`, `message_type`, `decision_type`, `mentions`, `metadata`. | | `communication_list` | List messages by scope. Required: `scope_type`, `scope_id`. Optional: `limit`, `cursor`, `thread_root_id`. | | `communication_get` | Get a single message by ID. Required: `message_id`. Useful for fetching messages referenced in notifications without knowing the scope. | | `communication_edit` | Edit a message. Required: `message_id`. Optional: `body`, `mentions`, `metadata`. | | `communication_delete` | Soft-delete a message. Required: `message_id`. Destructive. | | `communication_resolve` | Resolve a decision message (approve/reject/withdraw). Required: `message_id`, `decision_status`. Optional: `resolution`. | ### Notifications (2 tools) | Tool | Description | |------|-------------| | `notifications_list` | List notifications for the current user. Optional: `cursor`, `limit`, `unread_only`. | | `notifications_mark_read` | Mark a notification as read. Required: `notification_id`. | ### Credentials (4 tools) | Tool | Description | |------|-------------| | `credentials_list` | List all connected platform credentials. Optional: `platform` filter. | | `credentials_list_by_platform` | List credentials grouped by platform. Returns all platforms with their connected accounts. | | `credentials_connect` | Start OAuth flow to connect a platform account. Required: `platform` (tiktok/instagram/youtube/facebook/linkedin/vimeo). Returns an auth URL the user must open in their browser. | | `credentials_connect_token` | Connect a token-based platform (Mux or Vimeo OTT) using API credentials. Required: `platform` (mux or vimeo_ott), `token_id`, `token_secret`. Optional: `nickname`. | ### Profiles (3 tools) | Tool | Description | |------|-------------| | `profiles_search` | Look up a user profile by email. Required: `email`. Returns profile_id for use in team and member operations. | | `profiles_get` | Get a user profile by ID. Required: `profile_id`. | | `profiles_batch` | Batch get multiple profiles. Required: `ids` (array or comma-separated string, max 50). | ### Media & Uploads (5 tools) | Tool | Description | |------|-------------| | `media_ingest_url` | Ingest media from a public URL (server-side fetch). Required: `url`, `workspace_id`. Optional: `filename`. | | `upload_sessions_create_link` | Create a browser upload link. Required: `workspace_id`. Returns a URL the user must open to upload files. | | `upload_sessions_get` | Get upload session status and groupings. Required: `upload_session_id`, `token`. Poll until status reaches `groupings_inferred`. | | `upload_sessions_infer_groupings` | Trigger grouping inference on an upload session. Required: `upload_session_id`, `token`. | | `upload_sessions_confirm_groupings` | Confirm inferred groupings. Required: `upload_session_id`, `token`, `groupings`. | ### Collections (3 tools) | Tool | Description | |------|-------------| | `collections_create` | Create a collection in a workspace. Required: `workspace_id`, `name`. Optional: `description`. | | `collections_list` | List collections in a workspace. Required: `workspace_id`. | | `collections_get` | Get collection details. Required: `collection_id`. | ### System (1 tool) | Tool | Description | |------|-------------| | `mcp_version` | Returns the MCP server version. No parameters. Use to verify connectivity. | ## 5. KEY CONCEPTS - **Workspace** — Container for content, media, and collaboration. Created unlinked; link to a team via `teams_workspaces_link`. - **Content item** — A single publishable piece. One content item maps to one publishing event. Requires a `video_id` from an uploaded file. - **Platform config** — Links a content item to a platform credential with platform-specific settings. Create one per platform, all on the same content item. - **Launch** — The publish event. Takes a `content_id` and `platform_config_ids`. Can be immediate or scheduled via `scheduled_for`. - **On-chain record** — Every launch creates a verified record on Base blockchain for proof of ownership. ## 6. COMMON WORKFLOWS **Publish a video:** 1. `workspaces_create` → `upload_sessions_create_link` → user uploads → poll `upload_sessions_get` → `contents_create` with `video_id` from groupings → `platform_configs_create` per platform → `launches_create` **Invite a team member:** 1. `teams_invite` with their email → they accept via `teams_invites_accept` **Connect a platform (OAuth — TikTok, Instagram, YouTube, Facebook, LinkedIn, Vimeo):** 1. `credentials_connect` → user opens auth URL in browser → poll `credentials_list` to confirm **Connect a platform (API token — Mux, Vimeo OTT):** 1. `credentials_connect_token` with platform, token_id, token_secret → connection confirmed immediately ## 7. EXAMPLE PROMPTS 1. "Publish my latest video to TikTok and Instagram at 3pm EST tomorrow." 2. "Create a new workspace called 'March Campaign' for my marketing team." 3. "Send a message to the Spring Launch workspace saying the video is ready for review." 4. "What's the status of my last launch?" 5. "Schedule this video to YouTube and LinkedIn for next Monday at 9am PST." 6. "Add jamie@example.com to my content team as an editor." 7. "Check my unread notifications." 8. "List all my workspaces." 9. "Connect my TikTok account." 10. "Show me all pending team invitations." ## 8. NOTES - The `video_id` field in `contents_create` comes from upload session groupings (`video_media_id`) or `media_ingest_url`. - `scheduled_for` must include a timezone offset (e.g., `2026-03-15T15:00:00-05:00`). Naive datetimes default to UTC. - Upload sessions produce a browser URL — the user must open it to upload. The agent polls `upload_sessions_get` until groupings are ready. - `credentials_connect` returns an auth URL — the user must complete OAuth in their browser. The agent polls `credentials_list` to confirm connection. - Team roles: OWNER > ADMIN > MANAGER > EDITOR > PUBLISHER > VIEWER. - Workspaces are always created unlinked. Use `teams_workspaces_link` to associate a workspace with a team. - Profile tools (`profiles_search`, `profiles_get`, `profiles_batch`) resolve human-readable emails to `profile_id` values needed by team and member operations. - Free plan workspaces expire after 7 days. Upgrade to Creator or Studio for permanent workspaces.
Related Skills
---
name: article-factory-wechat
humanizer
Remove signs of AI-generated writing from text. Use when editing or reviewing text to make it sound more natural and human-written. Based on Wikipedia's comprehensive "Signs of AI writing" guide. Detects and fixes patterns including: inflated symbolism, promotional language, superficial -ing analyses, vague attributions, em dash overuse, rule of three, AI vocabulary words, negative parallelisms, and excessive conjunctive phrases.
find-skills
Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities. This skill should be used when the user is looking for functionality that might exist as an installable skill.
tavily-search
Use Tavily API for real-time web search and content extraction. Use when: user needs real-time web search results, research, or current information from the web. Requires Tavily API key.
baidu-search
Search the web using Baidu AI Search Engine (BDSE). Use for live information, documentation, or research topics.
agent-autonomy-kit
Stop waiting for prompts. Keep working.
Meeting Prep
Never walk into a meeting unprepared again. Your agent researches all attendees before calendar events—pulling LinkedIn profiles, recent company news, mutual connections, and conversation starters. Generates a briefing doc with talking points, icebreakers, and context so you show up informed and confident. Triggered automatically before meetings or on-demand. Configure research depth, advance timing, and output format. Walking into meetings blind is amateur hour—missed connections, generic small talk, zero leverage. Use when setting up meeting intelligence, researching specific attendees, generating pre-meeting briefs, or automating your prep workflow.
self-improvement
Captures learnings, errors, and corrections to enable continuous improvement. Use when: (1) A command or operation fails unexpectedly, (2) User corrects Claude ('No, that's wrong...', 'Actually...'), (3) User requests a capability that doesn't exist, (4) An external API or tool fails, (5) Claude realizes its knowledge is outdated or incorrect, (6) A better approach is discovered for a recurring task. Also review learnings before major tasks.
botlearn-healthcheck
botlearn-healthcheck — BotLearn autonomous health inspector for OpenClaw instances across 5 domains (hardware, config, security, skills, autonomy); triggers on system check, health report, diagnostics, or scheduled heartbeat inspection.
linkedin-cli
A bird-like LinkedIn CLI for searching profiles, checking messages, and summarizing your feed using session cookies.
notebooklm
Google NotebookLM 非官方 Python API 的 OpenClaw Skill。支持内容生成(播客、视频、幻灯片、测验、思维导图等)、文档管理和研究自动化。当用户需要使用 NotebookLM 生成音频概述、视频、学习材料或管理知识库时触发。
小红书长图文发布 Skill
## 概述