skills/storyclaw-x2c-publish/SKILL.md
X2C Distribution and Wallet API — publish video to X2C platform, manage assets (balance, claim X2C, swap to USDC, withdraw, transactions).
npx skillsauth add storyclaw-official/talenthub storyclaw-x2c-publishInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Publish video content to the X2C platform and manage digital assets.
-m 60Store API key in credentials/{USER_ID}.json:
{
"x2cApiKey": "x2c_sk_xxx"
}
Set USER_ID env var when calling. OpenClaw passes it automatically from chat context.
Or set X2C_API_KEY env var, or configure via skills."x2c-publish".env.X2C_API_KEY in ~/.openclaw/openclaw.json.
1. distribution/categories → Get categories
2. distribution/upload-url → Get S3 presigned upload URLs
3. Upload files to S3 via HTTP PUT
4. distribution/publish → Submit with public_url from Step 3
5. distribution/query → Check review status
6. distribution/add-episodes → Add more episodes
7. distribution/list → List all projects
Two ways to provide videos:
All requests go to the X2C Open API. The base URL is configured via X2C_API_BASE_URL env var or defaults to the production endpoint.
Headers:
Content-Type: application/jsonX-API-Key: <your_x2c_api_key>curl -m 60 -X POST "$X2C_API_BASE_URL" \
-H "Content-Type: application/json" \
-H "X-API-Key: $X2C_API_KEY" \
-d '{"action": "distribution/categories", "lang": "zh-CN"}'
curl -m 60 -X POST "$X2C_API_BASE_URL" \
-H "Content-Type: application/json" \
-H "X-API-Key: $X2C_API_KEY" \
-d '{
"action": "distribution/upload-url",
"files": [
{"file_type": "cover", "file_name": "cover.jpg", "content_type": "image/jpeg"},
{"file_type": "video", "file_name": "ep1.mp4", "content_type": "video/mp4"}
]
}'
Response includes upload_url, upload_headers, and public_url.
Use the upload_url and upload_headers from the previous response:
curl -X PUT "<upload_url>" \
-H "Content-Type: image/jpeg" \
<additional headers from upload_headers> \
--data-binary @cover.jpg
curl -m 60 -X POST "$X2C_API_BASE_URL" \
-H "Content-Type: application/json" \
-H "X-API-Key: $X2C_API_KEY" \
-d '{
"action": "distribution/publish",
"title": "My Drama",
"description": "A story about...",
"category_id": "uuid",
"cover_url": "https://...",
"video_urls": ["https://..."],
"enable_prediction": false
}'
| Param | Required | Description | | ----------------- | -------- | ---------------------------- | | title | Yes | Project name (max 100 chars) | | description | Yes | Synopsis (max 2000 chars) | | category_id | Yes | Category UUID | | cover_url | Yes | Cover image URL | | video_urls | Yes | Array of video URLs (1-10) | | enable_prediction | No | Enable prediction market |
curl -m 60 -X POST "$X2C_API_BASE_URL" \
-H "Content-Type: application/json" \
-H "X-API-Key: $X2C_API_KEY" \
-d '{"action": "distribution/query", "project_id": "uuid"}'
Status values: draft, pending_review, approved, rejected
curl -m 60 -X POST "$X2C_API_BASE_URL" \
-H "Content-Type: application/json" \
-H "X-API-Key: $X2C_API_KEY" \
-d '{
"action": "distribution/add-episodes",
"project_id": "uuid",
"video_urls": ["https://..."]
}'
curl -m 60 -X POST "$X2C_API_BASE_URL" \
-H "Content-Type: application/json" \
-H "X-API-Key: $X2C_API_KEY" \
-d '{"action": "distribution/list", "page": 1, "page_size": 20, "status": "approved"}'
curl -m 60 -X POST "$X2C_API_BASE_URL" \
-H "Content-Type: application/json" \
-H "X-API-Key: $X2C_API_KEY" \
-d '{"action": "wallet/balance"}'
Returns: credits, x2c_wallet_balance, x2c_pending_claim, x2c_pending_release, usdc_balance, wallet_address.
curl -m 60 -X POST "$X2C_API_BASE_URL" \
-H "Content-Type: application/json" \
-H "X-API-Key: $X2C_API_KEY" \
-d '{"action": "wallet/claim-x2c", "amount": 50.0}'
curl -m 60 -X POST "$X2C_API_BASE_URL" \
-H "Content-Type: application/json" \
-H "X-API-Key: $X2C_API_KEY" \
-d '{"action": "wallet/swap-x2c", "amount": 100.0}'
curl -m 60 -X POST "$X2C_API_BASE_URL" \
-H "Content-Type: application/json" \
-H "X-API-Key: $X2C_API_KEY" \
-d '{"action": "wallet/withdraw-usdc", "amount": 10.0, "to_address": "SolanaAddress..."}'
curl -m 60 -X POST "$X2C_API_BASE_URL" \
-H "Content-Type: application/json" \
-H "X-API-Key: $X2C_API_KEY" \
-d '{"action": "wallet/transactions", "page": 1, "page_size": 20, "type": "all"}'
Types: earnings (mining, distribution, referral, etc.), purchases (consume, swap, withdrawal, etc.), or all.
data-ai
Manage X (Twitter) accounts — post tweets, like, reply, retweet, view timeline, search, auto-interact, analyze data.
testing
Execute cryptocurrency trades on exchanges (Binance, OKX) with risk controls, user confirmation, and audit logging.
content-media
Self-evolving Polymarket trading bot. Design strategy with user, run paper trading, auto-improve until edge target met, then ask to switch to live.
development
US stock and crypto trading via Alpaca API. Paper trading (simulated) and real trading supported. Real-time quotes, orders, positions, RSI strategy.