@clawhub-justoneapi-256daef3f1
Call GET /api/douyin-xingtu/gw/api/author/get_author_platform_channel_info_v2/v1 for Douyin Creator Marketplace (Xingtu) Creator Channel Metrics through Just...
---
name: Douyin Creator Marketplace (Xingtu) Creator Channel Metrics API
description: Call GET /api/douyin-xingtu/gw/api/author/get_author_platform_channel_info_v2/v1 for Douyin Creator Marketplace (Xingtu) Creator Channel Metrics through JustOneAPI with oAuthorId.
author: JustOneAPI
homepage: https://api.justoneapi.com
metadata: {"openclaw":{"homepage":"https://api.justoneapi.com","primaryEnv":"JUST_ONE_API_TOKEN","requires":{"bins":["node"],"env":["JUST_ONE_API_TOKEN"]},"skillKey":"justoneapi_douyin_xingtu_gw_api_author_get_author_platform_channel_info_v2"}}
---
# Douyin Creator Marketplace (Xingtu) Creator Channel Metrics
Use this focused JustOneAPI skill for creator Channel Metrics in Douyin Creator Marketplace (Xingtu). It targets `GET /api/douyin-xingtu/gw/api/author/get_author_platform_channel_info_v2/v1`. Required non-token inputs are `oAuthorId`. OpenAPI describes it as: Get Douyin Creator Marketplace (Xingtu) creator Channel Metrics data, including platform distribution and channel performance data used, for creator evaluation.
## Endpoint Scope
- Platform key: `douyin-xingtu`
- Endpoint key: `gw/api/author/get_author_platform_channel_info_v2`
- Platform family: Douyin Creator Marketplace (Xingtu)
- Skill slug: `justoneapi-douyin-xingtu-gw-api-author-get-author-platform-channel-info-v2`
| Operation | Version | Method | Path | OpenAPI summary |
| --- | --- | --- | --- | --- |
| `gwApiAuthorGetAuthorPlatformChannelInfoV2V1` | `v1` | `GET` | `/api/douyin-xingtu/gw/api/author/get_author_platform_channel_info_v2/v1` | Creator Channel Metrics |
## Inputs
| Parameter | In | Required by | Optional by | Type | Notes |
| --- | --- | --- | --- | --- | --- |
| `oAuthorId` | `query` | all | n/a | `string` | Author's unique ID |
| `platform` | `query` | n/a | all | `string` | Platform type. Available Values: - `SHORT_VIDEO`: Short video - `LIVE_STREAMING`: Live streaming - `PICTURE_TEXT`: Picture and text - `SHORT_DRAMA`: Short drama |
| `platform` enum | values | n/a | n/a | n/a | `LIVE_STREAMING`, `PICTURE_TEXT`, `SHORT_DRAMA`, `SHORT_VIDEO` |
Request body: none documented; send parameters through path or query arguments.
## Version Choice
Use `gwApiAuthorGetAuthorPlatformChannelInfoV2V1` for the documented `v1` endpoint. There are no alternate versions grouped in this skill.
## Run This Endpoint
Supported operation IDs in this skill: `gwApiAuthorGetAuthorPlatformChannelInfoV2V1`.
```bash
node {baseDir}/bin/run.mjs --operation "gwApiAuthorGetAuthorPlatformChannelInfoV2V1" --token "$JUST_ONE_API_TOKEN" --params-json '{"oAuthorId":"<oAuthorId>"}'
```
Ask for any missing required parameter before calling the helper. Keep user-provided IDs, cursors, keywords, and filters unchanged.
## Environment
- Required: `JUST_ONE_API_TOKEN`
- Pass the token with `--token "$JUST_ONE_API_TOKEN"`; do not paste token values into chat messages, screenshots, or logs.
- Get a token from [Just One API Dashboard](https://dashboard.justoneapi.com/en/login?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_gw_api_author_get_author_platform_channel_info_v2&utm_content=project_link).
- Authentication details: [Just One API Usage Guide](https://docs.justoneapi.com/en/?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_gw_api_author_get_author_platform_channel_info_v2&utm_content=project_link).
## Output Focus
- State the operation ID and endpoint path used, for example `gwApiAuthorGetAuthorPlatformChannelInfoV2V1` on `/api/douyin-xingtu/gw/api/author/get_author_platform_channel_info_v2/v1`.
- Echo the required lookup scope (`oAuthorId`) before summarizing results.
- Prioritize fields that support this endpoint purpose: Get Douyin Creator Marketplace (Xingtu) creator Channel Metrics data, including platform distribution and channel performance data used, for creator evaluation.
- Return raw JSON only after the short, endpoint-specific summary.
- If the backend errors, include the backend payload and the exact operation ID.
FILE:bin/run.mjs
#!/usr/bin/env node
const manifest = {
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/gw/api/author/get_author_platform_channel_info_v2/v1 for Douyin Creator Marketplace (Xingtu) Creator Channel Metrics through JustOneAPI with oAuthorId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Creator Channel Metrics",
"openapi": "3.1.0",
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_gw_api_author_get_author_platform_channel_info_v2",
"slug": "justoneapi-douyin-xingtu-gw-api-author-get-author-platform-channel-info-v2",
"sourceTitle": "OpenAPI definition",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) creator Channel Metrics data, including platform distribution and channel performance data used, for creator evaluation.",
"method": "GET",
"operationId": "gwApiAuthorGetAuthorPlatformChannelInfoV2V1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Author's unique ID.",
"enumValues": [],
"location": "query",
"name": "oAuthorId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": "SHORT_VIDEO",
"description": "Platform type.\n\nAvailable Values:\n- `SHORT_VIDEO`: Short video\n- `LIVE_STREAMING`: Live streaming\n- `PICTURE_TEXT`: Picture and text\n- `SHORT_DRAMA`: Short drama",
"enumValues": [
"SHORT_VIDEO",
"LIVE_STREAMING",
"PICTURE_TEXT",
"SHORT_DRAMA"
],
"location": "query",
"name": "platform",
"required": false,
"schemaType": "string"
}
],
"path": "/api/douyin-xingtu/gw/api/author/get_author_platform_channel_info_v2/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Creator Channel Metrics",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"endpointPath": "gw/api/author/get_author_platform_channel_info_v2",
"skillType": "interface"
};
const args = parseArgs(process.argv.slice(2));
if (!args.operation) {
fail("Missing required --operation argument.");
}
const operation = manifest.operations.find((item) => item.operationId === args.operation);
if (!operation) {
fail(`Unknown operation "args.operation".`, { availableOperations: manifest.operations.map((item) => item.operationId) });
}
const params = parseParams(args.paramsJson);
applyDefaults(operation, params);
injectToken(operation, params, args.token);
validateRequired(operation, params);
const baseUrl = manifest.baseUrl;
const url = new URL(operation.path, ensureBaseUrl(baseUrl));
applyPathParams(operation, params, url);
applyQueryParams(operation, params, url);
const requestInit = {
headers: {
"accept": "application/json",
},
method: operation.method,
};
if (operation.requestBody && params.body !== undefined) {
requestInit.body = JSON.stringify(params.body);
requestInit.headers["content-type"] = operation.requestBody.contentType || "application/json";
}
let response;
try {
response = await fetch(url, requestInit);
} catch (error) {
fail("Network request failed.", {
cause: error instanceof Error ? error.message : String(error),
operationId: operation.operationId,
});
}
const rawBody = await response.text();
let parsedBody;
try {
parsedBody = rawBody ? JSON.parse(rawBody) : null;
} catch (error) {
if (!response.ok) {
fail("Backend returned a non-JSON error response.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
fail("Backend returned invalid JSON.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
if (!response.ok) {
fail("Backend request failed.", {
body: parsedBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
process.stdout.write(`JSON.stringify(parsedBody, null, 2)\n`);
function parseArgs(argv) {
const parsed = { operation: null, paramsJson: "{}", token: null };
for (let index = 0; index < argv.length; index += 1) {
const flag = argv[index];
const value = argv[index + 1];
if (flag === "--operation") {
parsed.operation = value;
index += 1;
continue;
}
if (flag === "--params-json") {
parsed.paramsJson = value;
index += 1;
continue;
}
if (flag === "--token") {
parsed.token = value;
index += 1;
continue;
}
fail(`Unknown argument "flag".`);
}
return parsed;
}
function parseParams(input) {
try {
const parsed = JSON.parse(input || "{}");
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
fail("--params-json must decode to a JSON object.");
}
return parsed;
} catch (error) {
fail("Failed to parse --params-json.", {
cause: error instanceof Error ? error.message : String(error),
});
}
}
function applyDefaults(operation, params) {
for (const parameter of operation.parameters) {
if (params[parameter.name] === undefined && parameter.defaultValue !== null) {
params[parameter.name] = parameter.defaultValue;
}
}
}
function injectToken(operation, params, cliToken) {
const tokenParam = operation.parameters.find((parameter) => parameter.name === "token");
if (!tokenParam || params.token !== undefined) {
return;
}
if (!cliToken) {
fail("--token is required for this operation.", {
operationId: operation.operationId,
});
}
params.token = cliToken;
}
function validateRequired(operation, params) {
const missing = [];
for (const parameter of operation.parameters) {
if (parameter.required && params[parameter.name] === undefined) {
missing.push(parameter.name);
}
}
if (operation.requestBody?.required && params.body === undefined) {
missing.push("body");
}
if (missing.length) {
fail("Missing required parameters.", {
missing,
operationId: operation.operationId,
});
}
}
function applyPathParams(operation, params, url) {
let pathname = url.pathname;
for (const parameter of operation.parameters.filter((item) => item.location === "path")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
pathname = pathname.replace(`{parameter.name}`, encodeURIComponent(String(value)));
}
url.pathname = pathname;
}
function applyQueryParams(operation, params, url) {
for (const parameter of operation.parameters.filter((item) => item.location === "query")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
appendValue(url.searchParams, parameter.name, value);
}
}
function appendValue(searchParams, name, value) {
if (Array.isArray(value)) {
for (const item of value) {
appendValue(searchParams, name, item);
}
return;
}
if (value && typeof value === "object") {
searchParams.append(name, JSON.stringify(value));
return;
}
searchParams.append(name, String(value));
}
function ensureBaseUrl(value) {
return value.endsWith("/") ? value : `value/`;
}
function fail(message, details = null) {
const payload = { message };
if (details) {
payload.details = details;
}
process.stderr.write(`JSON.stringify(payload, null, 2)\n`);
process.exit(1);
}
FILE:generated/operations.json
{
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/gw/api/author/get_author_platform_channel_info_v2/v1 for Douyin Creator Marketplace (Xingtu) Creator Channel Metrics through JustOneAPI with oAuthorId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Creator Channel Metrics",
"endpointPath": "gw/api/author/get_author_platform_channel_info_v2",
"openapi": "3.1.0",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) creator Channel Metrics data, including platform distribution and channel performance data used, for creator evaluation.",
"method": "GET",
"operationId": "gwApiAuthorGetAuthorPlatformChannelInfoV2V1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Author's unique ID.",
"enumValues": [],
"location": "query",
"name": "oAuthorId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": "SHORT_VIDEO",
"description": "Platform type.\n\nAvailable Values:\n- `SHORT_VIDEO`: Short video\n- `LIVE_STREAMING`: Live streaming\n- `PICTURE_TEXT`: Picture and text\n- `SHORT_DRAMA`: Short drama",
"enumValues": [
"SHORT_VIDEO",
"LIVE_STREAMING",
"PICTURE_TEXT",
"SHORT_DRAMA"
],
"location": "query",
"name": "platform",
"required": false,
"schemaType": "string"
}
],
"path": "/api/douyin-xingtu/gw/api/author/get_author_platform_channel_info_v2/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Creator Channel Metrics",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_gw_api_author_get_author_platform_channel_info_v2",
"skillType": "interface",
"slug": "justoneapi-douyin-xingtu-gw-api-author-get-author-platform-channel-info-v2",
"sourceTitle": "OpenAPI definition"
}
FILE:generated/operations.md
# Douyin Creator Marketplace (Xingtu) Creator Channel Metrics operations
Generated from JustOneAPI OpenAPI for platform key `douyin-xingtu`.
Endpoint group: `gw/api/author/get_author_platform_channel_info_v2`.
## `gwApiAuthorGetAuthorPlatformChannelInfoV2V1`
- Method: `GET`
- Path: `/api/douyin-xingtu/gw/api/author/get_author_platform_channel_info_v2/v1`
- Summary: Creator Channel Metrics
- Description: Get Douyin Creator Marketplace (Xingtu) creator Channel Metrics data, including platform distribution and channel performance data used, for creator evaluation.
- Tags: `Douyin Creator Marketplace (Xingtu)`
### Parameters
| Name | In | Required | Type | Default | Description |
| --- | --- | --- | --- | --- | --- |
| `token` | `query` | yes | `string` | n/a | User authentication token. |
| `oAuthorId` | `query` | yes | `string` | n/a | Author's unique ID. |
| `platform` | `query` | no | `string` | `SHORT_VIDEO` | Platform type.
Available Values:
- `SHORT_VIDEO`: Short video
- `LIVE_STREAMING`: Live streaming
- `PICTURE_TEXT`: Picture and text
- `SHORT_DRAMA`: Short drama |
| enum | values | no | n/a | n/a | `SHORT_VIDEO`, `LIVE_STREAMING`, `PICTURE_TEXT`, `SHORT_DRAMA` |
### Request body
No request body.
### Responses
- `200`: OK
Call GET /api/douyin-xingtu/gw/api/author/get_author_marketing_info/v1 for Douyin Creator Marketplace (Xingtu) Marketing Metrics through JustOneAPI with oAut...
---
name: Douyin Creator Marketplace (Xingtu) Marketing Metrics API
description: Call GET /api/douyin-xingtu/gw/api/author/get_author_marketing_info/v1 for Douyin Creator Marketplace (Xingtu) Marketing Metrics through JustOneAPI with oAuthorId.
author: JustOneAPI
homepage: https://api.justoneapi.com
metadata: {"openclaw":{"homepage":"https://api.justoneapi.com","primaryEnv":"JUST_ONE_API_TOKEN","requires":{"bins":["node"],"env":["JUST_ONE_API_TOKEN"]},"skillKey":"justoneapi_douyin_xingtu_gw_api_author_get_author_marketing_info"}}
---
# Douyin Creator Marketplace (Xingtu) Marketing Metrics
Use this focused JustOneAPI skill for marketing Metrics in Douyin Creator Marketplace (Xingtu). It targets `GET /api/douyin-xingtu/gw/api/author/get_author_marketing_info/v1`. Required non-token inputs are `oAuthorId`. OpenAPI describes it as: Get Douyin Creator Marketplace (Xingtu) marketing metrics data, including rate card details and commercial service metrics, for creator evaluation, campaign planning, and marketplace research.
## Endpoint Scope
- Platform key: `douyin-xingtu`
- Endpoint key: `gw/api/author/get_author_marketing_info`
- Platform family: Douyin Creator Marketplace (Xingtu)
- Skill slug: `justoneapi-douyin-xingtu-gw-api-author-get-author-marketing-info`
| Operation | Version | Method | Path | OpenAPI summary |
| --- | --- | --- | --- | --- |
| `gwApiAuthorGetAuthorMarketingInfoV1` | `v1` | `GET` | `/api/douyin-xingtu/gw/api/author/get_author_marketing_info/v1` | Marketing Metrics |
## Inputs
| Parameter | In | Required by | Optional by | Type | Notes |
| --- | --- | --- | --- | --- | --- |
| `oAuthorId` | `query` | all | n/a | `string` | Author's unique ID |
| `platform` | `query` | n/a | all | `string` | Platform type. Available Values: - `SHORT_VIDEO`: Short video - `LIVE_STREAMING`: Live streaming - `PICTURE_TEXT`: Picture and text - `SHORT_DRAMA`: Short drama |
| `platform` enum | values | n/a | n/a | n/a | `LIVE_STREAMING`, `PICTURE_TEXT`, `SHORT_DRAMA`, `SHORT_VIDEO` |
Request body: none documented; send parameters through path or query arguments.
## Version Choice
Use `gwApiAuthorGetAuthorMarketingInfoV1` for the documented `v1` endpoint. There are no alternate versions grouped in this skill.
## Run This Endpoint
Supported operation IDs in this skill: `gwApiAuthorGetAuthorMarketingInfoV1`.
```bash
node {baseDir}/bin/run.mjs --operation "gwApiAuthorGetAuthorMarketingInfoV1" --token "$JUST_ONE_API_TOKEN" --params-json '{"oAuthorId":"<oAuthorId>"}'
```
Ask for any missing required parameter before calling the helper. Keep user-provided IDs, cursors, keywords, and filters unchanged.
## Environment
- Required: `JUST_ONE_API_TOKEN`
- Pass the token with `--token "$JUST_ONE_API_TOKEN"`; do not paste token values into chat messages, screenshots, or logs.
- Get a token from [Just One API Dashboard](https://dashboard.justoneapi.com/en/login?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_gw_api_author_get_author_marketing_info&utm_content=project_link).
- Authentication details: [Just One API Usage Guide](https://docs.justoneapi.com/en/?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_gw_api_author_get_author_marketing_info&utm_content=project_link).
## Output Focus
- State the operation ID and endpoint path used, for example `gwApiAuthorGetAuthorMarketingInfoV1` on `/api/douyin-xingtu/gw/api/author/get_author_marketing_info/v1`.
- Echo the required lookup scope (`oAuthorId`) before summarizing results.
- Prioritize fields that support this endpoint purpose: Get Douyin Creator Marketplace (Xingtu) marketing metrics data, including rate card details and commercial service metrics, for creator evaluation, campaign planning, and marketplace research.
- Return raw JSON only after the short, endpoint-specific summary.
- If the backend errors, include the backend payload and the exact operation ID.
FILE:bin/run.mjs
#!/usr/bin/env node
const manifest = {
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/gw/api/author/get_author_marketing_info/v1 for Douyin Creator Marketplace (Xingtu) Marketing Metrics through JustOneAPI with oAuthorId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Marketing Metrics",
"openapi": "3.1.0",
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_gw_api_author_get_author_marketing_info",
"slug": "justoneapi-douyin-xingtu-gw-api-author-get-author-marketing-info",
"sourceTitle": "OpenAPI definition",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) marketing metrics data, including rate card details and commercial service metrics, for creator evaluation, campaign planning, and marketplace research.",
"method": "GET",
"operationId": "gwApiAuthorGetAuthorMarketingInfoV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Author's unique ID.",
"enumValues": [],
"location": "query",
"name": "oAuthorId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": "SHORT_VIDEO",
"description": "Platform type.\n\nAvailable Values:\n- `SHORT_VIDEO`: Short video\n- `LIVE_STREAMING`: Live streaming\n- `PICTURE_TEXT`: Picture and text\n- `SHORT_DRAMA`: Short drama",
"enumValues": [
"SHORT_VIDEO",
"LIVE_STREAMING",
"PICTURE_TEXT",
"SHORT_DRAMA"
],
"location": "query",
"name": "platform",
"required": false,
"schemaType": "string"
}
],
"path": "/api/douyin-xingtu/gw/api/author/get_author_marketing_info/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Marketing Metrics",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"endpointPath": "gw/api/author/get_author_marketing_info",
"skillType": "interface"
};
const args = parseArgs(process.argv.slice(2));
if (!args.operation) {
fail("Missing required --operation argument.");
}
const operation = manifest.operations.find((item) => item.operationId === args.operation);
if (!operation) {
fail(`Unknown operation "args.operation".`, { availableOperations: manifest.operations.map((item) => item.operationId) });
}
const params = parseParams(args.paramsJson);
applyDefaults(operation, params);
injectToken(operation, params, args.token);
validateRequired(operation, params);
const baseUrl = manifest.baseUrl;
const url = new URL(operation.path, ensureBaseUrl(baseUrl));
applyPathParams(operation, params, url);
applyQueryParams(operation, params, url);
const requestInit = {
headers: {
"accept": "application/json",
},
method: operation.method,
};
if (operation.requestBody && params.body !== undefined) {
requestInit.body = JSON.stringify(params.body);
requestInit.headers["content-type"] = operation.requestBody.contentType || "application/json";
}
let response;
try {
response = await fetch(url, requestInit);
} catch (error) {
fail("Network request failed.", {
cause: error instanceof Error ? error.message : String(error),
operationId: operation.operationId,
});
}
const rawBody = await response.text();
let parsedBody;
try {
parsedBody = rawBody ? JSON.parse(rawBody) : null;
} catch (error) {
if (!response.ok) {
fail("Backend returned a non-JSON error response.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
fail("Backend returned invalid JSON.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
if (!response.ok) {
fail("Backend request failed.", {
body: parsedBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
process.stdout.write(`JSON.stringify(parsedBody, null, 2)\n`);
function parseArgs(argv) {
const parsed = { operation: null, paramsJson: "{}", token: null };
for (let index = 0; index < argv.length; index += 1) {
const flag = argv[index];
const value = argv[index + 1];
if (flag === "--operation") {
parsed.operation = value;
index += 1;
continue;
}
if (flag === "--params-json") {
parsed.paramsJson = value;
index += 1;
continue;
}
if (flag === "--token") {
parsed.token = value;
index += 1;
continue;
}
fail(`Unknown argument "flag".`);
}
return parsed;
}
function parseParams(input) {
try {
const parsed = JSON.parse(input || "{}");
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
fail("--params-json must decode to a JSON object.");
}
return parsed;
} catch (error) {
fail("Failed to parse --params-json.", {
cause: error instanceof Error ? error.message : String(error),
});
}
}
function applyDefaults(operation, params) {
for (const parameter of operation.parameters) {
if (params[parameter.name] === undefined && parameter.defaultValue !== null) {
params[parameter.name] = parameter.defaultValue;
}
}
}
function injectToken(operation, params, cliToken) {
const tokenParam = operation.parameters.find((parameter) => parameter.name === "token");
if (!tokenParam || params.token !== undefined) {
return;
}
if (!cliToken) {
fail("--token is required for this operation.", {
operationId: operation.operationId,
});
}
params.token = cliToken;
}
function validateRequired(operation, params) {
const missing = [];
for (const parameter of operation.parameters) {
if (parameter.required && params[parameter.name] === undefined) {
missing.push(parameter.name);
}
}
if (operation.requestBody?.required && params.body === undefined) {
missing.push("body");
}
if (missing.length) {
fail("Missing required parameters.", {
missing,
operationId: operation.operationId,
});
}
}
function applyPathParams(operation, params, url) {
let pathname = url.pathname;
for (const parameter of operation.parameters.filter((item) => item.location === "path")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
pathname = pathname.replace(`{parameter.name}`, encodeURIComponent(String(value)));
}
url.pathname = pathname;
}
function applyQueryParams(operation, params, url) {
for (const parameter of operation.parameters.filter((item) => item.location === "query")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
appendValue(url.searchParams, parameter.name, value);
}
}
function appendValue(searchParams, name, value) {
if (Array.isArray(value)) {
for (const item of value) {
appendValue(searchParams, name, item);
}
return;
}
if (value && typeof value === "object") {
searchParams.append(name, JSON.stringify(value));
return;
}
searchParams.append(name, String(value));
}
function ensureBaseUrl(value) {
return value.endsWith("/") ? value : `value/`;
}
function fail(message, details = null) {
const payload = { message };
if (details) {
payload.details = details;
}
process.stderr.write(`JSON.stringify(payload, null, 2)\n`);
process.exit(1);
}
FILE:generated/operations.json
{
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/gw/api/author/get_author_marketing_info/v1 for Douyin Creator Marketplace (Xingtu) Marketing Metrics through JustOneAPI with oAuthorId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Marketing Metrics",
"endpointPath": "gw/api/author/get_author_marketing_info",
"openapi": "3.1.0",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) marketing metrics data, including rate card details and commercial service metrics, for creator evaluation, campaign planning, and marketplace research.",
"method": "GET",
"operationId": "gwApiAuthorGetAuthorMarketingInfoV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Author's unique ID.",
"enumValues": [],
"location": "query",
"name": "oAuthorId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": "SHORT_VIDEO",
"description": "Platform type.\n\nAvailable Values:\n- `SHORT_VIDEO`: Short video\n- `LIVE_STREAMING`: Live streaming\n- `PICTURE_TEXT`: Picture and text\n- `SHORT_DRAMA`: Short drama",
"enumValues": [
"SHORT_VIDEO",
"LIVE_STREAMING",
"PICTURE_TEXT",
"SHORT_DRAMA"
],
"location": "query",
"name": "platform",
"required": false,
"schemaType": "string"
}
],
"path": "/api/douyin-xingtu/gw/api/author/get_author_marketing_info/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Marketing Metrics",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_gw_api_author_get_author_marketing_info",
"skillType": "interface",
"slug": "justoneapi-douyin-xingtu-gw-api-author-get-author-marketing-info",
"sourceTitle": "OpenAPI definition"
}
FILE:generated/operations.md
# Douyin Creator Marketplace (Xingtu) Marketing Metrics operations
Generated from JustOneAPI OpenAPI for platform key `douyin-xingtu`.
Endpoint group: `gw/api/author/get_author_marketing_info`.
## `gwApiAuthorGetAuthorMarketingInfoV1`
- Method: `GET`
- Path: `/api/douyin-xingtu/gw/api/author/get_author_marketing_info/v1`
- Summary: Marketing Metrics
- Description: Get Douyin Creator Marketplace (Xingtu) marketing metrics data, including rate card details and commercial service metrics, for creator evaluation, campaign planning, and marketplace research.
- Tags: `Douyin Creator Marketplace (Xingtu)`
### Parameters
| Name | In | Required | Type | Default | Description |
| --- | --- | --- | --- | --- | --- |
| `token` | `query` | yes | `string` | n/a | User authentication token. |
| `oAuthorId` | `query` | yes | `string` | n/a | Author's unique ID. |
| `platform` | `query` | no | `string` | `SHORT_VIDEO` | Platform type.
Available Values:
- `SHORT_VIDEO`: Short video
- `LIVE_STREAMING`: Live streaming
- `PICTURE_TEXT`: Picture and text
- `SHORT_DRAMA`: Short drama |
| enum | values | no | n/a | n/a | `SHORT_VIDEO`, `LIVE_STREAMING`, `PICTURE_TEXT`, `SHORT_DRAMA` |
### Request body
No request body.
### Responses
- `200`: OK
Call GET /api/douyin-xingtu/gw/api/author/get_author_base_info/v1 for Douyin Creator Marketplace (Xingtu) Creator Profile through JustOneAPI with oAuthorId.
---
name: Douyin Creator Marketplace (Xingtu) Creator Profile API
description: Call GET /api/douyin-xingtu/gw/api/author/get_author_base_info/v1 for Douyin Creator Marketplace (Xingtu) Creator Profile through JustOneAPI with oAuthorId.
author: JustOneAPI
homepage: https://api.justoneapi.com
metadata: {"openclaw":{"homepage":"https://api.justoneapi.com","primaryEnv":"JUST_ONE_API_TOKEN","requires":{"bins":["node"],"env":["JUST_ONE_API_TOKEN"]},"skillKey":"justoneapi_douyin_xingtu_gw_api_author_get_author_base_info"}}
---
# Douyin Creator Marketplace (Xingtu) Creator Profile
Use this focused JustOneAPI skill for creator Profile in Douyin Creator Marketplace (Xingtu). It targets `GET /api/douyin-xingtu/gw/api/author/get_author_base_info/v1`. Required non-token inputs are `oAuthorId`. OpenAPI describes it as: Get Douyin Creator Marketplace (Xingtu) creator Profile data, including audience and pricing data, for influencer vetting, benchmark analysis, and campaign planning.
## Endpoint Scope
- Platform key: `douyin-xingtu`
- Endpoint key: `gw/api/author/get_author_base_info`
- Platform family: Douyin Creator Marketplace (Xingtu)
- Skill slug: `justoneapi-douyin-xingtu-gw-api-author-get-author-base-info`
| Operation | Version | Method | Path | OpenAPI summary |
| --- | --- | --- | --- | --- |
| `gwApiAuthorGetAuthorBaseInfoV1` | `v1` | `GET` | `/api/douyin-xingtu/gw/api/author/get_author_base_info/v1` | Creator Profile |
## Inputs
| Parameter | In | Required by | Optional by | Type | Notes |
| --- | --- | --- | --- | --- | --- |
| `oAuthorId` | `query` | all | n/a | `string` | Author's unique ID |
| `platform` | `query` | n/a | all | `string` | Platform type. Available Values: - `SHORT_VIDEO`: Short video - `LIVE_STREAMING`: Live streaming - `PICTURE_TEXT`: Picture and text - `SHORT_DRAMA`: Short drama |
| `platform` enum | values | n/a | n/a | n/a | `LIVE_STREAMING`, `PICTURE_TEXT`, `SHORT_DRAMA`, `SHORT_VIDEO` |
Request body: none documented; send parameters through path or query arguments.
## Version Choice
Use `gwApiAuthorGetAuthorBaseInfoV1` for the documented `v1` endpoint. There are no alternate versions grouped in this skill.
## Run This Endpoint
Supported operation IDs in this skill: `gwApiAuthorGetAuthorBaseInfoV1`.
```bash
node {baseDir}/bin/run.mjs --operation "gwApiAuthorGetAuthorBaseInfoV1" --token "$JUST_ONE_API_TOKEN" --params-json '{"oAuthorId":"<oAuthorId>"}'
```
Ask for any missing required parameter before calling the helper. Keep user-provided IDs, cursors, keywords, and filters unchanged.
## Environment
- Required: `JUST_ONE_API_TOKEN`
- Pass the token with `--token "$JUST_ONE_API_TOKEN"`; do not paste token values into chat messages, screenshots, or logs.
- Get a token from [Just One API Dashboard](https://dashboard.justoneapi.com/en/login?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_gw_api_author_get_author_base_info&utm_content=project_link).
- Authentication details: [Just One API Usage Guide](https://docs.justoneapi.com/en/?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_gw_api_author_get_author_base_info&utm_content=project_link).
## Output Focus
- State the operation ID and endpoint path used, for example `gwApiAuthorGetAuthorBaseInfoV1` on `/api/douyin-xingtu/gw/api/author/get_author_base_info/v1`.
- Echo the required lookup scope (`oAuthorId`) before summarizing results.
- Prioritize fields that support this endpoint purpose: Get Douyin Creator Marketplace (Xingtu) creator Profile data, including audience and pricing data, for influencer vetting, benchmark analysis, and campaign planning.
- Return raw JSON only after the short, endpoint-specific summary.
- If the backend errors, include the backend payload and the exact operation ID.
FILE:bin/run.mjs
#!/usr/bin/env node
const manifest = {
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/gw/api/author/get_author_base_info/v1 for Douyin Creator Marketplace (Xingtu) Creator Profile through JustOneAPI with oAuthorId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Creator Profile",
"openapi": "3.1.0",
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_gw_api_author_get_author_base_info",
"slug": "justoneapi-douyin-xingtu-gw-api-author-get-author-base-info",
"sourceTitle": "OpenAPI definition",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) creator Profile data, including audience and pricing data, for influencer vetting, benchmark analysis, and campaign planning.",
"method": "GET",
"operationId": "gwApiAuthorGetAuthorBaseInfoV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Author's unique ID.",
"enumValues": [],
"location": "query",
"name": "oAuthorId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": "SHORT_VIDEO",
"description": "Platform type.\n\nAvailable Values:\n- `SHORT_VIDEO`: Short video\n- `LIVE_STREAMING`: Live streaming\n- `PICTURE_TEXT`: Picture and text\n- `SHORT_DRAMA`: Short drama",
"enumValues": [
"SHORT_VIDEO",
"LIVE_STREAMING",
"PICTURE_TEXT",
"SHORT_DRAMA"
],
"location": "query",
"name": "platform",
"required": false,
"schemaType": "string"
}
],
"path": "/api/douyin-xingtu/gw/api/author/get_author_base_info/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Creator Profile",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"endpointPath": "gw/api/author/get_author_base_info",
"skillType": "interface"
};
const args = parseArgs(process.argv.slice(2));
if (!args.operation) {
fail("Missing required --operation argument.");
}
const operation = manifest.operations.find((item) => item.operationId === args.operation);
if (!operation) {
fail(`Unknown operation "args.operation".`, { availableOperations: manifest.operations.map((item) => item.operationId) });
}
const params = parseParams(args.paramsJson);
applyDefaults(operation, params);
injectToken(operation, params, args.token);
validateRequired(operation, params);
const baseUrl = manifest.baseUrl;
const url = new URL(operation.path, ensureBaseUrl(baseUrl));
applyPathParams(operation, params, url);
applyQueryParams(operation, params, url);
const requestInit = {
headers: {
"accept": "application/json",
},
method: operation.method,
};
if (operation.requestBody && params.body !== undefined) {
requestInit.body = JSON.stringify(params.body);
requestInit.headers["content-type"] = operation.requestBody.contentType || "application/json";
}
let response;
try {
response = await fetch(url, requestInit);
} catch (error) {
fail("Network request failed.", {
cause: error instanceof Error ? error.message : String(error),
operationId: operation.operationId,
});
}
const rawBody = await response.text();
let parsedBody;
try {
parsedBody = rawBody ? JSON.parse(rawBody) : null;
} catch (error) {
if (!response.ok) {
fail("Backend returned a non-JSON error response.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
fail("Backend returned invalid JSON.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
if (!response.ok) {
fail("Backend request failed.", {
body: parsedBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
process.stdout.write(`JSON.stringify(parsedBody, null, 2)\n`);
function parseArgs(argv) {
const parsed = { operation: null, paramsJson: "{}", token: null };
for (let index = 0; index < argv.length; index += 1) {
const flag = argv[index];
const value = argv[index + 1];
if (flag === "--operation") {
parsed.operation = value;
index += 1;
continue;
}
if (flag === "--params-json") {
parsed.paramsJson = value;
index += 1;
continue;
}
if (flag === "--token") {
parsed.token = value;
index += 1;
continue;
}
fail(`Unknown argument "flag".`);
}
return parsed;
}
function parseParams(input) {
try {
const parsed = JSON.parse(input || "{}");
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
fail("--params-json must decode to a JSON object.");
}
return parsed;
} catch (error) {
fail("Failed to parse --params-json.", {
cause: error instanceof Error ? error.message : String(error),
});
}
}
function applyDefaults(operation, params) {
for (const parameter of operation.parameters) {
if (params[parameter.name] === undefined && parameter.defaultValue !== null) {
params[parameter.name] = parameter.defaultValue;
}
}
}
function injectToken(operation, params, cliToken) {
const tokenParam = operation.parameters.find((parameter) => parameter.name === "token");
if (!tokenParam || params.token !== undefined) {
return;
}
if (!cliToken) {
fail("--token is required for this operation.", {
operationId: operation.operationId,
});
}
params.token = cliToken;
}
function validateRequired(operation, params) {
const missing = [];
for (const parameter of operation.parameters) {
if (parameter.required && params[parameter.name] === undefined) {
missing.push(parameter.name);
}
}
if (operation.requestBody?.required && params.body === undefined) {
missing.push("body");
}
if (missing.length) {
fail("Missing required parameters.", {
missing,
operationId: operation.operationId,
});
}
}
function applyPathParams(operation, params, url) {
let pathname = url.pathname;
for (const parameter of operation.parameters.filter((item) => item.location === "path")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
pathname = pathname.replace(`{parameter.name}`, encodeURIComponent(String(value)));
}
url.pathname = pathname;
}
function applyQueryParams(operation, params, url) {
for (const parameter of operation.parameters.filter((item) => item.location === "query")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
appendValue(url.searchParams, parameter.name, value);
}
}
function appendValue(searchParams, name, value) {
if (Array.isArray(value)) {
for (const item of value) {
appendValue(searchParams, name, item);
}
return;
}
if (value && typeof value === "object") {
searchParams.append(name, JSON.stringify(value));
return;
}
searchParams.append(name, String(value));
}
function ensureBaseUrl(value) {
return value.endsWith("/") ? value : `value/`;
}
function fail(message, details = null) {
const payload = { message };
if (details) {
payload.details = details;
}
process.stderr.write(`JSON.stringify(payload, null, 2)\n`);
process.exit(1);
}
FILE:generated/operations.json
{
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/gw/api/author/get_author_base_info/v1 for Douyin Creator Marketplace (Xingtu) Creator Profile through JustOneAPI with oAuthorId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Creator Profile",
"endpointPath": "gw/api/author/get_author_base_info",
"openapi": "3.1.0",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) creator Profile data, including audience and pricing data, for influencer vetting, benchmark analysis, and campaign planning.",
"method": "GET",
"operationId": "gwApiAuthorGetAuthorBaseInfoV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Author's unique ID.",
"enumValues": [],
"location": "query",
"name": "oAuthorId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": "SHORT_VIDEO",
"description": "Platform type.\n\nAvailable Values:\n- `SHORT_VIDEO`: Short video\n- `LIVE_STREAMING`: Live streaming\n- `PICTURE_TEXT`: Picture and text\n- `SHORT_DRAMA`: Short drama",
"enumValues": [
"SHORT_VIDEO",
"LIVE_STREAMING",
"PICTURE_TEXT",
"SHORT_DRAMA"
],
"location": "query",
"name": "platform",
"required": false,
"schemaType": "string"
}
],
"path": "/api/douyin-xingtu/gw/api/author/get_author_base_info/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Creator Profile",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_gw_api_author_get_author_base_info",
"skillType": "interface",
"slug": "justoneapi-douyin-xingtu-gw-api-author-get-author-base-info",
"sourceTitle": "OpenAPI definition"
}
FILE:generated/operations.md
# Douyin Creator Marketplace (Xingtu) Creator Profile operations
Generated from JustOneAPI OpenAPI for platform key `douyin-xingtu`.
Endpoint group: `gw/api/author/get_author_base_info`.
## `gwApiAuthorGetAuthorBaseInfoV1`
- Method: `GET`
- Path: `/api/douyin-xingtu/gw/api/author/get_author_base_info/v1`
- Summary: Creator Profile
- Description: Get Douyin Creator Marketplace (Xingtu) creator Profile data, including audience and pricing data, for influencer vetting, benchmark analysis, and campaign planning.
- Tags: `Douyin Creator Marketplace (Xingtu)`
### Parameters
| Name | In | Required | Type | Default | Description |
| --- | --- | --- | --- | --- | --- |
| `token` | `query` | yes | `string` | n/a | User authentication token. |
| `oAuthorId` | `query` | yes | `string` | n/a | Author's unique ID. |
| `platform` | `query` | no | `string` | `SHORT_VIDEO` | Platform type.
Available Values:
- `SHORT_VIDEO`: Short video
- `LIVE_STREAMING`: Live streaming
- `PICTURE_TEXT`: Picture and text
- `SHORT_DRAMA`: Short drama |
| enum | values | no | n/a | n/a | `SHORT_VIDEO`, `LIVE_STREAMING`, `PICTURE_TEXT`, `SHORT_DRAMA` |
### Request body
No request body.
### Responses
- `200`: OK
Call GET /api/douyin-xingtu/gw/api/aggregator/get_author_order_experience/v1 for Douyin Creator Marketplace (Xingtu) Creator Order Experience through JustOne...
---
name: Douyin Creator Marketplace (Xingtu) Creator Order Experience API
description: Call GET /api/douyin-xingtu/gw/api/aggregator/get_author_order_experience/v1 for Douyin Creator Marketplace (Xingtu) Creator Order Experience through JustOneAPI with oAuthorId.
author: JustOneAPI
homepage: https://api.justoneapi.com
metadata: {"openclaw":{"homepage":"https://api.justoneapi.com","primaryEnv":"JUST_ONE_API_TOKEN","requires":{"bins":["node"],"env":["JUST_ONE_API_TOKEN"]},"skillKey":"justoneapi_douyin_xingtu_gw_api_aggregator_get_author_order_experience"}}
---
# Douyin Creator Marketplace (Xingtu) Creator Order Experience
Use this focused JustOneAPI skill for creator Order Experience in Douyin Creator Marketplace (Xingtu). It targets `GET /api/douyin-xingtu/gw/api/aggregator/get_author_order_experience/v1`. Required non-token inputs are `oAuthorId`. OpenAPI describes it as: Get Douyin Creator Marketplace (Xingtu) creator Order Experience data, including commercial history and transaction-related indicators, for creator evaluation, campaign planning, and marketplace research.
## Endpoint Scope
- Platform key: `douyin-xingtu`
- Endpoint key: `gw/api/aggregator/get_author_order_experience`
- Platform family: Douyin Creator Marketplace (Xingtu)
- Skill slug: `justoneapi-douyin-xingtu-gw-api-aggregator-get-author-order-experience`
| Operation | Version | Method | Path | OpenAPI summary |
| --- | --- | --- | --- | --- |
| `gwApiAggregatorGetAuthorOrderExperienceV1` | `v1` | `GET` | `/api/douyin-xingtu/gw/api/aggregator/get_author_order_experience/v1` | Creator Order Experience |
## Inputs
| Parameter | In | Required by | Optional by | Type | Notes |
| --- | --- | --- | --- | --- | --- |
| `oAuthorId` | `query` | all | n/a | `string` | Author's unique ID |
| `period` | `query` | n/a | all | `string` | Time period. Available Values: - `DAY_30`: Last 30 days - `DAY_90`: Last 90 days |
| `period` enum | values | n/a | n/a | n/a | `DAY_30`, `DAY_90` |
Request body: none documented; send parameters through path or query arguments.
## Version Choice
Use `gwApiAggregatorGetAuthorOrderExperienceV1` for the documented `v1` endpoint. There are no alternate versions grouped in this skill.
## Run This Endpoint
Supported operation IDs in this skill: `gwApiAggregatorGetAuthorOrderExperienceV1`.
```bash
node {baseDir}/bin/run.mjs --operation "gwApiAggregatorGetAuthorOrderExperienceV1" --token "$JUST_ONE_API_TOKEN" --params-json '{"oAuthorId":"<oAuthorId>"}'
```
Ask for any missing required parameter before calling the helper. Keep user-provided IDs, cursors, keywords, and filters unchanged.
## Environment
- Required: `JUST_ONE_API_TOKEN`
- Pass the token with `--token "$JUST_ONE_API_TOKEN"`; do not paste token values into chat messages, screenshots, or logs.
- Get a token from [Just One API Dashboard](https://dashboard.justoneapi.com/en/login?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_gw_api_aggregator_get_author_order_experience&utm_content=project_link).
- Authentication details: [Just One API Usage Guide](https://docs.justoneapi.com/en/?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_gw_api_aggregator_get_author_order_experience&utm_content=project_link).
## Output Focus
- State the operation ID and endpoint path used, for example `gwApiAggregatorGetAuthorOrderExperienceV1` on `/api/douyin-xingtu/gw/api/aggregator/get_author_order_experience/v1`.
- Echo the required lookup scope (`oAuthorId`) before summarizing results.
- Prioritize fields that support this endpoint purpose: Get Douyin Creator Marketplace (Xingtu) creator Order Experience data, including commercial history and transaction-related indicators, for creator evaluation, campaign planning, and marketplace research.
- Return raw JSON only after the short, endpoint-specific summary.
- If the backend errors, include the backend payload and the exact operation ID.
FILE:bin/run.mjs
#!/usr/bin/env node
const manifest = {
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/gw/api/aggregator/get_author_order_experience/v1 for Douyin Creator Marketplace (Xingtu) Creator Order Experience through JustOneAPI with oAuthorId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Creator Order Experience",
"openapi": "3.1.0",
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_gw_api_aggregator_get_author_order_experience",
"slug": "justoneapi-douyin-xingtu-gw-api-aggregator-get-author-order-experience",
"sourceTitle": "OpenAPI definition",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) creator Order Experience data, including commercial history and transaction-related indicators, for creator evaluation, campaign planning, and marketplace research.",
"method": "GET",
"operationId": "gwApiAggregatorGetAuthorOrderExperienceV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Author's unique ID.",
"enumValues": [],
"location": "query",
"name": "oAuthorId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": "DAY_30",
"description": "Time period.\n\nAvailable Values:\n- `DAY_30`: Last 30 days\n- `DAY_90`: Last 90 days",
"enumValues": [
"DAY_30",
"DAY_90"
],
"location": "query",
"name": "period",
"required": false,
"schemaType": "string"
}
],
"path": "/api/douyin-xingtu/gw/api/aggregator/get_author_order_experience/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Creator Order Experience",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"endpointPath": "gw/api/aggregator/get_author_order_experience",
"skillType": "interface"
};
const args = parseArgs(process.argv.slice(2));
if (!args.operation) {
fail("Missing required --operation argument.");
}
const operation = manifest.operations.find((item) => item.operationId === args.operation);
if (!operation) {
fail(`Unknown operation "args.operation".`, { availableOperations: manifest.operations.map((item) => item.operationId) });
}
const params = parseParams(args.paramsJson);
applyDefaults(operation, params);
injectToken(operation, params, args.token);
validateRequired(operation, params);
const baseUrl = manifest.baseUrl;
const url = new URL(operation.path, ensureBaseUrl(baseUrl));
applyPathParams(operation, params, url);
applyQueryParams(operation, params, url);
const requestInit = {
headers: {
"accept": "application/json",
},
method: operation.method,
};
if (operation.requestBody && params.body !== undefined) {
requestInit.body = JSON.stringify(params.body);
requestInit.headers["content-type"] = operation.requestBody.contentType || "application/json";
}
let response;
try {
response = await fetch(url, requestInit);
} catch (error) {
fail("Network request failed.", {
cause: error instanceof Error ? error.message : String(error),
operationId: operation.operationId,
});
}
const rawBody = await response.text();
let parsedBody;
try {
parsedBody = rawBody ? JSON.parse(rawBody) : null;
} catch (error) {
if (!response.ok) {
fail("Backend returned a non-JSON error response.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
fail("Backend returned invalid JSON.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
if (!response.ok) {
fail("Backend request failed.", {
body: parsedBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
process.stdout.write(`JSON.stringify(parsedBody, null, 2)\n`);
function parseArgs(argv) {
const parsed = { operation: null, paramsJson: "{}", token: null };
for (let index = 0; index < argv.length; index += 1) {
const flag = argv[index];
const value = argv[index + 1];
if (flag === "--operation") {
parsed.operation = value;
index += 1;
continue;
}
if (flag === "--params-json") {
parsed.paramsJson = value;
index += 1;
continue;
}
if (flag === "--token") {
parsed.token = value;
index += 1;
continue;
}
fail(`Unknown argument "flag".`);
}
return parsed;
}
function parseParams(input) {
try {
const parsed = JSON.parse(input || "{}");
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
fail("--params-json must decode to a JSON object.");
}
return parsed;
} catch (error) {
fail("Failed to parse --params-json.", {
cause: error instanceof Error ? error.message : String(error),
});
}
}
function applyDefaults(operation, params) {
for (const parameter of operation.parameters) {
if (params[parameter.name] === undefined && parameter.defaultValue !== null) {
params[parameter.name] = parameter.defaultValue;
}
}
}
function injectToken(operation, params, cliToken) {
const tokenParam = operation.parameters.find((parameter) => parameter.name === "token");
if (!tokenParam || params.token !== undefined) {
return;
}
if (!cliToken) {
fail("--token is required for this operation.", {
operationId: operation.operationId,
});
}
params.token = cliToken;
}
function validateRequired(operation, params) {
const missing = [];
for (const parameter of operation.parameters) {
if (parameter.required && params[parameter.name] === undefined) {
missing.push(parameter.name);
}
}
if (operation.requestBody?.required && params.body === undefined) {
missing.push("body");
}
if (missing.length) {
fail("Missing required parameters.", {
missing,
operationId: operation.operationId,
});
}
}
function applyPathParams(operation, params, url) {
let pathname = url.pathname;
for (const parameter of operation.parameters.filter((item) => item.location === "path")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
pathname = pathname.replace(`{parameter.name}`, encodeURIComponent(String(value)));
}
url.pathname = pathname;
}
function applyQueryParams(operation, params, url) {
for (const parameter of operation.parameters.filter((item) => item.location === "query")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
appendValue(url.searchParams, parameter.name, value);
}
}
function appendValue(searchParams, name, value) {
if (Array.isArray(value)) {
for (const item of value) {
appendValue(searchParams, name, item);
}
return;
}
if (value && typeof value === "object") {
searchParams.append(name, JSON.stringify(value));
return;
}
searchParams.append(name, String(value));
}
function ensureBaseUrl(value) {
return value.endsWith("/") ? value : `value/`;
}
function fail(message, details = null) {
const payload = { message };
if (details) {
payload.details = details;
}
process.stderr.write(`JSON.stringify(payload, null, 2)\n`);
process.exit(1);
}
FILE:generated/operations.json
{
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/gw/api/aggregator/get_author_order_experience/v1 for Douyin Creator Marketplace (Xingtu) Creator Order Experience through JustOneAPI with oAuthorId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Creator Order Experience",
"endpointPath": "gw/api/aggregator/get_author_order_experience",
"openapi": "3.1.0",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) creator Order Experience data, including commercial history and transaction-related indicators, for creator evaluation, campaign planning, and marketplace research.",
"method": "GET",
"operationId": "gwApiAggregatorGetAuthorOrderExperienceV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Author's unique ID.",
"enumValues": [],
"location": "query",
"name": "oAuthorId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": "DAY_30",
"description": "Time period.\n\nAvailable Values:\n- `DAY_30`: Last 30 days\n- `DAY_90`: Last 90 days",
"enumValues": [
"DAY_30",
"DAY_90"
],
"location": "query",
"name": "period",
"required": false,
"schemaType": "string"
}
],
"path": "/api/douyin-xingtu/gw/api/aggregator/get_author_order_experience/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Creator Order Experience",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_gw_api_aggregator_get_author_order_experience",
"skillType": "interface",
"slug": "justoneapi-douyin-xingtu-gw-api-aggregator-get-author-order-experience",
"sourceTitle": "OpenAPI definition"
}
FILE:generated/operations.md
# Douyin Creator Marketplace (Xingtu) Creator Order Experience operations
Generated from JustOneAPI OpenAPI for platform key `douyin-xingtu`.
Endpoint group: `gw/api/aggregator/get_author_order_experience`.
## `gwApiAggregatorGetAuthorOrderExperienceV1`
- Method: `GET`
- Path: `/api/douyin-xingtu/gw/api/aggregator/get_author_order_experience/v1`
- Summary: Creator Order Experience
- Description: Get Douyin Creator Marketplace (Xingtu) creator Order Experience data, including commercial history and transaction-related indicators, for creator evaluation, campaign planning, and marketplace research.
- Tags: `Douyin Creator Marketplace (Xingtu)`
### Parameters
| Name | In | Required | Type | Default | Description |
| --- | --- | --- | --- | --- | --- |
| `token` | `query` | yes | `string` | n/a | User authentication token. |
| `oAuthorId` | `query` | yes | `string` | n/a | Author's unique ID. |
| `period` | `query` | no | `string` | `DAY_30` | Time period.
Available Values:
- `DAY_30`: Last 30 days
- `DAY_90`: Last 90 days |
| enum | values | no | n/a | n/a | `DAY_30`, `DAY_90` |
### Request body
No request body.
### Responses
- `200`: OK
Call GET /api/douyin-xingtu/gw/api/aggregator/get_author_commerce_spread_info/v1 for Douyin Creator Marketplace (Xingtu) Author Commerce Spread Info through...
---
name: Douyin Creator Marketplace (Xingtu) Author Commerce Spread Info API
description: Call GET /api/douyin-xingtu/gw/api/aggregator/get_author_commerce_spread_info/v1 for Douyin Creator Marketplace (Xingtu) Author Commerce Spread Info through JustOneAPI with oAuthorId.
author: JustOneAPI
homepage: https://api.justoneapi.com
metadata: {"openclaw":{"homepage":"https://api.justoneapi.com","primaryEnv":"JUST_ONE_API_TOKEN","requires":{"bins":["node"],"env":["JUST_ONE_API_TOKEN"]},"skillKey":"justoneapi_douyin_xingtu_gw_api_aggregator_get_author_commerce_spread_info"}}
---
# Douyin Creator Marketplace (Xingtu) Author Commerce Spread Info
Use this focused JustOneAPI skill for author Commerce Spread Info in Douyin Creator Marketplace (Xingtu). It targets `GET /api/douyin-xingtu/gw/api/aggregator/get_author_commerce_spread_info/v1`. Required non-token inputs are `oAuthorId`. OpenAPI describes it as: Get Douyin Creator Marketplace (Xingtu) author Commerce Spread Info data, including spread metrics, for creator evaluation for campaign planning and media buying.
## Endpoint Scope
- Platform key: `douyin-xingtu`
- Endpoint key: `gw/api/aggregator/get_author_commerce_spread_info`
- Platform family: Douyin Creator Marketplace (Xingtu)
- Skill slug: `justoneapi-douyin-xingtu-gw-api-aggregator-get-author-commerce-spread-info`
| Operation | Version | Method | Path | OpenAPI summary |
| --- | --- | --- | --- | --- |
| `gwApiAggregatorGetAuthorCommerceSpreadInfoV1` | `v1` | `GET` | `/api/douyin-xingtu/gw/api/aggregator/get_author_commerce_spread_info/v1` | Author Commerce Spread Info |
## Inputs
| Parameter | In | Required by | Optional by | Type | Notes |
| --- | --- | --- | --- | --- | --- |
| `oAuthorId` | `query` | all | n/a | `string` | Author's unique ID |
Request body: none documented; send parameters through path or query arguments.
## Version Choice
Use `gwApiAggregatorGetAuthorCommerceSpreadInfoV1` for the documented `v1` endpoint. There are no alternate versions grouped in this skill.
## Run This Endpoint
Supported operation IDs in this skill: `gwApiAggregatorGetAuthorCommerceSpreadInfoV1`.
```bash
node {baseDir}/bin/run.mjs --operation "gwApiAggregatorGetAuthorCommerceSpreadInfoV1" --token "$JUST_ONE_API_TOKEN" --params-json '{"oAuthorId":"<oAuthorId>"}'
```
Ask for any missing required parameter before calling the helper. Keep user-provided IDs, cursors, keywords, and filters unchanged.
## Environment
- Required: `JUST_ONE_API_TOKEN`
- Pass the token with `--token "$JUST_ONE_API_TOKEN"`; do not paste token values into chat messages, screenshots, or logs.
- Get a token from [Just One API Dashboard](https://dashboard.justoneapi.com/en/login?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_gw_api_aggregator_get_author_commerce_spread_info&utm_content=project_link).
- Authentication details: [Just One API Usage Guide](https://docs.justoneapi.com/en/?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_gw_api_aggregator_get_author_commerce_spread_info&utm_content=project_link).
## Output Focus
- State the operation ID and endpoint path used, for example `gwApiAggregatorGetAuthorCommerceSpreadInfoV1` on `/api/douyin-xingtu/gw/api/aggregator/get_author_commerce_spread_info/v1`.
- Echo the required lookup scope (`oAuthorId`) before summarizing results.
- Prioritize fields that support this endpoint purpose: Get Douyin Creator Marketplace (Xingtu) author Commerce Spread Info data, including spread metrics, for creator evaluation for campaign planning and media buying.
- Return raw JSON only after the short, endpoint-specific summary.
- If the backend errors, include the backend payload and the exact operation ID.
FILE:bin/run.mjs
#!/usr/bin/env node
const manifest = {
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/gw/api/aggregator/get_author_commerce_spread_info/v1 for Douyin Creator Marketplace (Xingtu) Author Commerce Spread Info through JustOneAPI with oAuthorId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Author Commerce Spread Info",
"openapi": "3.1.0",
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_gw_api_aggregator_get_author_commerce_spread_info",
"slug": "justoneapi-douyin-xingtu-gw-api-aggregator-get-author-commerce-spread-info",
"sourceTitle": "OpenAPI definition",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) author Commerce Spread Info data, including spread metrics, for creator evaluation for campaign planning and media buying.",
"method": "GET",
"operationId": "gwApiAggregatorGetAuthorCommerceSpreadInfoV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Author's unique ID.",
"enumValues": [],
"location": "query",
"name": "oAuthorId",
"required": true,
"schemaType": "string"
}
],
"path": "/api/douyin-xingtu/gw/api/aggregator/get_author_commerce_spread_info/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Author Commerce Spread Info",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"endpointPath": "gw/api/aggregator/get_author_commerce_spread_info",
"skillType": "interface"
};
const args = parseArgs(process.argv.slice(2));
if (!args.operation) {
fail("Missing required --operation argument.");
}
const operation = manifest.operations.find((item) => item.operationId === args.operation);
if (!operation) {
fail(`Unknown operation "args.operation".`, { availableOperations: manifest.operations.map((item) => item.operationId) });
}
const params = parseParams(args.paramsJson);
applyDefaults(operation, params);
injectToken(operation, params, args.token);
validateRequired(operation, params);
const baseUrl = manifest.baseUrl;
const url = new URL(operation.path, ensureBaseUrl(baseUrl));
applyPathParams(operation, params, url);
applyQueryParams(operation, params, url);
const requestInit = {
headers: {
"accept": "application/json",
},
method: operation.method,
};
if (operation.requestBody && params.body !== undefined) {
requestInit.body = JSON.stringify(params.body);
requestInit.headers["content-type"] = operation.requestBody.contentType || "application/json";
}
let response;
try {
response = await fetch(url, requestInit);
} catch (error) {
fail("Network request failed.", {
cause: error instanceof Error ? error.message : String(error),
operationId: operation.operationId,
});
}
const rawBody = await response.text();
let parsedBody;
try {
parsedBody = rawBody ? JSON.parse(rawBody) : null;
} catch (error) {
if (!response.ok) {
fail("Backend returned a non-JSON error response.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
fail("Backend returned invalid JSON.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
if (!response.ok) {
fail("Backend request failed.", {
body: parsedBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
process.stdout.write(`JSON.stringify(parsedBody, null, 2)\n`);
function parseArgs(argv) {
const parsed = { operation: null, paramsJson: "{}", token: null };
for (let index = 0; index < argv.length; index += 1) {
const flag = argv[index];
const value = argv[index + 1];
if (flag === "--operation") {
parsed.operation = value;
index += 1;
continue;
}
if (flag === "--params-json") {
parsed.paramsJson = value;
index += 1;
continue;
}
if (flag === "--token") {
parsed.token = value;
index += 1;
continue;
}
fail(`Unknown argument "flag".`);
}
return parsed;
}
function parseParams(input) {
try {
const parsed = JSON.parse(input || "{}");
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
fail("--params-json must decode to a JSON object.");
}
return parsed;
} catch (error) {
fail("Failed to parse --params-json.", {
cause: error instanceof Error ? error.message : String(error),
});
}
}
function applyDefaults(operation, params) {
for (const parameter of operation.parameters) {
if (params[parameter.name] === undefined && parameter.defaultValue !== null) {
params[parameter.name] = parameter.defaultValue;
}
}
}
function injectToken(operation, params, cliToken) {
const tokenParam = operation.parameters.find((parameter) => parameter.name === "token");
if (!tokenParam || params.token !== undefined) {
return;
}
if (!cliToken) {
fail("--token is required for this operation.", {
operationId: operation.operationId,
});
}
params.token = cliToken;
}
function validateRequired(operation, params) {
const missing = [];
for (const parameter of operation.parameters) {
if (parameter.required && params[parameter.name] === undefined) {
missing.push(parameter.name);
}
}
if (operation.requestBody?.required && params.body === undefined) {
missing.push("body");
}
if (missing.length) {
fail("Missing required parameters.", {
missing,
operationId: operation.operationId,
});
}
}
function applyPathParams(operation, params, url) {
let pathname = url.pathname;
for (const parameter of operation.parameters.filter((item) => item.location === "path")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
pathname = pathname.replace(`{parameter.name}`, encodeURIComponent(String(value)));
}
url.pathname = pathname;
}
function applyQueryParams(operation, params, url) {
for (const parameter of operation.parameters.filter((item) => item.location === "query")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
appendValue(url.searchParams, parameter.name, value);
}
}
function appendValue(searchParams, name, value) {
if (Array.isArray(value)) {
for (const item of value) {
appendValue(searchParams, name, item);
}
return;
}
if (value && typeof value === "object") {
searchParams.append(name, JSON.stringify(value));
return;
}
searchParams.append(name, String(value));
}
function ensureBaseUrl(value) {
return value.endsWith("/") ? value : `value/`;
}
function fail(message, details = null) {
const payload = { message };
if (details) {
payload.details = details;
}
process.stderr.write(`JSON.stringify(payload, null, 2)\n`);
process.exit(1);
}
FILE:generated/operations.json
{
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/gw/api/aggregator/get_author_commerce_spread_info/v1 for Douyin Creator Marketplace (Xingtu) Author Commerce Spread Info through JustOneAPI with oAuthorId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Author Commerce Spread Info",
"endpointPath": "gw/api/aggregator/get_author_commerce_spread_info",
"openapi": "3.1.0",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) author Commerce Spread Info data, including spread metrics, for creator evaluation for campaign planning and media buying.",
"method": "GET",
"operationId": "gwApiAggregatorGetAuthorCommerceSpreadInfoV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Author's unique ID.",
"enumValues": [],
"location": "query",
"name": "oAuthorId",
"required": true,
"schemaType": "string"
}
],
"path": "/api/douyin-xingtu/gw/api/aggregator/get_author_commerce_spread_info/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Author Commerce Spread Info",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_gw_api_aggregator_get_author_commerce_spread_info",
"skillType": "interface",
"slug": "justoneapi-douyin-xingtu-gw-api-aggregator-get-author-commerce-spread-info",
"sourceTitle": "OpenAPI definition"
}
FILE:generated/operations.md
# Douyin Creator Marketplace (Xingtu) Author Commerce Spread Info operations
Generated from JustOneAPI OpenAPI for platform key `douyin-xingtu`.
Endpoint group: `gw/api/aggregator/get_author_commerce_spread_info`.
## `gwApiAggregatorGetAuthorCommerceSpreadInfoV1`
- Method: `GET`
- Path: `/api/douyin-xingtu/gw/api/aggregator/get_author_commerce_spread_info/v1`
- Summary: Author Commerce Spread Info
- Description: Get Douyin Creator Marketplace (Xingtu) author Commerce Spread Info data, including spread metrics, for creator evaluation for campaign planning and media buying.
- Tags: `Douyin Creator Marketplace (Xingtu)`
### Parameters
| Name | In | Required | Type | Default | Description |
| --- | --- | --- | --- | --- | --- |
| `token` | `query` | yes | `string` | n/a | User authentication token. |
| `oAuthorId` | `query` | yes | `string` | n/a | Author's unique ID. |
### Request body
No request body.
### Responses
- `200`: OK
Call GET /api/douyin-xingtu/gw/api/aggregator/get_author_commerce_seed_base_info/v1 for Douyin Creator Marketplace (Xingtu) Author Commerce Seeding Base Info...
---
name: Douyin Creator Marketplace (Xingtu) Author Commerce Seeding Base Info API
description: Call GET /api/douyin-xingtu/gw/api/aggregator/get_author_commerce_seed_base_info/v1 for Douyin Creator Marketplace (Xingtu) Author Commerce Seeding Base Info through JustOneAPI with oAuthorId.
author: JustOneAPI
homepage: https://api.justoneapi.com
metadata: {"openclaw":{"homepage":"https://api.justoneapi.com","primaryEnv":"JUST_ONE_API_TOKEN","requires":{"bins":["node"],"env":["JUST_ONE_API_TOKEN"]},"skillKey":"justoneapi_douyin_xingtu_gw_api_aggregator_get_author_commerce_seed_base_info"}}
---
# Douyin Creator Marketplace (Xingtu) Author Commerce Seeding Base Info
Use this focused JustOneAPI skill for author Commerce Seeding Base Info in Douyin Creator Marketplace (Xingtu). It targets `GET /api/douyin-xingtu/gw/api/aggregator/get_author_commerce_seed_base_info/v1`. Required non-token inputs are `oAuthorId`. OpenAPI describes it as: Get Douyin Creator Marketplace (Xingtu) author Commerce Seeding Base Info data, including baseline metrics, commercial signals, and seeding indicators, for product seeding analysis, creator vetting, and campaign planning.
## Endpoint Scope
- Platform key: `douyin-xingtu`
- Endpoint key: `gw/api/aggregator/get_author_commerce_seed_base_info`
- Platform family: Douyin Creator Marketplace (Xingtu)
- Skill slug: `justoneapi-douyin-xingtu-gw-api-aggregator-get-author-commerce-seed-base-info`
| Operation | Version | Method | Path | OpenAPI summary |
| --- | --- | --- | --- | --- |
| `gwApiAggregatorGetAuthorCommerceSeedBaseInfoV1` | `v1` | `GET` | `/api/douyin-xingtu/gw/api/aggregator/get_author_commerce_seed_base_info/v1` | Author Commerce Seeding Base Info |
## Inputs
| Parameter | In | Required by | Optional by | Type | Notes |
| --- | --- | --- | --- | --- | --- |
| `oAuthorId` | `query` | all | n/a | `string` | Author's unique ID |
| `range` | `query` | n/a | all | `string` | Time range. Available Values: - `DAY_30`: Last 30 days - `DAY_90`: Last 90 days |
| `range` enum | values | n/a | n/a | n/a | `DAY_30`, `DAY_90` |
Request body: none documented; send parameters through path or query arguments.
## Version Choice
Use `gwApiAggregatorGetAuthorCommerceSeedBaseInfoV1` for the documented `v1` endpoint. There are no alternate versions grouped in this skill.
## Run This Endpoint
Supported operation IDs in this skill: `gwApiAggregatorGetAuthorCommerceSeedBaseInfoV1`.
```bash
node {baseDir}/bin/run.mjs --operation "gwApiAggregatorGetAuthorCommerceSeedBaseInfoV1" --token "$JUST_ONE_API_TOKEN" --params-json '{"oAuthorId":"<oAuthorId>"}'
```
Ask for any missing required parameter before calling the helper. Keep user-provided IDs, cursors, keywords, and filters unchanged.
## Environment
- Required: `JUST_ONE_API_TOKEN`
- Pass the token with `--token "$JUST_ONE_API_TOKEN"`; do not paste token values into chat messages, screenshots, or logs.
- Get a token from [Just One API Dashboard](https://dashboard.justoneapi.com/en/login?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_gw_api_aggregator_get_author_commerce_seed_base_info&utm_content=project_link).
- Authentication details: [Just One API Usage Guide](https://docs.justoneapi.com/en/?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_gw_api_aggregator_get_author_commerce_seed_base_info&utm_content=project_link).
## Output Focus
- State the operation ID and endpoint path used, for example `gwApiAggregatorGetAuthorCommerceSeedBaseInfoV1` on `/api/douyin-xingtu/gw/api/aggregator/get_author_commerce_seed_base_info/v1`.
- Echo the required lookup scope (`oAuthorId`) before summarizing results.
- Prioritize fields that support this endpoint purpose: Get Douyin Creator Marketplace (Xingtu) author Commerce Seeding Base Info data, including baseline metrics, commercial signals, and seeding indicators, for product seeding analysis, creator vetting, and campaign planning.
- Return raw JSON only after the short, endpoint-specific summary.
- If the backend errors, include the backend payload and the exact operation ID.
FILE:bin/run.mjs
#!/usr/bin/env node
const manifest = {
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/gw/api/aggregator/get_author_commerce_seed_base_info/v1 for Douyin Creator Marketplace (Xingtu) Author Commerce Seeding Base Info through JustOneAPI with oAuthorId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Author Commerce Seeding Base Info",
"openapi": "3.1.0",
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_gw_api_aggregator_get_author_commerce_seed_base_info",
"slug": "justoneapi-douyin-xingtu-gw-api-aggregator-get-author-commerce-seed-base-info",
"sourceTitle": "OpenAPI definition",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) author Commerce Seeding Base Info data, including baseline metrics, commercial signals, and seeding indicators, for product seeding analysis, creator vetting, and campaign planning.",
"method": "GET",
"operationId": "gwApiAggregatorGetAuthorCommerceSeedBaseInfoV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Author's unique ID.",
"enumValues": [],
"location": "query",
"name": "oAuthorId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": "DAY_90",
"description": "Time range.\n\nAvailable Values:\n- `DAY_30`: Last 30 days\n- `DAY_90`: Last 90 days",
"enumValues": [
"DAY_30",
"DAY_90"
],
"location": "query",
"name": "range",
"required": false,
"schemaType": "string"
}
],
"path": "/api/douyin-xingtu/gw/api/aggregator/get_author_commerce_seed_base_info/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Author Commerce Seeding Base Info",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"endpointPath": "gw/api/aggregator/get_author_commerce_seed_base_info",
"skillType": "interface"
};
const args = parseArgs(process.argv.slice(2));
if (!args.operation) {
fail("Missing required --operation argument.");
}
const operation = manifest.operations.find((item) => item.operationId === args.operation);
if (!operation) {
fail(`Unknown operation "args.operation".`, { availableOperations: manifest.operations.map((item) => item.operationId) });
}
const params = parseParams(args.paramsJson);
applyDefaults(operation, params);
injectToken(operation, params, args.token);
validateRequired(operation, params);
const baseUrl = manifest.baseUrl;
const url = new URL(operation.path, ensureBaseUrl(baseUrl));
applyPathParams(operation, params, url);
applyQueryParams(operation, params, url);
const requestInit = {
headers: {
"accept": "application/json",
},
method: operation.method,
};
if (operation.requestBody && params.body !== undefined) {
requestInit.body = JSON.stringify(params.body);
requestInit.headers["content-type"] = operation.requestBody.contentType || "application/json";
}
let response;
try {
response = await fetch(url, requestInit);
} catch (error) {
fail("Network request failed.", {
cause: error instanceof Error ? error.message : String(error),
operationId: operation.operationId,
});
}
const rawBody = await response.text();
let parsedBody;
try {
parsedBody = rawBody ? JSON.parse(rawBody) : null;
} catch (error) {
if (!response.ok) {
fail("Backend returned a non-JSON error response.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
fail("Backend returned invalid JSON.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
if (!response.ok) {
fail("Backend request failed.", {
body: parsedBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
process.stdout.write(`JSON.stringify(parsedBody, null, 2)\n`);
function parseArgs(argv) {
const parsed = { operation: null, paramsJson: "{}", token: null };
for (let index = 0; index < argv.length; index += 1) {
const flag = argv[index];
const value = argv[index + 1];
if (flag === "--operation") {
parsed.operation = value;
index += 1;
continue;
}
if (flag === "--params-json") {
parsed.paramsJson = value;
index += 1;
continue;
}
if (flag === "--token") {
parsed.token = value;
index += 1;
continue;
}
fail(`Unknown argument "flag".`);
}
return parsed;
}
function parseParams(input) {
try {
const parsed = JSON.parse(input || "{}");
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
fail("--params-json must decode to a JSON object.");
}
return parsed;
} catch (error) {
fail("Failed to parse --params-json.", {
cause: error instanceof Error ? error.message : String(error),
});
}
}
function applyDefaults(operation, params) {
for (const parameter of operation.parameters) {
if (params[parameter.name] === undefined && parameter.defaultValue !== null) {
params[parameter.name] = parameter.defaultValue;
}
}
}
function injectToken(operation, params, cliToken) {
const tokenParam = operation.parameters.find((parameter) => parameter.name === "token");
if (!tokenParam || params.token !== undefined) {
return;
}
if (!cliToken) {
fail("--token is required for this operation.", {
operationId: operation.operationId,
});
}
params.token = cliToken;
}
function validateRequired(operation, params) {
const missing = [];
for (const parameter of operation.parameters) {
if (parameter.required && params[parameter.name] === undefined) {
missing.push(parameter.name);
}
}
if (operation.requestBody?.required && params.body === undefined) {
missing.push("body");
}
if (missing.length) {
fail("Missing required parameters.", {
missing,
operationId: operation.operationId,
});
}
}
function applyPathParams(operation, params, url) {
let pathname = url.pathname;
for (const parameter of operation.parameters.filter((item) => item.location === "path")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
pathname = pathname.replace(`{parameter.name}`, encodeURIComponent(String(value)));
}
url.pathname = pathname;
}
function applyQueryParams(operation, params, url) {
for (const parameter of operation.parameters.filter((item) => item.location === "query")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
appendValue(url.searchParams, parameter.name, value);
}
}
function appendValue(searchParams, name, value) {
if (Array.isArray(value)) {
for (const item of value) {
appendValue(searchParams, name, item);
}
return;
}
if (value && typeof value === "object") {
searchParams.append(name, JSON.stringify(value));
return;
}
searchParams.append(name, String(value));
}
function ensureBaseUrl(value) {
return value.endsWith("/") ? value : `value/`;
}
function fail(message, details = null) {
const payload = { message };
if (details) {
payload.details = details;
}
process.stderr.write(`JSON.stringify(payload, null, 2)\n`);
process.exit(1);
}
FILE:generated/operations.json
{
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/gw/api/aggregator/get_author_commerce_seed_base_info/v1 for Douyin Creator Marketplace (Xingtu) Author Commerce Seeding Base Info through JustOneAPI with oAuthorId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Author Commerce Seeding Base Info",
"endpointPath": "gw/api/aggregator/get_author_commerce_seed_base_info",
"openapi": "3.1.0",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) author Commerce Seeding Base Info data, including baseline metrics, commercial signals, and seeding indicators, for product seeding analysis, creator vetting, and campaign planning.",
"method": "GET",
"operationId": "gwApiAggregatorGetAuthorCommerceSeedBaseInfoV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Author's unique ID.",
"enumValues": [],
"location": "query",
"name": "oAuthorId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": "DAY_90",
"description": "Time range.\n\nAvailable Values:\n- `DAY_30`: Last 30 days\n- `DAY_90`: Last 90 days",
"enumValues": [
"DAY_30",
"DAY_90"
],
"location": "query",
"name": "range",
"required": false,
"schemaType": "string"
}
],
"path": "/api/douyin-xingtu/gw/api/aggregator/get_author_commerce_seed_base_info/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Author Commerce Seeding Base Info",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_gw_api_aggregator_get_author_commerce_seed_base_info",
"skillType": "interface",
"slug": "justoneapi-douyin-xingtu-gw-api-aggregator-get-author-commerce-seed-base-info",
"sourceTitle": "OpenAPI definition"
}
FILE:generated/operations.md
# Douyin Creator Marketplace (Xingtu) Author Commerce Seeding Base Info operations
Generated from JustOneAPI OpenAPI for platform key `douyin-xingtu`.
Endpoint group: `gw/api/aggregator/get_author_commerce_seed_base_info`.
## `gwApiAggregatorGetAuthorCommerceSeedBaseInfoV1`
- Method: `GET`
- Path: `/api/douyin-xingtu/gw/api/aggregator/get_author_commerce_seed_base_info/v1`
- Summary: Author Commerce Seeding Base Info
- Description: Get Douyin Creator Marketplace (Xingtu) author Commerce Seeding Base Info data, including baseline metrics, commercial signals, and seeding indicators, for product seeding analysis, creator vetting, and campaign planning.
- Tags: `Douyin Creator Marketplace (Xingtu)`
### Parameters
| Name | In | Required | Type | Default | Description |
| --- | --- | --- | --- | --- | --- |
| `token` | `query` | yes | `string` | n/a | User authentication token. |
| `oAuthorId` | `query` | yes | `string` | n/a | Author's unique ID. |
| `range` | `query` | no | `string` | `DAY_90` | Time range.
Available Values:
- `DAY_30`: Last 30 days
- `DAY_90`: Last 90 days |
| enum | values | no | n/a | n/a | `DAY_30`, `DAY_90` |
### Request body
No request body.
### Responses
- `200`: OK
Call GET /api/douyin-xingtu/get-video-detail/v1 for Douyin Creator Marketplace (Xingtu) Video Details through JustOneAPI with detailId.
---
name: Douyin Creator Marketplace (Xingtu) Video Details API
description: Call GET /api/douyin-xingtu/get-video-detail/v1 for Douyin Creator Marketplace (Xingtu) Video Details through JustOneAPI with detailId.
author: JustOneAPI
homepage: https://api.justoneapi.com
metadata: {"openclaw":{"homepage":"https://api.justoneapi.com","primaryEnv":"JUST_ONE_API_TOKEN","requires":{"bins":["node"],"env":["JUST_ONE_API_TOKEN"]},"skillKey":"justoneapi_douyin_xingtu_get_video_detail"}}
---
# Douyin Creator Marketplace (Xingtu) Video Details
Use this focused JustOneAPI skill for video Details in Douyin Creator Marketplace (Xingtu). It targets `GET /api/douyin-xingtu/get-video-detail/v1`. Required non-token inputs are `detailId`. OpenAPI describes it as: Get Douyin Creator Marketplace (Xingtu) video Details data, including performance fields from the legacy Douyin Xingtu endpoint, for content review and integration compatibility.
## Endpoint Scope
- Platform key: `douyin-xingtu`
- Endpoint key: `get-video-detail`
- Platform family: Douyin Creator Marketplace (Xingtu)
- Skill slug: `justoneapi-douyin-xingtu-get-video-detail`
| Operation | Version | Method | Path | OpenAPI summary |
| --- | --- | --- | --- | --- |
| `getDouyinXingtuVideoDetailV1` | `v1` | `GET` | `/api/douyin-xingtu/get-video-detail/v1` | Video Details |
## Inputs
| Parameter | In | Required by | Optional by | Type | Notes |
| --- | --- | --- | --- | --- | --- |
| `acceptCache` | `query` | n/a | all | `boolean` | Enable cache |
| `detailId` | `query` | all | n/a | `string` | Video detail ID |
Request body: none documented; send parameters through path or query arguments.
## Version Choice
Use `getDouyinXingtuVideoDetailV1` for the documented `v1` endpoint. There are no alternate versions grouped in this skill.
## Run This Endpoint
Supported operation IDs in this skill: `getDouyinXingtuVideoDetailV1`.
```bash
node {baseDir}/bin/run.mjs --operation "getDouyinXingtuVideoDetailV1" --token "$JUST_ONE_API_TOKEN" --params-json '{"detailId":"<detailId>"}'
```
Ask for any missing required parameter before calling the helper. Keep user-provided IDs, cursors, keywords, and filters unchanged.
## Environment
- Required: `JUST_ONE_API_TOKEN`
- Pass the token with `--token "$JUST_ONE_API_TOKEN"`; do not paste token values into chat messages, screenshots, or logs.
- Get a token from [Just One API Dashboard](https://dashboard.justoneapi.com/en/login?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_get_video_detail&utm_content=project_link).
- Authentication details: [Just One API Usage Guide](https://docs.justoneapi.com/en/?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_get_video_detail&utm_content=project_link).
## Output Focus
- State the operation ID and endpoint path used, for example `getDouyinXingtuVideoDetailV1` on `/api/douyin-xingtu/get-video-detail/v1`.
- Echo the required lookup scope (`detailId`) before summarizing results.
- Prioritize fields that support this endpoint purpose: Get Douyin Creator Marketplace (Xingtu) video Details data, including performance fields from the legacy Douyin Xingtu endpoint, for content review and integration compatibility.
- Return raw JSON only after the short, endpoint-specific summary.
- If the backend errors, include the backend payload and the exact operation ID.
FILE:bin/run.mjs
#!/usr/bin/env node
const manifest = {
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/get-video-detail/v1 for Douyin Creator Marketplace (Xingtu) Video Details through JustOneAPI with detailId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Video Details",
"openapi": "3.1.0",
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_get_video_detail",
"slug": "justoneapi-douyin-xingtu-get-video-detail",
"sourceTitle": "OpenAPI definition",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) video Details data, including performance fields from the legacy Douyin Xingtu endpoint, for content review and integration compatibility.",
"method": "GET",
"operationId": "getDouyinXingtuVideoDetailV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Video detail ID.",
"enumValues": [],
"location": "query",
"name": "detailId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": false,
"description": "Enable cache.",
"enumValues": [],
"location": "query",
"name": "acceptCache",
"required": false,
"schemaType": "boolean"
}
],
"path": "/api/douyin-xingtu/get-video-detail/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Video Details",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"endpointPath": "get-video-detail",
"skillType": "interface"
};
const args = parseArgs(process.argv.slice(2));
if (!args.operation) {
fail("Missing required --operation argument.");
}
const operation = manifest.operations.find((item) => item.operationId === args.operation);
if (!operation) {
fail(`Unknown operation "args.operation".`, { availableOperations: manifest.operations.map((item) => item.operationId) });
}
const params = parseParams(args.paramsJson);
applyDefaults(operation, params);
injectToken(operation, params, args.token);
validateRequired(operation, params);
const baseUrl = manifest.baseUrl;
const url = new URL(operation.path, ensureBaseUrl(baseUrl));
applyPathParams(operation, params, url);
applyQueryParams(operation, params, url);
const requestInit = {
headers: {
"accept": "application/json",
},
method: operation.method,
};
if (operation.requestBody && params.body !== undefined) {
requestInit.body = JSON.stringify(params.body);
requestInit.headers["content-type"] = operation.requestBody.contentType || "application/json";
}
let response;
try {
response = await fetch(url, requestInit);
} catch (error) {
fail("Network request failed.", {
cause: error instanceof Error ? error.message : String(error),
operationId: operation.operationId,
});
}
const rawBody = await response.text();
let parsedBody;
try {
parsedBody = rawBody ? JSON.parse(rawBody) : null;
} catch (error) {
if (!response.ok) {
fail("Backend returned a non-JSON error response.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
fail("Backend returned invalid JSON.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
if (!response.ok) {
fail("Backend request failed.", {
body: parsedBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
process.stdout.write(`JSON.stringify(parsedBody, null, 2)\n`);
function parseArgs(argv) {
const parsed = { operation: null, paramsJson: "{}", token: null };
for (let index = 0; index < argv.length; index += 1) {
const flag = argv[index];
const value = argv[index + 1];
if (flag === "--operation") {
parsed.operation = value;
index += 1;
continue;
}
if (flag === "--params-json") {
parsed.paramsJson = value;
index += 1;
continue;
}
if (flag === "--token") {
parsed.token = value;
index += 1;
continue;
}
fail(`Unknown argument "flag".`);
}
return parsed;
}
function parseParams(input) {
try {
const parsed = JSON.parse(input || "{}");
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
fail("--params-json must decode to a JSON object.");
}
return parsed;
} catch (error) {
fail("Failed to parse --params-json.", {
cause: error instanceof Error ? error.message : String(error),
});
}
}
function applyDefaults(operation, params) {
for (const parameter of operation.parameters) {
if (params[parameter.name] === undefined && parameter.defaultValue !== null) {
params[parameter.name] = parameter.defaultValue;
}
}
}
function injectToken(operation, params, cliToken) {
const tokenParam = operation.parameters.find((parameter) => parameter.name === "token");
if (!tokenParam || params.token !== undefined) {
return;
}
if (!cliToken) {
fail("--token is required for this operation.", {
operationId: operation.operationId,
});
}
params.token = cliToken;
}
function validateRequired(operation, params) {
const missing = [];
for (const parameter of operation.parameters) {
if (parameter.required && params[parameter.name] === undefined) {
missing.push(parameter.name);
}
}
if (operation.requestBody?.required && params.body === undefined) {
missing.push("body");
}
if (missing.length) {
fail("Missing required parameters.", {
missing,
operationId: operation.operationId,
});
}
}
function applyPathParams(operation, params, url) {
let pathname = url.pathname;
for (const parameter of operation.parameters.filter((item) => item.location === "path")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
pathname = pathname.replace(`{parameter.name}`, encodeURIComponent(String(value)));
}
url.pathname = pathname;
}
function applyQueryParams(operation, params, url) {
for (const parameter of operation.parameters.filter((item) => item.location === "query")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
appendValue(url.searchParams, parameter.name, value);
}
}
function appendValue(searchParams, name, value) {
if (Array.isArray(value)) {
for (const item of value) {
appendValue(searchParams, name, item);
}
return;
}
if (value && typeof value === "object") {
searchParams.append(name, JSON.stringify(value));
return;
}
searchParams.append(name, String(value));
}
function ensureBaseUrl(value) {
return value.endsWith("/") ? value : `value/`;
}
function fail(message, details = null) {
const payload = { message };
if (details) {
payload.details = details;
}
process.stderr.write(`JSON.stringify(payload, null, 2)\n`);
process.exit(1);
}
FILE:generated/operations.json
{
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/get-video-detail/v1 for Douyin Creator Marketplace (Xingtu) Video Details through JustOneAPI with detailId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Video Details",
"endpointPath": "get-video-detail",
"openapi": "3.1.0",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) video Details data, including performance fields from the legacy Douyin Xingtu endpoint, for content review and integration compatibility.",
"method": "GET",
"operationId": "getDouyinXingtuVideoDetailV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Video detail ID.",
"enumValues": [],
"location": "query",
"name": "detailId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": false,
"description": "Enable cache.",
"enumValues": [],
"location": "query",
"name": "acceptCache",
"required": false,
"schemaType": "boolean"
}
],
"path": "/api/douyin-xingtu/get-video-detail/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Video Details",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_get_video_detail",
"skillType": "interface",
"slug": "justoneapi-douyin-xingtu-get-video-detail",
"sourceTitle": "OpenAPI definition"
}
FILE:generated/operations.md
# Douyin Creator Marketplace (Xingtu) Video Details operations
Generated from JustOneAPI OpenAPI for platform key `douyin-xingtu`.
Endpoint group: `get-video-detail`.
## `getDouyinXingtuVideoDetailV1`
- Method: `GET`
- Path: `/api/douyin-xingtu/get-video-detail/v1`
- Summary: Video Details
- Description: Get Douyin Creator Marketplace (Xingtu) video Details data, including performance fields from the legacy Douyin Xingtu endpoint, for content review and integration compatibility.
- Tags: `Douyin Creator Marketplace (Xingtu)`
### Parameters
| Name | In | Required | Type | Default | Description |
| --- | --- | --- | --- | --- | --- |
| `token` | `query` | yes | `string` | n/a | User authentication token. |
| `detailId` | `query` | yes | `string` | n/a | Video detail ID. |
| `acceptCache` | `query` | no | `boolean` | `false` | Enable cache. |
### Request body
No request body.
### Responses
- `200`: OK
Call GET /api/douyin-xingtu/get-kol-touch-distribution/v1 for Douyin Creator Marketplace (Xingtu) Audience Touchpoint Distribution through JustOneAPI with ko...
---
name: Douyin Creator Marketplace (Xingtu) Audience Touchpoint Distribution API
description: Call GET /api/douyin-xingtu/get-kol-touch-distribution/v1 for Douyin Creator Marketplace (Xingtu) Audience Touchpoint Distribution through JustOneAPI with kolId.
author: JustOneAPI
homepage: https://api.justoneapi.com
metadata: {"openclaw":{"homepage":"https://api.justoneapi.com","primaryEnv":"JUST_ONE_API_TOKEN","requires":{"bins":["node"],"env":["JUST_ONE_API_TOKEN"]},"skillKey":"justoneapi_douyin_xingtu_get_kol_touch_distribution"}}
---
# Douyin Creator Marketplace (Xingtu) Audience Touchpoint Distribution
Use this focused JustOneAPI skill for audience Touchpoint Distribution in Douyin Creator Marketplace (Xingtu). It targets `GET /api/douyin-xingtu/get-kol-touch-distribution/v1`. Required non-token inputs are `kolId`. OpenAPI describes it as: Get Douyin Creator Marketplace (Xingtu) audience touchpoint distribution data, including segment breakdowns, audience composition, and distribution signals, for traffic analysis and existing integration compatibility.
## Endpoint Scope
- Platform key: `douyin-xingtu`
- Endpoint key: `get-kol-touch-distribution`
- Platform family: Douyin Creator Marketplace (Xingtu)
- Skill slug: `justoneapi-douyin-xingtu-get-kol-touch-distribution`
| Operation | Version | Method | Path | OpenAPI summary |
| --- | --- | --- | --- | --- |
| `getKolTouchDistributionV1` | `v1` | `GET` | `/api/douyin-xingtu/get-kol-touch-distribution/v1` | Audience Touchpoint Distribution |
## Inputs
| Parameter | In | Required by | Optional by | Type | Notes |
| --- | --- | --- | --- | --- | --- |
| `acceptCache` | `query` | n/a | all | `boolean` | Enable cache |
| `kolId` | `query` | all | n/a | `string` | KOL ID |
Request body: none documented; send parameters through path or query arguments.
## Version Choice
Use `getKolTouchDistributionV1` for the documented `v1` endpoint. There are no alternate versions grouped in this skill.
## Run This Endpoint
Supported operation IDs in this skill: `getKolTouchDistributionV1`.
```bash
node {baseDir}/bin/run.mjs --operation "getKolTouchDistributionV1" --token "$JUST_ONE_API_TOKEN" --params-json '{"kolId":"<kolId>"}'
```
Ask for any missing required parameter before calling the helper. Keep user-provided IDs, cursors, keywords, and filters unchanged.
## Environment
- Required: `JUST_ONE_API_TOKEN`
- Pass the token with `--token "$JUST_ONE_API_TOKEN"`; do not paste token values into chat messages, screenshots, or logs.
- Get a token from [Just One API Dashboard](https://dashboard.justoneapi.com/en/login?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_get_kol_touch_distribution&utm_content=project_link).
- Authentication details: [Just One API Usage Guide](https://docs.justoneapi.com/en/?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_get_kol_touch_distribution&utm_content=project_link).
## Output Focus
- State the operation ID and endpoint path used, for example `getKolTouchDistributionV1` on `/api/douyin-xingtu/get-kol-touch-distribution/v1`.
- Echo the required lookup scope (`kolId`) before summarizing results.
- Prioritize fields that support this endpoint purpose: Get Douyin Creator Marketplace (Xingtu) audience touchpoint distribution data, including segment breakdowns, audience composition, and distribution signals, for traffic analysis and existing integration compatibility.
- Return raw JSON only after the short, endpoint-specific summary.
- If the backend errors, include the backend payload and the exact operation ID.
FILE:bin/run.mjs
#!/usr/bin/env node
const manifest = {
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/get-kol-touch-distribution/v1 for Douyin Creator Marketplace (Xingtu) Audience Touchpoint Distribution through JustOneAPI with kolId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Audience Touchpoint Distribution",
"openapi": "3.1.0",
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_get_kol_touch_distribution",
"slug": "justoneapi-douyin-xingtu-get-kol-touch-distribution",
"sourceTitle": "OpenAPI definition",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) audience touchpoint distribution data, including segment breakdowns, audience composition, and distribution signals, for traffic analysis and existing integration compatibility.",
"method": "GET",
"operationId": "getKolTouchDistributionV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "KOL ID.",
"enumValues": [],
"location": "query",
"name": "kolId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": false,
"description": "Enable cache.",
"enumValues": [],
"location": "query",
"name": "acceptCache",
"required": false,
"schemaType": "boolean"
}
],
"path": "/api/douyin-xingtu/get-kol-touch-distribution/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Audience Touchpoint Distribution",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"endpointPath": "get-kol-touch-distribution",
"skillType": "interface"
};
const args = parseArgs(process.argv.slice(2));
if (!args.operation) {
fail("Missing required --operation argument.");
}
const operation = manifest.operations.find((item) => item.operationId === args.operation);
if (!operation) {
fail(`Unknown operation "args.operation".`, { availableOperations: manifest.operations.map((item) => item.operationId) });
}
const params = parseParams(args.paramsJson);
applyDefaults(operation, params);
injectToken(operation, params, args.token);
validateRequired(operation, params);
const baseUrl = manifest.baseUrl;
const url = new URL(operation.path, ensureBaseUrl(baseUrl));
applyPathParams(operation, params, url);
applyQueryParams(operation, params, url);
const requestInit = {
headers: {
"accept": "application/json",
},
method: operation.method,
};
if (operation.requestBody && params.body !== undefined) {
requestInit.body = JSON.stringify(params.body);
requestInit.headers["content-type"] = operation.requestBody.contentType || "application/json";
}
let response;
try {
response = await fetch(url, requestInit);
} catch (error) {
fail("Network request failed.", {
cause: error instanceof Error ? error.message : String(error),
operationId: operation.operationId,
});
}
const rawBody = await response.text();
let parsedBody;
try {
parsedBody = rawBody ? JSON.parse(rawBody) : null;
} catch (error) {
if (!response.ok) {
fail("Backend returned a non-JSON error response.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
fail("Backend returned invalid JSON.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
if (!response.ok) {
fail("Backend request failed.", {
body: parsedBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
process.stdout.write(`JSON.stringify(parsedBody, null, 2)\n`);
function parseArgs(argv) {
const parsed = { operation: null, paramsJson: "{}", token: null };
for (let index = 0; index < argv.length; index += 1) {
const flag = argv[index];
const value = argv[index + 1];
if (flag === "--operation") {
parsed.operation = value;
index += 1;
continue;
}
if (flag === "--params-json") {
parsed.paramsJson = value;
index += 1;
continue;
}
if (flag === "--token") {
parsed.token = value;
index += 1;
continue;
}
fail(`Unknown argument "flag".`);
}
return parsed;
}
function parseParams(input) {
try {
const parsed = JSON.parse(input || "{}");
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
fail("--params-json must decode to a JSON object.");
}
return parsed;
} catch (error) {
fail("Failed to parse --params-json.", {
cause: error instanceof Error ? error.message : String(error),
});
}
}
function applyDefaults(operation, params) {
for (const parameter of operation.parameters) {
if (params[parameter.name] === undefined && parameter.defaultValue !== null) {
params[parameter.name] = parameter.defaultValue;
}
}
}
function injectToken(operation, params, cliToken) {
const tokenParam = operation.parameters.find((parameter) => parameter.name === "token");
if (!tokenParam || params.token !== undefined) {
return;
}
if (!cliToken) {
fail("--token is required for this operation.", {
operationId: operation.operationId,
});
}
params.token = cliToken;
}
function validateRequired(operation, params) {
const missing = [];
for (const parameter of operation.parameters) {
if (parameter.required && params[parameter.name] === undefined) {
missing.push(parameter.name);
}
}
if (operation.requestBody?.required && params.body === undefined) {
missing.push("body");
}
if (missing.length) {
fail("Missing required parameters.", {
missing,
operationId: operation.operationId,
});
}
}
function applyPathParams(operation, params, url) {
let pathname = url.pathname;
for (const parameter of operation.parameters.filter((item) => item.location === "path")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
pathname = pathname.replace(`{parameter.name}`, encodeURIComponent(String(value)));
}
url.pathname = pathname;
}
function applyQueryParams(operation, params, url) {
for (const parameter of operation.parameters.filter((item) => item.location === "query")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
appendValue(url.searchParams, parameter.name, value);
}
}
function appendValue(searchParams, name, value) {
if (Array.isArray(value)) {
for (const item of value) {
appendValue(searchParams, name, item);
}
return;
}
if (value && typeof value === "object") {
searchParams.append(name, JSON.stringify(value));
return;
}
searchParams.append(name, String(value));
}
function ensureBaseUrl(value) {
return value.endsWith("/") ? value : `value/`;
}
function fail(message, details = null) {
const payload = { message };
if (details) {
payload.details = details;
}
process.stderr.write(`JSON.stringify(payload, null, 2)\n`);
process.exit(1);
}
FILE:generated/operations.json
{
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/get-kol-touch-distribution/v1 for Douyin Creator Marketplace (Xingtu) Audience Touchpoint Distribution through JustOneAPI with kolId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Audience Touchpoint Distribution",
"endpointPath": "get-kol-touch-distribution",
"openapi": "3.1.0",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) audience touchpoint distribution data, including segment breakdowns, audience composition, and distribution signals, for traffic analysis and existing integration compatibility.",
"method": "GET",
"operationId": "getKolTouchDistributionV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "KOL ID.",
"enumValues": [],
"location": "query",
"name": "kolId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": false,
"description": "Enable cache.",
"enumValues": [],
"location": "query",
"name": "acceptCache",
"required": false,
"schemaType": "boolean"
}
],
"path": "/api/douyin-xingtu/get-kol-touch-distribution/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Audience Touchpoint Distribution",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_get_kol_touch_distribution",
"skillType": "interface",
"slug": "justoneapi-douyin-xingtu-get-kol-touch-distribution",
"sourceTitle": "OpenAPI definition"
}
FILE:generated/operations.md
# Douyin Creator Marketplace (Xingtu) Audience Touchpoint Distribution operations
Generated from JustOneAPI OpenAPI for platform key `douyin-xingtu`.
Endpoint group: `get-kol-touch-distribution`.
## `getKolTouchDistributionV1`
- Method: `GET`
- Path: `/api/douyin-xingtu/get-kol-touch-distribution/v1`
- Summary: Audience Touchpoint Distribution
- Description: Get Douyin Creator Marketplace (Xingtu) audience touchpoint distribution data, including segment breakdowns, audience composition, and distribution signals, for traffic analysis and existing integration compatibility.
- Tags: `Douyin Creator Marketplace (Xingtu)`
### Parameters
| Name | In | Required | Type | Default | Description |
| --- | --- | --- | --- | --- | --- |
| `token` | `query` | yes | `string` | n/a | User authentication token. |
| `kolId` | `query` | yes | `string` | n/a | KOL ID. |
| `acceptCache` | `query` | no | `boolean` | `false` | Enable cache. |
### Request body
No request body.
### Responses
- `200`: OK
Call GET /api/douyin-xingtu/get-kol-spread-info/v1 for Douyin Creator Marketplace (Xingtu) Spread Metrics through JustOneAPI with kolId.
---
name: Douyin Creator Marketplace (Xingtu) Spread Metrics API
description: Call GET /api/douyin-xingtu/get-kol-spread-info/v1 for Douyin Creator Marketplace (Xingtu) Spread Metrics through JustOneAPI with kolId.
author: JustOneAPI
homepage: https://api.justoneapi.com
metadata: {"openclaw":{"homepage":"https://api.justoneapi.com","primaryEnv":"JUST_ONE_API_TOKEN","requires":{"bins":["node"],"env":["JUST_ONE_API_TOKEN"]},"skillKey":"justoneapi_douyin_xingtu_get_kol_spread_info"}}
---
# Douyin Creator Marketplace (Xingtu) Spread Metrics
Use this focused JustOneAPI skill for spread Metrics in Douyin Creator Marketplace (Xingtu). It targets `GET /api/douyin-xingtu/get-kol-spread-info/v1`. Required non-token inputs are `kolId`. OpenAPI describes it as: Get Douyin Creator Marketplace (Xingtu) spread metrics data, including audience, content performance, and commercial indicators, for quick evaluation.
## Endpoint Scope
- Platform key: `douyin-xingtu`
- Endpoint key: `get-kol-spread-info`
- Platform family: Douyin Creator Marketplace (Xingtu)
- Skill slug: `justoneapi-douyin-xingtu-get-kol-spread-info`
| Operation | Version | Method | Path | OpenAPI summary |
| --- | --- | --- | --- | --- |
| `getKolSpreadInfoV1` | `v1` | `GET` | `/api/douyin-xingtu/get-kol-spread-info/v1` | Spread Metrics |
## Inputs
| Parameter | In | Required by | Optional by | Type | Notes |
| --- | --- | --- | --- | --- | --- |
| `acceptCache` | `query` | n/a | all | `boolean` | Enable cache |
| `flowType` | `query` | n/a | all | `string` | Flow type |
| `kolId` | `query` | all | n/a | `string` | KOL ID |
| `onlyAssign` | `query` | n/a | all | `boolean` | Only assigned notes |
| `range` | `query` | n/a | all | `string` | Time range. Available Values: - `_2`: Last 30 days - `_3`: Last 90 days |
| `range` enum | values | n/a | n/a | n/a | `_2`, `_3` |
| `type` | `query` | n/a | all | `string` | Spread info type. Available Values: - `_1`: Personal Video - `_2`: Xingtu Video |
| `type` enum | values | n/a | n/a | n/a | `_1`, `_2` |
Request body: none documented; send parameters through path or query arguments.
## Version Choice
Use `getKolSpreadInfoV1` for the documented `v1` endpoint. There are no alternate versions grouped in this skill.
## Run This Endpoint
Supported operation IDs in this skill: `getKolSpreadInfoV1`.
```bash
node {baseDir}/bin/run.mjs --operation "getKolSpreadInfoV1" --token "$JUST_ONE_API_TOKEN" --params-json '{"kolId":"<kolId>"}'
```
Ask for any missing required parameter before calling the helper. Keep user-provided IDs, cursors, keywords, and filters unchanged.
## Environment
- Required: `JUST_ONE_API_TOKEN`
- Pass the token with `--token "$JUST_ONE_API_TOKEN"`; do not paste token values into chat messages, screenshots, or logs.
- Get a token from [Just One API Dashboard](https://dashboard.justoneapi.com/en/login?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_get_kol_spread_info&utm_content=project_link).
- Authentication details: [Just One API Usage Guide](https://docs.justoneapi.com/en/?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_get_kol_spread_info&utm_content=project_link).
## Output Focus
- State the operation ID and endpoint path used, for example `getKolSpreadInfoV1` on `/api/douyin-xingtu/get-kol-spread-info/v1`.
- Echo the required lookup scope (`kolId`) before summarizing results.
- Prioritize fields that support this endpoint purpose: Get Douyin Creator Marketplace (Xingtu) spread metrics data, including audience, content performance, and commercial indicators, for quick evaluation.
- Return raw JSON only after the short, endpoint-specific summary.
- If the backend errors, include the backend payload and the exact operation ID.
FILE:bin/run.mjs
#!/usr/bin/env node
const manifest = {
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/get-kol-spread-info/v1 for Douyin Creator Marketplace (Xingtu) Spread Metrics through JustOneAPI with kolId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Spread Metrics",
"openapi": "3.1.0",
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_get_kol_spread_info",
"slug": "justoneapi-douyin-xingtu-get-kol-spread-info",
"sourceTitle": "OpenAPI definition",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) spread metrics data, including audience, content performance, and commercial indicators, for quick evaluation.",
"method": "GET",
"operationId": "getKolSpreadInfoV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "KOL ID.",
"enumValues": [],
"location": "query",
"name": "kolId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": "_1",
"description": "Spread info type.\n\nAvailable Values:\n- `_1`: Personal Video\n- `_2`: Xingtu Video",
"enumValues": [
"_1",
"_2"
],
"location": "query",
"name": "type",
"required": false,
"schemaType": "string"
},
{
"defaultValue": "_2",
"description": "Time range.\n\nAvailable Values:\n- `_2`: Last 30 days\n- `_3`: Last 90 days",
"enumValues": [
"_2",
"_3"
],
"location": "query",
"name": "range",
"required": false,
"schemaType": "string"
},
{
"defaultValue": "1",
"description": "Flow type.",
"enumValues": [],
"location": "query",
"name": "flowType",
"required": false,
"schemaType": "string"
},
{
"defaultValue": false,
"description": "Only assigned notes.",
"enumValues": [],
"location": "query",
"name": "onlyAssign",
"required": false,
"schemaType": "boolean"
},
{
"defaultValue": false,
"description": "Enable cache.",
"enumValues": [],
"location": "query",
"name": "acceptCache",
"required": false,
"schemaType": "boolean"
}
],
"path": "/api/douyin-xingtu/get-kol-spread-info/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Spread Metrics",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"endpointPath": "get-kol-spread-info",
"skillType": "interface"
};
const args = parseArgs(process.argv.slice(2));
if (!args.operation) {
fail("Missing required --operation argument.");
}
const operation = manifest.operations.find((item) => item.operationId === args.operation);
if (!operation) {
fail(`Unknown operation "args.operation".`, { availableOperations: manifest.operations.map((item) => item.operationId) });
}
const params = parseParams(args.paramsJson);
applyDefaults(operation, params);
injectToken(operation, params, args.token);
validateRequired(operation, params);
const baseUrl = manifest.baseUrl;
const url = new URL(operation.path, ensureBaseUrl(baseUrl));
applyPathParams(operation, params, url);
applyQueryParams(operation, params, url);
const requestInit = {
headers: {
"accept": "application/json",
},
method: operation.method,
};
if (operation.requestBody && params.body !== undefined) {
requestInit.body = JSON.stringify(params.body);
requestInit.headers["content-type"] = operation.requestBody.contentType || "application/json";
}
let response;
try {
response = await fetch(url, requestInit);
} catch (error) {
fail("Network request failed.", {
cause: error instanceof Error ? error.message : String(error),
operationId: operation.operationId,
});
}
const rawBody = await response.text();
let parsedBody;
try {
parsedBody = rawBody ? JSON.parse(rawBody) : null;
} catch (error) {
if (!response.ok) {
fail("Backend returned a non-JSON error response.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
fail("Backend returned invalid JSON.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
if (!response.ok) {
fail("Backend request failed.", {
body: parsedBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
process.stdout.write(`JSON.stringify(parsedBody, null, 2)\n`);
function parseArgs(argv) {
const parsed = { operation: null, paramsJson: "{}", token: null };
for (let index = 0; index < argv.length; index += 1) {
const flag = argv[index];
const value = argv[index + 1];
if (flag === "--operation") {
parsed.operation = value;
index += 1;
continue;
}
if (flag === "--params-json") {
parsed.paramsJson = value;
index += 1;
continue;
}
if (flag === "--token") {
parsed.token = value;
index += 1;
continue;
}
fail(`Unknown argument "flag".`);
}
return parsed;
}
function parseParams(input) {
try {
const parsed = JSON.parse(input || "{}");
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
fail("--params-json must decode to a JSON object.");
}
return parsed;
} catch (error) {
fail("Failed to parse --params-json.", {
cause: error instanceof Error ? error.message : String(error),
});
}
}
function applyDefaults(operation, params) {
for (const parameter of operation.parameters) {
if (params[parameter.name] === undefined && parameter.defaultValue !== null) {
params[parameter.name] = parameter.defaultValue;
}
}
}
function injectToken(operation, params, cliToken) {
const tokenParam = operation.parameters.find((parameter) => parameter.name === "token");
if (!tokenParam || params.token !== undefined) {
return;
}
if (!cliToken) {
fail("--token is required for this operation.", {
operationId: operation.operationId,
});
}
params.token = cliToken;
}
function validateRequired(operation, params) {
const missing = [];
for (const parameter of operation.parameters) {
if (parameter.required && params[parameter.name] === undefined) {
missing.push(parameter.name);
}
}
if (operation.requestBody?.required && params.body === undefined) {
missing.push("body");
}
if (missing.length) {
fail("Missing required parameters.", {
missing,
operationId: operation.operationId,
});
}
}
function applyPathParams(operation, params, url) {
let pathname = url.pathname;
for (const parameter of operation.parameters.filter((item) => item.location === "path")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
pathname = pathname.replace(`{parameter.name}`, encodeURIComponent(String(value)));
}
url.pathname = pathname;
}
function applyQueryParams(operation, params, url) {
for (const parameter of operation.parameters.filter((item) => item.location === "query")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
appendValue(url.searchParams, parameter.name, value);
}
}
function appendValue(searchParams, name, value) {
if (Array.isArray(value)) {
for (const item of value) {
appendValue(searchParams, name, item);
}
return;
}
if (value && typeof value === "object") {
searchParams.append(name, JSON.stringify(value));
return;
}
searchParams.append(name, String(value));
}
function ensureBaseUrl(value) {
return value.endsWith("/") ? value : `value/`;
}
function fail(message, details = null) {
const payload = { message };
if (details) {
payload.details = details;
}
process.stderr.write(`JSON.stringify(payload, null, 2)\n`);
process.exit(1);
}
FILE:generated/operations.json
{
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/get-kol-spread-info/v1 for Douyin Creator Marketplace (Xingtu) Spread Metrics through JustOneAPI with kolId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Spread Metrics",
"endpointPath": "get-kol-spread-info",
"openapi": "3.1.0",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) spread metrics data, including audience, content performance, and commercial indicators, for quick evaluation.",
"method": "GET",
"operationId": "getKolSpreadInfoV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "KOL ID.",
"enumValues": [],
"location": "query",
"name": "kolId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": "_1",
"description": "Spread info type.\n\nAvailable Values:\n- `_1`: Personal Video\n- `_2`: Xingtu Video",
"enumValues": [
"_1",
"_2"
],
"location": "query",
"name": "type",
"required": false,
"schemaType": "string"
},
{
"defaultValue": "_2",
"description": "Time range.\n\nAvailable Values:\n- `_2`: Last 30 days\n- `_3`: Last 90 days",
"enumValues": [
"_2",
"_3"
],
"location": "query",
"name": "range",
"required": false,
"schemaType": "string"
},
{
"defaultValue": "1",
"description": "Flow type.",
"enumValues": [],
"location": "query",
"name": "flowType",
"required": false,
"schemaType": "string"
},
{
"defaultValue": false,
"description": "Only assigned notes.",
"enumValues": [],
"location": "query",
"name": "onlyAssign",
"required": false,
"schemaType": "boolean"
},
{
"defaultValue": false,
"description": "Enable cache.",
"enumValues": [],
"location": "query",
"name": "acceptCache",
"required": false,
"schemaType": "boolean"
}
],
"path": "/api/douyin-xingtu/get-kol-spread-info/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Spread Metrics",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_get_kol_spread_info",
"skillType": "interface",
"slug": "justoneapi-douyin-xingtu-get-kol-spread-info",
"sourceTitle": "OpenAPI definition"
}
FILE:generated/operations.md
# Douyin Creator Marketplace (Xingtu) Spread Metrics operations
Generated from JustOneAPI OpenAPI for platform key `douyin-xingtu`.
Endpoint group: `get-kol-spread-info`.
## `getKolSpreadInfoV1`
- Method: `GET`
- Path: `/api/douyin-xingtu/get-kol-spread-info/v1`
- Summary: Spread Metrics
- Description: Get Douyin Creator Marketplace (Xingtu) spread metrics data, including audience, content performance, and commercial indicators, for quick evaluation.
- Tags: `Douyin Creator Marketplace (Xingtu)`
### Parameters
| Name | In | Required | Type | Default | Description |
| --- | --- | --- | --- | --- | --- |
| `token` | `query` | yes | `string` | n/a | User authentication token. |
| `kolId` | `query` | yes | `string` | n/a | KOL ID. |
| `type` | `query` | no | `string` | `_1` | Spread info type.
Available Values:
- `_1`: Personal Video
- `_2`: Xingtu Video |
| enum | values | no | n/a | n/a | `_1`, `_2` |
| `range` | `query` | no | `string` | `_2` | Time range.
Available Values:
- `_2`: Last 30 days
- `_3`: Last 90 days |
| enum | values | no | n/a | n/a | `_2`, `_3` |
| `flowType` | `query` | no | `string` | `1` | Flow type. |
| `onlyAssign` | `query` | no | `boolean` | `false` | Only assigned notes. |
| `acceptCache` | `query` | no | `boolean` | `false` | Enable cache. |
### Request body
No request body.
### Responses
- `200`: OK
Call GET /api/douyin-xingtu/get-kol-show-items-v2/v1 for Douyin Creator Marketplace (Xingtu) Showcase Items through JustOneAPI with kolId.
---
name: Douyin Creator Marketplace (Xingtu) Showcase Items API
description: Call GET /api/douyin-xingtu/get-kol-show-items-v2/v1 for Douyin Creator Marketplace (Xingtu) Showcase Items through JustOneAPI with kolId.
author: JustOneAPI
homepage: https://api.justoneapi.com
metadata: {"openclaw":{"homepage":"https://api.justoneapi.com","primaryEnv":"JUST_ONE_API_TOKEN","requires":{"bins":["node"],"env":["JUST_ONE_API_TOKEN"]},"skillKey":"justoneapi_douyin_xingtu_get_kol_show_items_v2"}}
---
# Douyin Creator Marketplace (Xingtu) Showcase Items
Use this focused JustOneAPI skill for showcase Items in Douyin Creator Marketplace (Xingtu). It targets `GET /api/douyin-xingtu/get-kol-show-items-v2/v1`. Required non-token inputs are `kolId`. OpenAPI describes it as: Get Douyin Creator Marketplace (Xingtu) showcase items data, including core metrics, trend signals, and performance indicators, for creator evaluation, campaign planning, and marketplace research.
## Endpoint Scope
- Platform key: `douyin-xingtu`
- Endpoint key: `get-kol-show-items-v2`
- Platform family: Douyin Creator Marketplace (Xingtu)
- Skill slug: `justoneapi-douyin-xingtu-get-kol-show-items-v2`
| Operation | Version | Method | Path | OpenAPI summary |
| --- | --- | --- | --- | --- |
| `getKolShowItemsV2V1` | `v1` | `GET` | `/api/douyin-xingtu/get-kol-show-items-v2/v1` | Showcase Items |
## Inputs
| Parameter | In | Required by | Optional by | Type | Notes |
| --- | --- | --- | --- | --- | --- |
| `acceptCache` | `query` | n/a | all | `boolean` | Enable cache |
| `kolId` | `query` | all | n/a | `string` | KOL ID |
| `onlyAssign` | `query` | n/a | all | `boolean` | Whether true is Xingtu video, false is personal video |
Request body: none documented; send parameters through path or query arguments.
## Version Choice
Use `getKolShowItemsV2V1` for the documented `v1` endpoint. There are no alternate versions grouped in this skill.
## Run This Endpoint
Supported operation IDs in this skill: `getKolShowItemsV2V1`.
```bash
node {baseDir}/bin/run.mjs --operation "getKolShowItemsV2V1" --token "$JUST_ONE_API_TOKEN" --params-json '{"kolId":"<kolId>"}'
```
Ask for any missing required parameter before calling the helper. Keep user-provided IDs, cursors, keywords, and filters unchanged.
## Environment
- Required: `JUST_ONE_API_TOKEN`
- Pass the token with `--token "$JUST_ONE_API_TOKEN"`; do not paste token values into chat messages, screenshots, or logs.
- Get a token from [Just One API Dashboard](https://dashboard.justoneapi.com/en/login?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_get_kol_show_items_v2&utm_content=project_link).
- Authentication details: [Just One API Usage Guide](https://docs.justoneapi.com/en/?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_get_kol_show_items_v2&utm_content=project_link).
## Output Focus
- State the operation ID and endpoint path used, for example `getKolShowItemsV2V1` on `/api/douyin-xingtu/get-kol-show-items-v2/v1`.
- Echo the required lookup scope (`kolId`) before summarizing results.
- Prioritize fields that support this endpoint purpose: Get Douyin Creator Marketplace (Xingtu) showcase items data, including core metrics, trend signals, and performance indicators, for creator evaluation, campaign planning, and marketplace research.
- Return raw JSON only after the short, endpoint-specific summary.
- If the backend errors, include the backend payload and the exact operation ID.
FILE:bin/run.mjs
#!/usr/bin/env node
const manifest = {
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/get-kol-show-items-v2/v1 for Douyin Creator Marketplace (Xingtu) Showcase Items through JustOneAPI with kolId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Showcase Items",
"openapi": "3.1.0",
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_get_kol_show_items_v2",
"slug": "justoneapi-douyin-xingtu-get-kol-show-items-v2",
"sourceTitle": "OpenAPI definition",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) showcase items data, including core metrics, trend signals, and performance indicators, for creator evaluation, campaign planning, and marketplace research.",
"method": "GET",
"operationId": "getKolShowItemsV2V1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "KOL ID.",
"enumValues": [],
"location": "query",
"name": "kolId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": false,
"description": "Whether true is Xingtu video, false is personal video.",
"enumValues": [],
"location": "query",
"name": "onlyAssign",
"required": false,
"schemaType": "boolean"
},
{
"defaultValue": false,
"description": "Enable cache.",
"enumValues": [],
"location": "query",
"name": "acceptCache",
"required": false,
"schemaType": "boolean"
}
],
"path": "/api/douyin-xingtu/get-kol-show-items-v2/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Showcase Items",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"endpointPath": "get-kol-show-items-v2",
"skillType": "interface"
};
const args = parseArgs(process.argv.slice(2));
if (!args.operation) {
fail("Missing required --operation argument.");
}
const operation = manifest.operations.find((item) => item.operationId === args.operation);
if (!operation) {
fail(`Unknown operation "args.operation".`, { availableOperations: manifest.operations.map((item) => item.operationId) });
}
const params = parseParams(args.paramsJson);
applyDefaults(operation, params);
injectToken(operation, params, args.token);
validateRequired(operation, params);
const baseUrl = manifest.baseUrl;
const url = new URL(operation.path, ensureBaseUrl(baseUrl));
applyPathParams(operation, params, url);
applyQueryParams(operation, params, url);
const requestInit = {
headers: {
"accept": "application/json",
},
method: operation.method,
};
if (operation.requestBody && params.body !== undefined) {
requestInit.body = JSON.stringify(params.body);
requestInit.headers["content-type"] = operation.requestBody.contentType || "application/json";
}
let response;
try {
response = await fetch(url, requestInit);
} catch (error) {
fail("Network request failed.", {
cause: error instanceof Error ? error.message : String(error),
operationId: operation.operationId,
});
}
const rawBody = await response.text();
let parsedBody;
try {
parsedBody = rawBody ? JSON.parse(rawBody) : null;
} catch (error) {
if (!response.ok) {
fail("Backend returned a non-JSON error response.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
fail("Backend returned invalid JSON.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
if (!response.ok) {
fail("Backend request failed.", {
body: parsedBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
process.stdout.write(`JSON.stringify(parsedBody, null, 2)\n`);
function parseArgs(argv) {
const parsed = { operation: null, paramsJson: "{}", token: null };
for (let index = 0; index < argv.length; index += 1) {
const flag = argv[index];
const value = argv[index + 1];
if (flag === "--operation") {
parsed.operation = value;
index += 1;
continue;
}
if (flag === "--params-json") {
parsed.paramsJson = value;
index += 1;
continue;
}
if (flag === "--token") {
parsed.token = value;
index += 1;
continue;
}
fail(`Unknown argument "flag".`);
}
return parsed;
}
function parseParams(input) {
try {
const parsed = JSON.parse(input || "{}");
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
fail("--params-json must decode to a JSON object.");
}
return parsed;
} catch (error) {
fail("Failed to parse --params-json.", {
cause: error instanceof Error ? error.message : String(error),
});
}
}
function applyDefaults(operation, params) {
for (const parameter of operation.parameters) {
if (params[parameter.name] === undefined && parameter.defaultValue !== null) {
params[parameter.name] = parameter.defaultValue;
}
}
}
function injectToken(operation, params, cliToken) {
const tokenParam = operation.parameters.find((parameter) => parameter.name === "token");
if (!tokenParam || params.token !== undefined) {
return;
}
if (!cliToken) {
fail("--token is required for this operation.", {
operationId: operation.operationId,
});
}
params.token = cliToken;
}
function validateRequired(operation, params) {
const missing = [];
for (const parameter of operation.parameters) {
if (parameter.required && params[parameter.name] === undefined) {
missing.push(parameter.name);
}
}
if (operation.requestBody?.required && params.body === undefined) {
missing.push("body");
}
if (missing.length) {
fail("Missing required parameters.", {
missing,
operationId: operation.operationId,
});
}
}
function applyPathParams(operation, params, url) {
let pathname = url.pathname;
for (const parameter of operation.parameters.filter((item) => item.location === "path")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
pathname = pathname.replace(`{parameter.name}`, encodeURIComponent(String(value)));
}
url.pathname = pathname;
}
function applyQueryParams(operation, params, url) {
for (const parameter of operation.parameters.filter((item) => item.location === "query")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
appendValue(url.searchParams, parameter.name, value);
}
}
function appendValue(searchParams, name, value) {
if (Array.isArray(value)) {
for (const item of value) {
appendValue(searchParams, name, item);
}
return;
}
if (value && typeof value === "object") {
searchParams.append(name, JSON.stringify(value));
return;
}
searchParams.append(name, String(value));
}
function ensureBaseUrl(value) {
return value.endsWith("/") ? value : `value/`;
}
function fail(message, details = null) {
const payload = { message };
if (details) {
payload.details = details;
}
process.stderr.write(`JSON.stringify(payload, null, 2)\n`);
process.exit(1);
}
FILE:generated/operations.json
{
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/get-kol-show-items-v2/v1 for Douyin Creator Marketplace (Xingtu) Showcase Items through JustOneAPI with kolId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Showcase Items",
"endpointPath": "get-kol-show-items-v2",
"openapi": "3.1.0",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) showcase items data, including core metrics, trend signals, and performance indicators, for creator evaluation, campaign planning, and marketplace research.",
"method": "GET",
"operationId": "getKolShowItemsV2V1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "KOL ID.",
"enumValues": [],
"location": "query",
"name": "kolId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": false,
"description": "Whether true is Xingtu video, false is personal video.",
"enumValues": [],
"location": "query",
"name": "onlyAssign",
"required": false,
"schemaType": "boolean"
},
{
"defaultValue": false,
"description": "Enable cache.",
"enumValues": [],
"location": "query",
"name": "acceptCache",
"required": false,
"schemaType": "boolean"
}
],
"path": "/api/douyin-xingtu/get-kol-show-items-v2/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Showcase Items",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_get_kol_show_items_v2",
"skillType": "interface",
"slug": "justoneapi-douyin-xingtu-get-kol-show-items-v2",
"sourceTitle": "OpenAPI definition"
}
FILE:generated/operations.md
# Douyin Creator Marketplace (Xingtu) Showcase Items operations
Generated from JustOneAPI OpenAPI for platform key `douyin-xingtu`.
Endpoint group: `get-kol-show-items-v2`.
## `getKolShowItemsV2V1`
- Method: `GET`
- Path: `/api/douyin-xingtu/get-kol-show-items-v2/v1`
- Summary: Showcase Items
- Description: Get Douyin Creator Marketplace (Xingtu) showcase items data, including core metrics, trend signals, and performance indicators, for creator evaluation, campaign planning, and marketplace research.
- Tags: `Douyin Creator Marketplace (Xingtu)`
### Parameters
| Name | In | Required | Type | Default | Description |
| --- | --- | --- | --- | --- | --- |
| `token` | `query` | yes | `string` | n/a | User authentication token. |
| `kolId` | `query` | yes | `string` | n/a | KOL ID. |
| `onlyAssign` | `query` | no | `boolean` | `false` | Whether true is Xingtu video, false is personal video. |
| `acceptCache` | `query` | no | `boolean` | `false` | Enable cache. |
### Request body
No request body.
### Responses
- `200`: OK
Call GET /api/douyin-xingtu/get-kol-rec-videos/v1 for Douyin Creator Marketplace (Xingtu) Recommended Videos through JustOneAPI with kolId.
---
name: Douyin Creator Marketplace (Xingtu) Recommended Videos API
description: Call GET /api/douyin-xingtu/get-kol-rec-videos/v1 for Douyin Creator Marketplace (Xingtu) Recommended Videos through JustOneAPI with kolId.
author: JustOneAPI
homepage: https://api.justoneapi.com
metadata: {"openclaw":{"homepage":"https://api.justoneapi.com","primaryEnv":"JUST_ONE_API_TOKEN","requires":{"bins":["node"],"env":["JUST_ONE_API_TOKEN"]},"skillKey":"justoneapi_douyin_xingtu_get_kol_rec_videos"}}
---
# Douyin Creator Marketplace (Xingtu) Recommended Videos
Use this focused JustOneAPI skill for recommended Videos in Douyin Creator Marketplace (Xingtu). It targets `GET /api/douyin-xingtu/get-kol-rec-videos/v1`. Required non-token inputs are `kolId`. OpenAPI describes it as: Get Douyin Creator Marketplace (Xingtu) recommended videos data, including video performance metrics, for creator evaluation, campaign planning, and marketplace research.
## Endpoint Scope
- Platform key: `douyin-xingtu`
- Endpoint key: `get-kol-rec-videos`
- Platform family: Douyin Creator Marketplace (Xingtu)
- Skill slug: `justoneapi-douyin-xingtu-get-kol-rec-videos`
| Operation | Version | Method | Path | OpenAPI summary |
| --- | --- | --- | --- | --- |
| `getKolRecVideosV1` | `v1` | `GET` | `/api/douyin-xingtu/get-kol-rec-videos/v1` | Recommended Videos |
## Inputs
| Parameter | In | Required by | Optional by | Type | Notes |
| --- | --- | --- | --- | --- | --- |
| `acceptCache` | `query` | n/a | all | `boolean` | Enable cache |
| `kolId` | `query` | all | n/a | `string` | KOL ID |
Request body: none documented; send parameters through path or query arguments.
## Version Choice
Use `getKolRecVideosV1` for the documented `v1` endpoint. There are no alternate versions grouped in this skill.
## Run This Endpoint
Supported operation IDs in this skill: `getKolRecVideosV1`.
```bash
node {baseDir}/bin/run.mjs --operation "getKolRecVideosV1" --token "$JUST_ONE_API_TOKEN" --params-json '{"kolId":"<kolId>"}'
```
Ask for any missing required parameter before calling the helper. Keep user-provided IDs, cursors, keywords, and filters unchanged.
## Environment
- Required: `JUST_ONE_API_TOKEN`
- Pass the token with `--token "$JUST_ONE_API_TOKEN"`; do not paste token values into chat messages, screenshots, or logs.
- Get a token from [Just One API Dashboard](https://dashboard.justoneapi.com/en/login?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_get_kol_rec_videos&utm_content=project_link).
- Authentication details: [Just One API Usage Guide](https://docs.justoneapi.com/en/?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_get_kol_rec_videos&utm_content=project_link).
## Output Focus
- State the operation ID and endpoint path used, for example `getKolRecVideosV1` on `/api/douyin-xingtu/get-kol-rec-videos/v1`.
- Echo the required lookup scope (`kolId`) before summarizing results.
- Prioritize fields that support this endpoint purpose: Get Douyin Creator Marketplace (Xingtu) recommended videos data, including video performance metrics, for creator evaluation, campaign planning, and marketplace research.
- Return raw JSON only after the short, endpoint-specific summary.
- If the backend errors, include the backend payload and the exact operation ID.
FILE:bin/run.mjs
#!/usr/bin/env node
const manifest = {
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/get-kol-rec-videos/v1 for Douyin Creator Marketplace (Xingtu) Recommended Videos through JustOneAPI with kolId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Recommended Videos",
"openapi": "3.1.0",
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_get_kol_rec_videos",
"slug": "justoneapi-douyin-xingtu-get-kol-rec-videos",
"sourceTitle": "OpenAPI definition",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) recommended videos data, including video performance metrics, for creator evaluation, campaign planning, and marketplace research.",
"method": "GET",
"operationId": "getKolRecVideosV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "KOL ID.",
"enumValues": [],
"location": "query",
"name": "kolId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": false,
"description": "Enable cache.",
"enumValues": [],
"location": "query",
"name": "acceptCache",
"required": false,
"schemaType": "boolean"
}
],
"path": "/api/douyin-xingtu/get-kol-rec-videos/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Recommended Videos",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"endpointPath": "get-kol-rec-videos",
"skillType": "interface"
};
const args = parseArgs(process.argv.slice(2));
if (!args.operation) {
fail("Missing required --operation argument.");
}
const operation = manifest.operations.find((item) => item.operationId === args.operation);
if (!operation) {
fail(`Unknown operation "args.operation".`, { availableOperations: manifest.operations.map((item) => item.operationId) });
}
const params = parseParams(args.paramsJson);
applyDefaults(operation, params);
injectToken(operation, params, args.token);
validateRequired(operation, params);
const baseUrl = manifest.baseUrl;
const url = new URL(operation.path, ensureBaseUrl(baseUrl));
applyPathParams(operation, params, url);
applyQueryParams(operation, params, url);
const requestInit = {
headers: {
"accept": "application/json",
},
method: operation.method,
};
if (operation.requestBody && params.body !== undefined) {
requestInit.body = JSON.stringify(params.body);
requestInit.headers["content-type"] = operation.requestBody.contentType || "application/json";
}
let response;
try {
response = await fetch(url, requestInit);
} catch (error) {
fail("Network request failed.", {
cause: error instanceof Error ? error.message : String(error),
operationId: operation.operationId,
});
}
const rawBody = await response.text();
let parsedBody;
try {
parsedBody = rawBody ? JSON.parse(rawBody) : null;
} catch (error) {
if (!response.ok) {
fail("Backend returned a non-JSON error response.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
fail("Backend returned invalid JSON.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
if (!response.ok) {
fail("Backend request failed.", {
body: parsedBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
process.stdout.write(`JSON.stringify(parsedBody, null, 2)\n`);
function parseArgs(argv) {
const parsed = { operation: null, paramsJson: "{}", token: null };
for (let index = 0; index < argv.length; index += 1) {
const flag = argv[index];
const value = argv[index + 1];
if (flag === "--operation") {
parsed.operation = value;
index += 1;
continue;
}
if (flag === "--params-json") {
parsed.paramsJson = value;
index += 1;
continue;
}
if (flag === "--token") {
parsed.token = value;
index += 1;
continue;
}
fail(`Unknown argument "flag".`);
}
return parsed;
}
function parseParams(input) {
try {
const parsed = JSON.parse(input || "{}");
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
fail("--params-json must decode to a JSON object.");
}
return parsed;
} catch (error) {
fail("Failed to parse --params-json.", {
cause: error instanceof Error ? error.message : String(error),
});
}
}
function applyDefaults(operation, params) {
for (const parameter of operation.parameters) {
if (params[parameter.name] === undefined && parameter.defaultValue !== null) {
params[parameter.name] = parameter.defaultValue;
}
}
}
function injectToken(operation, params, cliToken) {
const tokenParam = operation.parameters.find((parameter) => parameter.name === "token");
if (!tokenParam || params.token !== undefined) {
return;
}
if (!cliToken) {
fail("--token is required for this operation.", {
operationId: operation.operationId,
});
}
params.token = cliToken;
}
function validateRequired(operation, params) {
const missing = [];
for (const parameter of operation.parameters) {
if (parameter.required && params[parameter.name] === undefined) {
missing.push(parameter.name);
}
}
if (operation.requestBody?.required && params.body === undefined) {
missing.push("body");
}
if (missing.length) {
fail("Missing required parameters.", {
missing,
operationId: operation.operationId,
});
}
}
function applyPathParams(operation, params, url) {
let pathname = url.pathname;
for (const parameter of operation.parameters.filter((item) => item.location === "path")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
pathname = pathname.replace(`{parameter.name}`, encodeURIComponent(String(value)));
}
url.pathname = pathname;
}
function applyQueryParams(operation, params, url) {
for (const parameter of operation.parameters.filter((item) => item.location === "query")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
appendValue(url.searchParams, parameter.name, value);
}
}
function appendValue(searchParams, name, value) {
if (Array.isArray(value)) {
for (const item of value) {
appendValue(searchParams, name, item);
}
return;
}
if (value && typeof value === "object") {
searchParams.append(name, JSON.stringify(value));
return;
}
searchParams.append(name, String(value));
}
function ensureBaseUrl(value) {
return value.endsWith("/") ? value : `value/`;
}
function fail(message, details = null) {
const payload = { message };
if (details) {
payload.details = details;
}
process.stderr.write(`JSON.stringify(payload, null, 2)\n`);
process.exit(1);
}
FILE:generated/operations.json
{
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/get-kol-rec-videos/v1 for Douyin Creator Marketplace (Xingtu) Recommended Videos through JustOneAPI with kolId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Recommended Videos",
"endpointPath": "get-kol-rec-videos",
"openapi": "3.1.0",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) recommended videos data, including video performance metrics, for creator evaluation, campaign planning, and marketplace research.",
"method": "GET",
"operationId": "getKolRecVideosV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "KOL ID.",
"enumValues": [],
"location": "query",
"name": "kolId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": false,
"description": "Enable cache.",
"enumValues": [],
"location": "query",
"name": "acceptCache",
"required": false,
"schemaType": "boolean"
}
],
"path": "/api/douyin-xingtu/get-kol-rec-videos/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Recommended Videos",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_get_kol_rec_videos",
"skillType": "interface",
"slug": "justoneapi-douyin-xingtu-get-kol-rec-videos",
"sourceTitle": "OpenAPI definition"
}
FILE:generated/operations.md
# Douyin Creator Marketplace (Xingtu) Recommended Videos operations
Generated from JustOneAPI OpenAPI for platform key `douyin-xingtu`.
Endpoint group: `get-kol-rec-videos`.
## `getKolRecVideosV1`
- Method: `GET`
- Path: `/api/douyin-xingtu/get-kol-rec-videos/v1`
- Summary: Recommended Videos
- Description: Get Douyin Creator Marketplace (Xingtu) recommended videos data, including video performance metrics, for creator evaluation, campaign planning, and marketplace research.
- Tags: `Douyin Creator Marketplace (Xingtu)`
### Parameters
| Name | In | Required | Type | Default | Description |
| --- | --- | --- | --- | --- | --- |
| `token` | `query` | yes | `string` | n/a | User authentication token. |
| `kolId` | `query` | yes | `string` | n/a | KOL ID. |
| `acceptCache` | `query` | no | `boolean` | `false` | Enable cache. |
### Request body
No request body.
### Responses
- `200`: OK
Call GET /api/douyin-xingtu/get-kol-marketing-info/v1 for Douyin Creator Marketplace (Xingtu) Marketing Metrics through JustOneAPI with kolId.
---
name: Douyin Creator Marketplace (Xingtu) Marketing Metrics API
description: Call GET /api/douyin-xingtu/get-kol-marketing-info/v1 for Douyin Creator Marketplace (Xingtu) Marketing Metrics through JustOneAPI with kolId.
author: JustOneAPI
homepage: https://api.justoneapi.com
metadata: {"openclaw":{"homepage":"https://api.justoneapi.com","primaryEnv":"JUST_ONE_API_TOKEN","requires":{"bins":["node"],"env":["JUST_ONE_API_TOKEN"]},"skillKey":"justoneapi_douyin_xingtu_get_kol_marketing_info"}}
---
# Douyin Creator Marketplace (Xingtu) Marketing Metrics
Use this focused JustOneAPI skill for marketing Metrics in Douyin Creator Marketplace (Xingtu). It targets `GET /api/douyin-xingtu/get-kol-marketing-info/v1`. Required non-token inputs are `kolId`. OpenAPI describes it as: Get Douyin Creator Marketplace (Xingtu) marketing metrics data, including rate card details and commercial service metrics, for creator evaluation, campaign planning, and marketplace research.
## Endpoint Scope
- Platform key: `douyin-xingtu`
- Endpoint key: `get-kol-marketing-info`
- Platform family: Douyin Creator Marketplace (Xingtu)
- Skill slug: `justoneapi-douyin-xingtu-get-kol-marketing-info`
| Operation | Version | Method | Path | OpenAPI summary |
| --- | --- | --- | --- | --- |
| `getKolMarketingInfoV1` | `v1` | `GET` | `/api/douyin-xingtu/get-kol-marketing-info/v1` | Marketing Metrics |
## Inputs
| Parameter | In | Required by | Optional by | Type | Notes |
| --- | --- | --- | --- | --- | --- |
| `acceptCache` | `query` | n/a | all | `boolean` | Enable cache |
| `kolId` | `query` | all | n/a | `string` | KOL ID |
| `platformChannel` | `query` | n/a | all | `string` | Platform channel. Available Values: - `_1`: Short Video - `_10`: Live Streaming |
| `platformChannel` enum | values | n/a | n/a | n/a | `_1`, `_10` |
Request body: none documented; send parameters through path or query arguments.
## Version Choice
Use `getKolMarketingInfoV1` for the documented `v1` endpoint. There are no alternate versions grouped in this skill.
## Run This Endpoint
Supported operation IDs in this skill: `getKolMarketingInfoV1`.
```bash
node {baseDir}/bin/run.mjs --operation "getKolMarketingInfoV1" --token "$JUST_ONE_API_TOKEN" --params-json '{"kolId":"<kolId>"}'
```
Ask for any missing required parameter before calling the helper. Keep user-provided IDs, cursors, keywords, and filters unchanged.
## Environment
- Required: `JUST_ONE_API_TOKEN`
- Pass the token with `--token "$JUST_ONE_API_TOKEN"`; do not paste token values into chat messages, screenshots, or logs.
- Get a token from [Just One API Dashboard](https://dashboard.justoneapi.com/en/login?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_get_kol_marketing_info&utm_content=project_link).
- Authentication details: [Just One API Usage Guide](https://docs.justoneapi.com/en/?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_get_kol_marketing_info&utm_content=project_link).
## Output Focus
- State the operation ID and endpoint path used, for example `getKolMarketingInfoV1` on `/api/douyin-xingtu/get-kol-marketing-info/v1`.
- Echo the required lookup scope (`kolId`) before summarizing results.
- Prioritize fields that support this endpoint purpose: Get Douyin Creator Marketplace (Xingtu) marketing metrics data, including rate card details and commercial service metrics, for creator evaluation, campaign planning, and marketplace research.
- Return raw JSON only after the short, endpoint-specific summary.
- If the backend errors, include the backend payload and the exact operation ID.
FILE:bin/run.mjs
#!/usr/bin/env node
const manifest = {
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/get-kol-marketing-info/v1 for Douyin Creator Marketplace (Xingtu) Marketing Metrics through JustOneAPI with kolId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Marketing Metrics",
"openapi": "3.1.0",
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_get_kol_marketing_info",
"slug": "justoneapi-douyin-xingtu-get-kol-marketing-info",
"sourceTitle": "OpenAPI definition",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) marketing metrics data, including rate card details and commercial service metrics, for creator evaluation, campaign planning, and marketplace research.",
"method": "GET",
"operationId": "getKolMarketingInfoV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "KOL ID.",
"enumValues": [],
"location": "query",
"name": "kolId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": "_1",
"description": "Platform channel.\n\nAvailable Values:\n- `_1`: Short Video\n- `_10`: Live Streaming",
"enumValues": [
"_1",
"_10"
],
"location": "query",
"name": "platformChannel",
"required": false,
"schemaType": "string"
},
{
"defaultValue": false,
"description": "Enable cache.",
"enumValues": [],
"location": "query",
"name": "acceptCache",
"required": false,
"schemaType": "boolean"
}
],
"path": "/api/douyin-xingtu/get-kol-marketing-info/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Marketing Metrics",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"endpointPath": "get-kol-marketing-info",
"skillType": "interface"
};
const args = parseArgs(process.argv.slice(2));
if (!args.operation) {
fail("Missing required --operation argument.");
}
const operation = manifest.operations.find((item) => item.operationId === args.operation);
if (!operation) {
fail(`Unknown operation "args.operation".`, { availableOperations: manifest.operations.map((item) => item.operationId) });
}
const params = parseParams(args.paramsJson);
applyDefaults(operation, params);
injectToken(operation, params, args.token);
validateRequired(operation, params);
const baseUrl = manifest.baseUrl;
const url = new URL(operation.path, ensureBaseUrl(baseUrl));
applyPathParams(operation, params, url);
applyQueryParams(operation, params, url);
const requestInit = {
headers: {
"accept": "application/json",
},
method: operation.method,
};
if (operation.requestBody && params.body !== undefined) {
requestInit.body = JSON.stringify(params.body);
requestInit.headers["content-type"] = operation.requestBody.contentType || "application/json";
}
let response;
try {
response = await fetch(url, requestInit);
} catch (error) {
fail("Network request failed.", {
cause: error instanceof Error ? error.message : String(error),
operationId: operation.operationId,
});
}
const rawBody = await response.text();
let parsedBody;
try {
parsedBody = rawBody ? JSON.parse(rawBody) : null;
} catch (error) {
if (!response.ok) {
fail("Backend returned a non-JSON error response.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
fail("Backend returned invalid JSON.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
if (!response.ok) {
fail("Backend request failed.", {
body: parsedBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
process.stdout.write(`JSON.stringify(parsedBody, null, 2)\n`);
function parseArgs(argv) {
const parsed = { operation: null, paramsJson: "{}", token: null };
for (let index = 0; index < argv.length; index += 1) {
const flag = argv[index];
const value = argv[index + 1];
if (flag === "--operation") {
parsed.operation = value;
index += 1;
continue;
}
if (flag === "--params-json") {
parsed.paramsJson = value;
index += 1;
continue;
}
if (flag === "--token") {
parsed.token = value;
index += 1;
continue;
}
fail(`Unknown argument "flag".`);
}
return parsed;
}
function parseParams(input) {
try {
const parsed = JSON.parse(input || "{}");
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
fail("--params-json must decode to a JSON object.");
}
return parsed;
} catch (error) {
fail("Failed to parse --params-json.", {
cause: error instanceof Error ? error.message : String(error),
});
}
}
function applyDefaults(operation, params) {
for (const parameter of operation.parameters) {
if (params[parameter.name] === undefined && parameter.defaultValue !== null) {
params[parameter.name] = parameter.defaultValue;
}
}
}
function injectToken(operation, params, cliToken) {
const tokenParam = operation.parameters.find((parameter) => parameter.name === "token");
if (!tokenParam || params.token !== undefined) {
return;
}
if (!cliToken) {
fail("--token is required for this operation.", {
operationId: operation.operationId,
});
}
params.token = cliToken;
}
function validateRequired(operation, params) {
const missing = [];
for (const parameter of operation.parameters) {
if (parameter.required && params[parameter.name] === undefined) {
missing.push(parameter.name);
}
}
if (operation.requestBody?.required && params.body === undefined) {
missing.push("body");
}
if (missing.length) {
fail("Missing required parameters.", {
missing,
operationId: operation.operationId,
});
}
}
function applyPathParams(operation, params, url) {
let pathname = url.pathname;
for (const parameter of operation.parameters.filter((item) => item.location === "path")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
pathname = pathname.replace(`{parameter.name}`, encodeURIComponent(String(value)));
}
url.pathname = pathname;
}
function applyQueryParams(operation, params, url) {
for (const parameter of operation.parameters.filter((item) => item.location === "query")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
appendValue(url.searchParams, parameter.name, value);
}
}
function appendValue(searchParams, name, value) {
if (Array.isArray(value)) {
for (const item of value) {
appendValue(searchParams, name, item);
}
return;
}
if (value && typeof value === "object") {
searchParams.append(name, JSON.stringify(value));
return;
}
searchParams.append(name, String(value));
}
function ensureBaseUrl(value) {
return value.endsWith("/") ? value : `value/`;
}
function fail(message, details = null) {
const payload = { message };
if (details) {
payload.details = details;
}
process.stderr.write(`JSON.stringify(payload, null, 2)\n`);
process.exit(1);
}
FILE:generated/operations.json
{
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/get-kol-marketing-info/v1 for Douyin Creator Marketplace (Xingtu) Marketing Metrics through JustOneAPI with kolId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Marketing Metrics",
"endpointPath": "get-kol-marketing-info",
"openapi": "3.1.0",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) marketing metrics data, including rate card details and commercial service metrics, for creator evaluation, campaign planning, and marketplace research.",
"method": "GET",
"operationId": "getKolMarketingInfoV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "KOL ID.",
"enumValues": [],
"location": "query",
"name": "kolId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": "_1",
"description": "Platform channel.\n\nAvailable Values:\n- `_1`: Short Video\n- `_10`: Live Streaming",
"enumValues": [
"_1",
"_10"
],
"location": "query",
"name": "platformChannel",
"required": false,
"schemaType": "string"
},
{
"defaultValue": false,
"description": "Enable cache.",
"enumValues": [],
"location": "query",
"name": "acceptCache",
"required": false,
"schemaType": "boolean"
}
],
"path": "/api/douyin-xingtu/get-kol-marketing-info/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Marketing Metrics",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_get_kol_marketing_info",
"skillType": "interface",
"slug": "justoneapi-douyin-xingtu-get-kol-marketing-info",
"sourceTitle": "OpenAPI definition"
}
FILE:generated/operations.md
# Douyin Creator Marketplace (Xingtu) Marketing Metrics operations
Generated from JustOneAPI OpenAPI for platform key `douyin-xingtu`.
Endpoint group: `get-kol-marketing-info`.
## `getKolMarketingInfoV1`
- Method: `GET`
- Path: `/api/douyin-xingtu/get-kol-marketing-info/v1`
- Summary: Marketing Metrics
- Description: Get Douyin Creator Marketplace (Xingtu) marketing metrics data, including rate card details and commercial service metrics, for creator evaluation, campaign planning, and marketplace research.
- Tags: `Douyin Creator Marketplace (Xingtu)`
### Parameters
| Name | In | Required | Type | Default | Description |
| --- | --- | --- | --- | --- | --- |
| `token` | `query` | yes | `string` | n/a | User authentication token. |
| `kolId` | `query` | yes | `string` | n/a | KOL ID. |
| `platformChannel` | `query` | no | `string` | `_1` | Platform channel.
Available Values:
- `_1`: Short Video
- `_10`: Live Streaming |
| enum | values | no | n/a | n/a | `_1`, `_10` |
| `acceptCache` | `query` | no | `boolean` | `false` | Enable cache. |
### Request body
No request body.
### Responses
- `200`: OK
Call GET /api/douyin-xingtu/get-kol-link-struct/v1 for Douyin Creator Marketplace (Xingtu) Creator Link Structure through JustOneAPI with kolId.
---
name: Douyin Creator Marketplace (Xingtu) Creator Link Structure API
description: Call GET /api/douyin-xingtu/get-kol-link-struct/v1 for Douyin Creator Marketplace (Xingtu) Creator Link Structure through JustOneAPI with kolId.
author: JustOneAPI
homepage: https://api.justoneapi.com
metadata: {"openclaw":{"homepage":"https://api.justoneapi.com","primaryEnv":"JUST_ONE_API_TOKEN","requires":{"bins":["node"],"env":["JUST_ONE_API_TOKEN"]},"skillKey":"justoneapi_douyin_xingtu_get_kol_link_struct"}}
---
# Douyin Creator Marketplace (Xingtu) Creator Link Structure
Use this focused JustOneAPI skill for creator Link Structure in Douyin Creator Marketplace (Xingtu). It targets `GET /api/douyin-xingtu/get-kol-link-struct/v1`. Required non-token inputs are `kolId`. OpenAPI describes it as: Get Douyin Creator Marketplace (Xingtu) creator Link Structure data, including engagement and conversion metrics, for creator performance analysis.
## Endpoint Scope
- Platform key: `douyin-xingtu`
- Endpoint key: `get-kol-link-struct`
- Platform family: Douyin Creator Marketplace (Xingtu)
- Skill slug: `justoneapi-douyin-xingtu-get-kol-link-struct`
| Operation | Version | Method | Path | OpenAPI summary |
| --- | --- | --- | --- | --- |
| `getKolLinkStructV1` | `v1` | `GET` | `/api/douyin-xingtu/get-kol-link-struct/v1` | Creator Link Structure |
## Inputs
| Parameter | In | Required by | Optional by | Type | Notes |
| --- | --- | --- | --- | --- | --- |
| `acceptCache` | `query` | n/a | all | `boolean` | Enable cache |
| `kolId` | `query` | all | n/a | `string` | KOL ID |
Request body: none documented; send parameters through path or query arguments.
## Version Choice
Use `getKolLinkStructV1` for the documented `v1` endpoint. There are no alternate versions grouped in this skill.
## Run This Endpoint
Supported operation IDs in this skill: `getKolLinkStructV1`.
```bash
node {baseDir}/bin/run.mjs --operation "getKolLinkStructV1" --token "$JUST_ONE_API_TOKEN" --params-json '{"kolId":"<kolId>"}'
```
Ask for any missing required parameter before calling the helper. Keep user-provided IDs, cursors, keywords, and filters unchanged.
## Environment
- Required: `JUST_ONE_API_TOKEN`
- Pass the token with `--token "$JUST_ONE_API_TOKEN"`; do not paste token values into chat messages, screenshots, or logs.
- Get a token from [Just One API Dashboard](https://dashboard.justoneapi.com/en/login?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_get_kol_link_struct&utm_content=project_link).
- Authentication details: [Just One API Usage Guide](https://docs.justoneapi.com/en/?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_get_kol_link_struct&utm_content=project_link).
## Output Focus
- State the operation ID and endpoint path used, for example `getKolLinkStructV1` on `/api/douyin-xingtu/get-kol-link-struct/v1`.
- Echo the required lookup scope (`kolId`) before summarizing results.
- Prioritize fields that support this endpoint purpose: Get Douyin Creator Marketplace (Xingtu) creator Link Structure data, including engagement and conversion metrics, for creator performance analysis.
- Return raw JSON only after the short, endpoint-specific summary.
- If the backend errors, include the backend payload and the exact operation ID.
FILE:bin/run.mjs
#!/usr/bin/env node
const manifest = {
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/get-kol-link-struct/v1 for Douyin Creator Marketplace (Xingtu) Creator Link Structure through JustOneAPI with kolId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Creator Link Structure",
"openapi": "3.1.0",
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_get_kol_link_struct",
"slug": "justoneapi-douyin-xingtu-get-kol-link-struct",
"sourceTitle": "OpenAPI definition",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) creator Link Structure data, including engagement and conversion metrics, for creator performance analysis.",
"method": "GET",
"operationId": "getKolLinkStructV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "KOL ID.",
"enumValues": [],
"location": "query",
"name": "kolId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": false,
"description": "Enable cache.",
"enumValues": [],
"location": "query",
"name": "acceptCache",
"required": false,
"schemaType": "boolean"
}
],
"path": "/api/douyin-xingtu/get-kol-link-struct/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Creator Link Structure",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"endpointPath": "get-kol-link-struct",
"skillType": "interface"
};
const args = parseArgs(process.argv.slice(2));
if (!args.operation) {
fail("Missing required --operation argument.");
}
const operation = manifest.operations.find((item) => item.operationId === args.operation);
if (!operation) {
fail(`Unknown operation "args.operation".`, { availableOperations: manifest.operations.map((item) => item.operationId) });
}
const params = parseParams(args.paramsJson);
applyDefaults(operation, params);
injectToken(operation, params, args.token);
validateRequired(operation, params);
const baseUrl = manifest.baseUrl;
const url = new URL(operation.path, ensureBaseUrl(baseUrl));
applyPathParams(operation, params, url);
applyQueryParams(operation, params, url);
const requestInit = {
headers: {
"accept": "application/json",
},
method: operation.method,
};
if (operation.requestBody && params.body !== undefined) {
requestInit.body = JSON.stringify(params.body);
requestInit.headers["content-type"] = operation.requestBody.contentType || "application/json";
}
let response;
try {
response = await fetch(url, requestInit);
} catch (error) {
fail("Network request failed.", {
cause: error instanceof Error ? error.message : String(error),
operationId: operation.operationId,
});
}
const rawBody = await response.text();
let parsedBody;
try {
parsedBody = rawBody ? JSON.parse(rawBody) : null;
} catch (error) {
if (!response.ok) {
fail("Backend returned a non-JSON error response.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
fail("Backend returned invalid JSON.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
if (!response.ok) {
fail("Backend request failed.", {
body: parsedBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
process.stdout.write(`JSON.stringify(parsedBody, null, 2)\n`);
function parseArgs(argv) {
const parsed = { operation: null, paramsJson: "{}", token: null };
for (let index = 0; index < argv.length; index += 1) {
const flag = argv[index];
const value = argv[index + 1];
if (flag === "--operation") {
parsed.operation = value;
index += 1;
continue;
}
if (flag === "--params-json") {
parsed.paramsJson = value;
index += 1;
continue;
}
if (flag === "--token") {
parsed.token = value;
index += 1;
continue;
}
fail(`Unknown argument "flag".`);
}
return parsed;
}
function parseParams(input) {
try {
const parsed = JSON.parse(input || "{}");
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
fail("--params-json must decode to a JSON object.");
}
return parsed;
} catch (error) {
fail("Failed to parse --params-json.", {
cause: error instanceof Error ? error.message : String(error),
});
}
}
function applyDefaults(operation, params) {
for (const parameter of operation.parameters) {
if (params[parameter.name] === undefined && parameter.defaultValue !== null) {
params[parameter.name] = parameter.defaultValue;
}
}
}
function injectToken(operation, params, cliToken) {
const tokenParam = operation.parameters.find((parameter) => parameter.name === "token");
if (!tokenParam || params.token !== undefined) {
return;
}
if (!cliToken) {
fail("--token is required for this operation.", {
operationId: operation.operationId,
});
}
params.token = cliToken;
}
function validateRequired(operation, params) {
const missing = [];
for (const parameter of operation.parameters) {
if (parameter.required && params[parameter.name] === undefined) {
missing.push(parameter.name);
}
}
if (operation.requestBody?.required && params.body === undefined) {
missing.push("body");
}
if (missing.length) {
fail("Missing required parameters.", {
missing,
operationId: operation.operationId,
});
}
}
function applyPathParams(operation, params, url) {
let pathname = url.pathname;
for (const parameter of operation.parameters.filter((item) => item.location === "path")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
pathname = pathname.replace(`{parameter.name}`, encodeURIComponent(String(value)));
}
url.pathname = pathname;
}
function applyQueryParams(operation, params, url) {
for (const parameter of operation.parameters.filter((item) => item.location === "query")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
appendValue(url.searchParams, parameter.name, value);
}
}
function appendValue(searchParams, name, value) {
if (Array.isArray(value)) {
for (const item of value) {
appendValue(searchParams, name, item);
}
return;
}
if (value && typeof value === "object") {
searchParams.append(name, JSON.stringify(value));
return;
}
searchParams.append(name, String(value));
}
function ensureBaseUrl(value) {
return value.endsWith("/") ? value : `value/`;
}
function fail(message, details = null) {
const payload = { message };
if (details) {
payload.details = details;
}
process.stderr.write(`JSON.stringify(payload, null, 2)\n`);
process.exit(1);
}
FILE:generated/operations.json
{
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/get-kol-link-struct/v1 for Douyin Creator Marketplace (Xingtu) Creator Link Structure through JustOneAPI with kolId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Creator Link Structure",
"endpointPath": "get-kol-link-struct",
"openapi": "3.1.0",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) creator Link Structure data, including engagement and conversion metrics, for creator performance analysis.",
"method": "GET",
"operationId": "getKolLinkStructV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "KOL ID.",
"enumValues": [],
"location": "query",
"name": "kolId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": false,
"description": "Enable cache.",
"enumValues": [],
"location": "query",
"name": "acceptCache",
"required": false,
"schemaType": "boolean"
}
],
"path": "/api/douyin-xingtu/get-kol-link-struct/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Creator Link Structure",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_get_kol_link_struct",
"skillType": "interface",
"slug": "justoneapi-douyin-xingtu-get-kol-link-struct",
"sourceTitle": "OpenAPI definition"
}
FILE:generated/operations.md
# Douyin Creator Marketplace (Xingtu) Creator Link Structure operations
Generated from JustOneAPI OpenAPI for platform key `douyin-xingtu`.
Endpoint group: `get-kol-link-struct`.
## `getKolLinkStructV1`
- Method: `GET`
- Path: `/api/douyin-xingtu/get-kol-link-struct/v1`
- Summary: Creator Link Structure
- Description: Get Douyin Creator Marketplace (Xingtu) creator Link Structure data, including engagement and conversion metrics, for creator performance analysis.
- Tags: `Douyin Creator Marketplace (Xingtu)`
### Parameters
| Name | In | Required | Type | Default | Description |
| --- | --- | --- | --- | --- | --- |
| `token` | `query` | yes | `string` | n/a | User authentication token. |
| `kolId` | `query` | yes | `string` | n/a | KOL ID. |
| `acceptCache` | `query` | no | `boolean` | `false` | Enable cache. |
### Request body
No request body.
### Responses
- `200`: OK
Call GET /api/douyin-xingtu/get-kol-link-info/v1 for Douyin Creator Marketplace (Xingtu) Creator Link Metrics through JustOneAPI with kolId.
---
name: Douyin Creator Marketplace (Xingtu) Creator Link Metrics API
description: Call GET /api/douyin-xingtu/get-kol-link-info/v1 for Douyin Creator Marketplace (Xingtu) Creator Link Metrics through JustOneAPI with kolId.
author: JustOneAPI
homepage: https://api.justoneapi.com
metadata: {"openclaw":{"homepage":"https://api.justoneapi.com","primaryEnv":"JUST_ONE_API_TOKEN","requires":{"bins":["node"],"env":["JUST_ONE_API_TOKEN"]},"skillKey":"justoneapi_douyin_xingtu_get_kol_link_info"}}
---
# Douyin Creator Marketplace (Xingtu) Creator Link Metrics
Use this focused JustOneAPI skill for creator Link Metrics in Douyin Creator Marketplace (Xingtu). It targets `GET /api/douyin-xingtu/get-kol-link-info/v1`. Required non-token inputs are `kolId`. OpenAPI describes it as: Get Douyin Creator Marketplace (Xingtu) creator Link Metrics data, including creator ranking, traffic structure, and related performance indicators, for creator evaluation, campaign planning, and marketplace research.
## Endpoint Scope
- Platform key: `douyin-xingtu`
- Endpoint key: `get-kol-link-info`
- Platform family: Douyin Creator Marketplace (Xingtu)
- Skill slug: `justoneapi-douyin-xingtu-get-kol-link-info`
| Operation | Version | Method | Path | OpenAPI summary |
| --- | --- | --- | --- | --- |
| `getKolLinkInfoV1` | `v1` | `GET` | `/api/douyin-xingtu/get-kol-link-info/v1` | Creator Link Metrics |
## Inputs
| Parameter | In | Required by | Optional by | Type | Notes |
| --- | --- | --- | --- | --- | --- |
| `acceptCache` | `query` | n/a | all | `boolean` | Enable cache |
| `industryTag` | `query` | n/a | all | `string` | Industry Tag |
| `kolId` | `query` | all | n/a | `string` | KOL ID |
Request body: none documented; send parameters through path or query arguments.
## Version Choice
Use `getKolLinkInfoV1` for the documented `v1` endpoint. There are no alternate versions grouped in this skill.
## Run This Endpoint
Supported operation IDs in this skill: `getKolLinkInfoV1`.
```bash
node {baseDir}/bin/run.mjs --operation "getKolLinkInfoV1" --token "$JUST_ONE_API_TOKEN" --params-json '{"kolId":"<kolId>"}'
```
Ask for any missing required parameter before calling the helper. Keep user-provided IDs, cursors, keywords, and filters unchanged.
## Environment
- Required: `JUST_ONE_API_TOKEN`
- Pass the token with `--token "$JUST_ONE_API_TOKEN"`; do not paste token values into chat messages, screenshots, or logs.
- Get a token from [Just One API Dashboard](https://dashboard.justoneapi.com/en/login?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_get_kol_link_info&utm_content=project_link).
- Authentication details: [Just One API Usage Guide](https://docs.justoneapi.com/en/?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_get_kol_link_info&utm_content=project_link).
## Output Focus
- State the operation ID and endpoint path used, for example `getKolLinkInfoV1` on `/api/douyin-xingtu/get-kol-link-info/v1`.
- Echo the required lookup scope (`kolId`) before summarizing results.
- Prioritize fields that support this endpoint purpose: Get Douyin Creator Marketplace (Xingtu) creator Link Metrics data, including creator ranking, traffic structure, and related performance indicators, for creator evaluation, campaign planning, and marketplace research.
- Return raw JSON only after the short, endpoint-specific summary.
- If the backend errors, include the backend payload and the exact operation ID.
FILE:bin/run.mjs
#!/usr/bin/env node
const manifest = {
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/get-kol-link-info/v1 for Douyin Creator Marketplace (Xingtu) Creator Link Metrics through JustOneAPI with kolId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Creator Link Metrics",
"openapi": "3.1.0",
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_get_kol_link_info",
"slug": "justoneapi-douyin-xingtu-get-kol-link-info",
"sourceTitle": "OpenAPI definition",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) creator Link Metrics data, including creator ranking, traffic structure, and related performance indicators, for creator evaluation, campaign planning, and marketplace research.",
"method": "GET",
"operationId": "getKolLinkInfoV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "KOL ID.",
"enumValues": [],
"location": "query",
"name": "kolId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": "",
"description": "Industry Tag.",
"enumValues": [],
"location": "query",
"name": "industryTag",
"required": false,
"schemaType": "string"
},
{
"defaultValue": false,
"description": "Enable cache.",
"enumValues": [],
"location": "query",
"name": "acceptCache",
"required": false,
"schemaType": "boolean"
}
],
"path": "/api/douyin-xingtu/get-kol-link-info/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Creator Link Metrics",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"endpointPath": "get-kol-link-info",
"skillType": "interface"
};
const args = parseArgs(process.argv.slice(2));
if (!args.operation) {
fail("Missing required --operation argument.");
}
const operation = manifest.operations.find((item) => item.operationId === args.operation);
if (!operation) {
fail(`Unknown operation "args.operation".`, { availableOperations: manifest.operations.map((item) => item.operationId) });
}
const params = parseParams(args.paramsJson);
applyDefaults(operation, params);
injectToken(operation, params, args.token);
validateRequired(operation, params);
const baseUrl = manifest.baseUrl;
const url = new URL(operation.path, ensureBaseUrl(baseUrl));
applyPathParams(operation, params, url);
applyQueryParams(operation, params, url);
const requestInit = {
headers: {
"accept": "application/json",
},
method: operation.method,
};
if (operation.requestBody && params.body !== undefined) {
requestInit.body = JSON.stringify(params.body);
requestInit.headers["content-type"] = operation.requestBody.contentType || "application/json";
}
let response;
try {
response = await fetch(url, requestInit);
} catch (error) {
fail("Network request failed.", {
cause: error instanceof Error ? error.message : String(error),
operationId: operation.operationId,
});
}
const rawBody = await response.text();
let parsedBody;
try {
parsedBody = rawBody ? JSON.parse(rawBody) : null;
} catch (error) {
if (!response.ok) {
fail("Backend returned a non-JSON error response.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
fail("Backend returned invalid JSON.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
if (!response.ok) {
fail("Backend request failed.", {
body: parsedBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
process.stdout.write(`JSON.stringify(parsedBody, null, 2)\n`);
function parseArgs(argv) {
const parsed = { operation: null, paramsJson: "{}", token: null };
for (let index = 0; index < argv.length; index += 1) {
const flag = argv[index];
const value = argv[index + 1];
if (flag === "--operation") {
parsed.operation = value;
index += 1;
continue;
}
if (flag === "--params-json") {
parsed.paramsJson = value;
index += 1;
continue;
}
if (flag === "--token") {
parsed.token = value;
index += 1;
continue;
}
fail(`Unknown argument "flag".`);
}
return parsed;
}
function parseParams(input) {
try {
const parsed = JSON.parse(input || "{}");
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
fail("--params-json must decode to a JSON object.");
}
return parsed;
} catch (error) {
fail("Failed to parse --params-json.", {
cause: error instanceof Error ? error.message : String(error),
});
}
}
function applyDefaults(operation, params) {
for (const parameter of operation.parameters) {
if (params[parameter.name] === undefined && parameter.defaultValue !== null) {
params[parameter.name] = parameter.defaultValue;
}
}
}
function injectToken(operation, params, cliToken) {
const tokenParam = operation.parameters.find((parameter) => parameter.name === "token");
if (!tokenParam || params.token !== undefined) {
return;
}
if (!cliToken) {
fail("--token is required for this operation.", {
operationId: operation.operationId,
});
}
params.token = cliToken;
}
function validateRequired(operation, params) {
const missing = [];
for (const parameter of operation.parameters) {
if (parameter.required && params[parameter.name] === undefined) {
missing.push(parameter.name);
}
}
if (operation.requestBody?.required && params.body === undefined) {
missing.push("body");
}
if (missing.length) {
fail("Missing required parameters.", {
missing,
operationId: operation.operationId,
});
}
}
function applyPathParams(operation, params, url) {
let pathname = url.pathname;
for (const parameter of operation.parameters.filter((item) => item.location === "path")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
pathname = pathname.replace(`{parameter.name}`, encodeURIComponent(String(value)));
}
url.pathname = pathname;
}
function applyQueryParams(operation, params, url) {
for (const parameter of operation.parameters.filter((item) => item.location === "query")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
appendValue(url.searchParams, parameter.name, value);
}
}
function appendValue(searchParams, name, value) {
if (Array.isArray(value)) {
for (const item of value) {
appendValue(searchParams, name, item);
}
return;
}
if (value && typeof value === "object") {
searchParams.append(name, JSON.stringify(value));
return;
}
searchParams.append(name, String(value));
}
function ensureBaseUrl(value) {
return value.endsWith("/") ? value : `value/`;
}
function fail(message, details = null) {
const payload = { message };
if (details) {
payload.details = details;
}
process.stderr.write(`JSON.stringify(payload, null, 2)\n`);
process.exit(1);
}
FILE:generated/operations.json
{
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/get-kol-link-info/v1 for Douyin Creator Marketplace (Xingtu) Creator Link Metrics through JustOneAPI with kolId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Creator Link Metrics",
"endpointPath": "get-kol-link-info",
"openapi": "3.1.0",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) creator Link Metrics data, including creator ranking, traffic structure, and related performance indicators, for creator evaluation, campaign planning, and marketplace research.",
"method": "GET",
"operationId": "getKolLinkInfoV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "KOL ID.",
"enumValues": [],
"location": "query",
"name": "kolId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": "",
"description": "Industry Tag.",
"enumValues": [],
"location": "query",
"name": "industryTag",
"required": false,
"schemaType": "string"
},
{
"defaultValue": false,
"description": "Enable cache.",
"enumValues": [],
"location": "query",
"name": "acceptCache",
"required": false,
"schemaType": "boolean"
}
],
"path": "/api/douyin-xingtu/get-kol-link-info/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Creator Link Metrics",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_get_kol_link_info",
"skillType": "interface",
"slug": "justoneapi-douyin-xingtu-get-kol-link-info",
"sourceTitle": "OpenAPI definition"
}
FILE:generated/operations.md
# Douyin Creator Marketplace (Xingtu) Creator Link Metrics operations
Generated from JustOneAPI OpenAPI for platform key `douyin-xingtu`.
Endpoint group: `get-kol-link-info`.
## `getKolLinkInfoV1`
- Method: `GET`
- Path: `/api/douyin-xingtu/get-kol-link-info/v1`
- Summary: Creator Link Metrics
- Description: Get Douyin Creator Marketplace (Xingtu) creator Link Metrics data, including creator ranking, traffic structure, and related performance indicators, for creator evaluation, campaign planning, and marketplace research.
- Tags: `Douyin Creator Marketplace (Xingtu)`
### Parameters
| Name | In | Required | Type | Default | Description |
| --- | --- | --- | --- | --- | --- |
| `token` | `query` | yes | `string` | n/a | User authentication token. |
| `kolId` | `query` | yes | `string` | n/a | KOL ID. |
| `industryTag` | `query` | no | `string` | n/a | Industry Tag. |
| `acceptCache` | `query` | no | `boolean` | `false` | Enable cache. |
### Request body
No request body.
### Responses
- `200`: OK
Call GET /api/douyin-xingtu/get-kol-info/v1 for Douyin Creator Marketplace (Xingtu) Creator Profile through JustOneAPI with kolId.
---
name: Douyin Creator Marketplace (Xingtu) Creator Profile API
description: Call GET /api/douyin-xingtu/get-kol-info/v1 for Douyin Creator Marketplace (Xingtu) Creator Profile through JustOneAPI with kolId.
author: JustOneAPI
homepage: https://api.justoneapi.com
metadata: {"openclaw":{"homepage":"https://api.justoneapi.com","primaryEnv":"JUST_ONE_API_TOKEN","requires":{"bins":["node"],"env":["JUST_ONE_API_TOKEN"]},"skillKey":"justoneapi_douyin_xingtu_get_kol_info"}}
---
# Douyin Creator Marketplace (Xingtu) Creator Profile
Use this focused JustOneAPI skill for creator Profile in Douyin Creator Marketplace (Xingtu). It targets `GET /api/douyin-xingtu/get-kol-info/v1`. Required non-token inputs are `kolId`. OpenAPI describes it as: Get Douyin Creator Marketplace (Xingtu) creator Profile data, including audience and pricing data, for influencer vetting, benchmark analysis, and campaign planning.
## Endpoint Scope
- Platform key: `douyin-xingtu`
- Endpoint key: `get-kol-info`
- Platform family: Douyin Creator Marketplace (Xingtu)
- Skill slug: `justoneapi-douyin-xingtu-get-kol-info`
| Operation | Version | Method | Path | OpenAPI summary |
| --- | --- | --- | --- | --- |
| `getDouyinXingtuKolInfoV1` | `v1` | `GET` | `/api/douyin-xingtu/get-kol-info/v1` | Creator Profile |
## Inputs
| Parameter | In | Required by | Optional by | Type | Notes |
| --- | --- | --- | --- | --- | --- |
| `acceptCache` | `query` | n/a | all | `boolean` | Enable cache |
| `kolId` | `query` | all | n/a | `string` | KOL ID |
| `platformChannel` | `query` | n/a | all | `string` | Platform channel. Available Values: - `_1`: Short Video - `_10`: Live Streaming |
| `platformChannel` enum | values | n/a | n/a | n/a | `_1`, `_10` |
Request body: none documented; send parameters through path or query arguments.
## Version Choice
Use `getDouyinXingtuKolInfoV1` for the documented `v1` endpoint. There are no alternate versions grouped in this skill.
## Run This Endpoint
Supported operation IDs in this skill: `getDouyinXingtuKolInfoV1`.
```bash
node {baseDir}/bin/run.mjs --operation "getDouyinXingtuKolInfoV1" --token "$JUST_ONE_API_TOKEN" --params-json '{"kolId":"<kolId>"}'
```
Ask for any missing required parameter before calling the helper. Keep user-provided IDs, cursors, keywords, and filters unchanged.
## Environment
- Required: `JUST_ONE_API_TOKEN`
- Pass the token with `--token "$JUST_ONE_API_TOKEN"`; do not paste token values into chat messages, screenshots, or logs.
- Get a token from [Just One API Dashboard](https://dashboard.justoneapi.com/en/login?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_get_kol_info&utm_content=project_link).
- Authentication details: [Just One API Usage Guide](https://docs.justoneapi.com/en/?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_get_kol_info&utm_content=project_link).
## Output Focus
- State the operation ID and endpoint path used, for example `getDouyinXingtuKolInfoV1` on `/api/douyin-xingtu/get-kol-info/v1`.
- Echo the required lookup scope (`kolId`) before summarizing results.
- Prioritize fields that support this endpoint purpose: Get Douyin Creator Marketplace (Xingtu) creator Profile data, including audience and pricing data, for influencer vetting, benchmark analysis, and campaign planning.
- Return raw JSON only after the short, endpoint-specific summary.
- If the backend errors, include the backend payload and the exact operation ID.
FILE:bin/run.mjs
#!/usr/bin/env node
const manifest = {
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/get-kol-info/v1 for Douyin Creator Marketplace (Xingtu) Creator Profile through JustOneAPI with kolId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Creator Profile",
"openapi": "3.1.0",
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_get_kol_info",
"slug": "justoneapi-douyin-xingtu-get-kol-info",
"sourceTitle": "OpenAPI definition",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) creator Profile data, including audience and pricing data, for influencer vetting, benchmark analysis, and campaign planning.",
"method": "GET",
"operationId": "getDouyinXingtuKolInfoV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "KOL ID.",
"enumValues": [],
"location": "query",
"name": "kolId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": "_1",
"description": "Platform channel.\n\nAvailable Values:\n- `_1`: Short Video\n- `_10`: Live Streaming",
"enumValues": [
"_1",
"_10"
],
"location": "query",
"name": "platformChannel",
"required": false,
"schemaType": "string"
},
{
"defaultValue": false,
"description": "Enable cache.",
"enumValues": [],
"location": "query",
"name": "acceptCache",
"required": false,
"schemaType": "boolean"
}
],
"path": "/api/douyin-xingtu/get-kol-info/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Creator Profile",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"endpointPath": "get-kol-info",
"skillType": "interface"
};
const args = parseArgs(process.argv.slice(2));
if (!args.operation) {
fail("Missing required --operation argument.");
}
const operation = manifest.operations.find((item) => item.operationId === args.operation);
if (!operation) {
fail(`Unknown operation "args.operation".`, { availableOperations: manifest.operations.map((item) => item.operationId) });
}
const params = parseParams(args.paramsJson);
applyDefaults(operation, params);
injectToken(operation, params, args.token);
validateRequired(operation, params);
const baseUrl = manifest.baseUrl;
const url = new URL(operation.path, ensureBaseUrl(baseUrl));
applyPathParams(operation, params, url);
applyQueryParams(operation, params, url);
const requestInit = {
headers: {
"accept": "application/json",
},
method: operation.method,
};
if (operation.requestBody && params.body !== undefined) {
requestInit.body = JSON.stringify(params.body);
requestInit.headers["content-type"] = operation.requestBody.contentType || "application/json";
}
let response;
try {
response = await fetch(url, requestInit);
} catch (error) {
fail("Network request failed.", {
cause: error instanceof Error ? error.message : String(error),
operationId: operation.operationId,
});
}
const rawBody = await response.text();
let parsedBody;
try {
parsedBody = rawBody ? JSON.parse(rawBody) : null;
} catch (error) {
if (!response.ok) {
fail("Backend returned a non-JSON error response.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
fail("Backend returned invalid JSON.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
if (!response.ok) {
fail("Backend request failed.", {
body: parsedBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
process.stdout.write(`JSON.stringify(parsedBody, null, 2)\n`);
function parseArgs(argv) {
const parsed = { operation: null, paramsJson: "{}", token: null };
for (let index = 0; index < argv.length; index += 1) {
const flag = argv[index];
const value = argv[index + 1];
if (flag === "--operation") {
parsed.operation = value;
index += 1;
continue;
}
if (flag === "--params-json") {
parsed.paramsJson = value;
index += 1;
continue;
}
if (flag === "--token") {
parsed.token = value;
index += 1;
continue;
}
fail(`Unknown argument "flag".`);
}
return parsed;
}
function parseParams(input) {
try {
const parsed = JSON.parse(input || "{}");
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
fail("--params-json must decode to a JSON object.");
}
return parsed;
} catch (error) {
fail("Failed to parse --params-json.", {
cause: error instanceof Error ? error.message : String(error),
});
}
}
function applyDefaults(operation, params) {
for (const parameter of operation.parameters) {
if (params[parameter.name] === undefined && parameter.defaultValue !== null) {
params[parameter.name] = parameter.defaultValue;
}
}
}
function injectToken(operation, params, cliToken) {
const tokenParam = operation.parameters.find((parameter) => parameter.name === "token");
if (!tokenParam || params.token !== undefined) {
return;
}
if (!cliToken) {
fail("--token is required for this operation.", {
operationId: operation.operationId,
});
}
params.token = cliToken;
}
function validateRequired(operation, params) {
const missing = [];
for (const parameter of operation.parameters) {
if (parameter.required && params[parameter.name] === undefined) {
missing.push(parameter.name);
}
}
if (operation.requestBody?.required && params.body === undefined) {
missing.push("body");
}
if (missing.length) {
fail("Missing required parameters.", {
missing,
operationId: operation.operationId,
});
}
}
function applyPathParams(operation, params, url) {
let pathname = url.pathname;
for (const parameter of operation.parameters.filter((item) => item.location === "path")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
pathname = pathname.replace(`{parameter.name}`, encodeURIComponent(String(value)));
}
url.pathname = pathname;
}
function applyQueryParams(operation, params, url) {
for (const parameter of operation.parameters.filter((item) => item.location === "query")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
appendValue(url.searchParams, parameter.name, value);
}
}
function appendValue(searchParams, name, value) {
if (Array.isArray(value)) {
for (const item of value) {
appendValue(searchParams, name, item);
}
return;
}
if (value && typeof value === "object") {
searchParams.append(name, JSON.stringify(value));
return;
}
searchParams.append(name, String(value));
}
function ensureBaseUrl(value) {
return value.endsWith("/") ? value : `value/`;
}
function fail(message, details = null) {
const payload = { message };
if (details) {
payload.details = details;
}
process.stderr.write(`JSON.stringify(payload, null, 2)\n`);
process.exit(1);
}
FILE:generated/operations.json
{
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/get-kol-info/v1 for Douyin Creator Marketplace (Xingtu) Creator Profile through JustOneAPI with kolId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Creator Profile",
"endpointPath": "get-kol-info",
"openapi": "3.1.0",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) creator Profile data, including audience and pricing data, for influencer vetting, benchmark analysis, and campaign planning.",
"method": "GET",
"operationId": "getDouyinXingtuKolInfoV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "KOL ID.",
"enumValues": [],
"location": "query",
"name": "kolId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": "_1",
"description": "Platform channel.\n\nAvailable Values:\n- `_1`: Short Video\n- `_10`: Live Streaming",
"enumValues": [
"_1",
"_10"
],
"location": "query",
"name": "platformChannel",
"required": false,
"schemaType": "string"
},
{
"defaultValue": false,
"description": "Enable cache.",
"enumValues": [],
"location": "query",
"name": "acceptCache",
"required": false,
"schemaType": "boolean"
}
],
"path": "/api/douyin-xingtu/get-kol-info/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Creator Profile",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_get_kol_info",
"skillType": "interface",
"slug": "justoneapi-douyin-xingtu-get-kol-info",
"sourceTitle": "OpenAPI definition"
}
FILE:generated/operations.md
# Douyin Creator Marketplace (Xingtu) Creator Profile operations
Generated from JustOneAPI OpenAPI for platform key `douyin-xingtu`.
Endpoint group: `get-kol-info`.
## `getDouyinXingtuKolInfoV1`
- Method: `GET`
- Path: `/api/douyin-xingtu/get-kol-info/v1`
- Summary: Creator Profile
- Description: Get Douyin Creator Marketplace (Xingtu) creator Profile data, including audience and pricing data, for influencer vetting, benchmark analysis, and campaign planning.
- Tags: `Douyin Creator Marketplace (Xingtu)`
### Parameters
| Name | In | Required | Type | Default | Description |
| --- | --- | --- | --- | --- | --- |
| `token` | `query` | yes | `string` | n/a | User authentication token. |
| `kolId` | `query` | yes | `string` | n/a | KOL ID. |
| `platformChannel` | `query` | no | `string` | `_1` | Platform channel.
Available Values:
- `_1`: Short Video
- `_10`: Live Streaming |
| enum | values | no | n/a | n/a | `_1`, `_10` |
| `acceptCache` | `query` | no | `boolean` | `false` | Enable cache. |
### Request body
No request body.
### Responses
- `200`: OK
Call GET /api/douyin-xingtu/get-kol-fans-distribution/v1 for Douyin Creator Marketplace (Xingtu) Follower Distribution through JustOneAPI with kolId.
---
name: Douyin Creator Marketplace (Xingtu) Follower Distribution API
description: Call GET /api/douyin-xingtu/get-kol-fans-distribution/v1 for Douyin Creator Marketplace (Xingtu) Follower Distribution through JustOneAPI with kolId.
author: JustOneAPI
homepage: https://api.justoneapi.com
metadata: {"openclaw":{"homepage":"https://api.justoneapi.com","primaryEnv":"JUST_ONE_API_TOKEN","requires":{"bins":["node"],"env":["JUST_ONE_API_TOKEN"]},"skillKey":"justoneapi_douyin_xingtu_get_kol_fans_distribution"}}
---
# Douyin Creator Marketplace (Xingtu) Follower Distribution
Use this focused JustOneAPI skill for follower Distribution in Douyin Creator Marketplace (Xingtu). It targets `GET /api/douyin-xingtu/get-kol-fans-distribution/v1`. Required non-token inputs are `kolId`. OpenAPI describes it as: Get Douyin Creator Marketplace (Xingtu) follower distribution data, including audience demographics, interests, and distribution metrics, for creator evaluation, campaign planning, and marketplace research.
## Endpoint Scope
- Platform key: `douyin-xingtu`
- Endpoint key: `get-kol-fans-distribution`
- Platform family: Douyin Creator Marketplace (Xingtu)
- Skill slug: `justoneapi-douyin-xingtu-get-kol-fans-distribution`
| Operation | Version | Method | Path | OpenAPI summary |
| --- | --- | --- | --- | --- |
| `getKolFansDistributionV1` | `v1` | `GET` | `/api/douyin-xingtu/get-kol-fans-distribution/v1` | Follower Distribution |
## Inputs
| Parameter | In | Required by | Optional by | Type | Notes |
| --- | --- | --- | --- | --- | --- |
| `acceptCache` | `query` | n/a | all | `boolean` | Enable cache |
| `fansType` | `query` | n/a | all | `string` | Fans type. Available Values: - `_1`: Fans Portrait - `_2`: Fans Group Portrait - `_5`: Iron Fans Portrait |
| `fansType` enum | values | n/a | n/a | n/a | `_1`, `_2`, `_5` |
| `kolId` | `query` | all | n/a | `string` | KOL ID |
Request body: none documented; send parameters through path or query arguments.
## Version Choice
Use `getKolFansDistributionV1` for the documented `v1` endpoint. There are no alternate versions grouped in this skill.
## Run This Endpoint
Supported operation IDs in this skill: `getKolFansDistributionV1`.
```bash
node {baseDir}/bin/run.mjs --operation "getKolFansDistributionV1" --token "$JUST_ONE_API_TOKEN" --params-json '{"kolId":"<kolId>"}'
```
Ask for any missing required parameter before calling the helper. Keep user-provided IDs, cursors, keywords, and filters unchanged.
## Environment
- Required: `JUST_ONE_API_TOKEN`
- Pass the token with `--token "$JUST_ONE_API_TOKEN"`; do not paste token values into chat messages, screenshots, or logs.
- Get a token from [Just One API Dashboard](https://dashboard.justoneapi.com/en/login?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_get_kol_fans_distribution&utm_content=project_link).
- Authentication details: [Just One API Usage Guide](https://docs.justoneapi.com/en/?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_get_kol_fans_distribution&utm_content=project_link).
## Output Focus
- State the operation ID and endpoint path used, for example `getKolFansDistributionV1` on `/api/douyin-xingtu/get-kol-fans-distribution/v1`.
- Echo the required lookup scope (`kolId`) before summarizing results.
- Prioritize fields that support this endpoint purpose: Get Douyin Creator Marketplace (Xingtu) follower distribution data, including audience demographics, interests, and distribution metrics, for creator evaluation, campaign planning, and marketplace research.
- Return raw JSON only after the short, endpoint-specific summary.
- If the backend errors, include the backend payload and the exact operation ID.
FILE:bin/run.mjs
#!/usr/bin/env node
const manifest = {
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/get-kol-fans-distribution/v1 for Douyin Creator Marketplace (Xingtu) Follower Distribution through JustOneAPI with kolId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Follower Distribution",
"openapi": "3.1.0",
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_get_kol_fans_distribution",
"slug": "justoneapi-douyin-xingtu-get-kol-fans-distribution",
"sourceTitle": "OpenAPI definition",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) follower distribution data, including audience demographics, interests, and distribution metrics, for creator evaluation, campaign planning, and marketplace research.",
"method": "GET",
"operationId": "getKolFansDistributionV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "KOL ID.",
"enumValues": [],
"location": "query",
"name": "kolId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": "_1",
"description": "Fans type.\n\nAvailable Values:\n- `_1`: Fans Portrait\n- `_2`: Fans Group Portrait\n- `_5`: Iron Fans Portrait",
"enumValues": [
"_1",
"_2",
"_5"
],
"location": "query",
"name": "fansType",
"required": false,
"schemaType": "string"
},
{
"defaultValue": false,
"description": "Enable cache.",
"enumValues": [],
"location": "query",
"name": "acceptCache",
"required": false,
"schemaType": "boolean"
}
],
"path": "/api/douyin-xingtu/get-kol-fans-distribution/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Follower Distribution",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"endpointPath": "get-kol-fans-distribution",
"skillType": "interface"
};
const args = parseArgs(process.argv.slice(2));
if (!args.operation) {
fail("Missing required --operation argument.");
}
const operation = manifest.operations.find((item) => item.operationId === args.operation);
if (!operation) {
fail(`Unknown operation "args.operation".`, { availableOperations: manifest.operations.map((item) => item.operationId) });
}
const params = parseParams(args.paramsJson);
applyDefaults(operation, params);
injectToken(operation, params, args.token);
validateRequired(operation, params);
const baseUrl = manifest.baseUrl;
const url = new URL(operation.path, ensureBaseUrl(baseUrl));
applyPathParams(operation, params, url);
applyQueryParams(operation, params, url);
const requestInit = {
headers: {
"accept": "application/json",
},
method: operation.method,
};
if (operation.requestBody && params.body !== undefined) {
requestInit.body = JSON.stringify(params.body);
requestInit.headers["content-type"] = operation.requestBody.contentType || "application/json";
}
let response;
try {
response = await fetch(url, requestInit);
} catch (error) {
fail("Network request failed.", {
cause: error instanceof Error ? error.message : String(error),
operationId: operation.operationId,
});
}
const rawBody = await response.text();
let parsedBody;
try {
parsedBody = rawBody ? JSON.parse(rawBody) : null;
} catch (error) {
if (!response.ok) {
fail("Backend returned a non-JSON error response.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
fail("Backend returned invalid JSON.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
if (!response.ok) {
fail("Backend request failed.", {
body: parsedBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
process.stdout.write(`JSON.stringify(parsedBody, null, 2)\n`);
function parseArgs(argv) {
const parsed = { operation: null, paramsJson: "{}", token: null };
for (let index = 0; index < argv.length; index += 1) {
const flag = argv[index];
const value = argv[index + 1];
if (flag === "--operation") {
parsed.operation = value;
index += 1;
continue;
}
if (flag === "--params-json") {
parsed.paramsJson = value;
index += 1;
continue;
}
if (flag === "--token") {
parsed.token = value;
index += 1;
continue;
}
fail(`Unknown argument "flag".`);
}
return parsed;
}
function parseParams(input) {
try {
const parsed = JSON.parse(input || "{}");
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
fail("--params-json must decode to a JSON object.");
}
return parsed;
} catch (error) {
fail("Failed to parse --params-json.", {
cause: error instanceof Error ? error.message : String(error),
});
}
}
function applyDefaults(operation, params) {
for (const parameter of operation.parameters) {
if (params[parameter.name] === undefined && parameter.defaultValue !== null) {
params[parameter.name] = parameter.defaultValue;
}
}
}
function injectToken(operation, params, cliToken) {
const tokenParam = operation.parameters.find((parameter) => parameter.name === "token");
if (!tokenParam || params.token !== undefined) {
return;
}
if (!cliToken) {
fail("--token is required for this operation.", {
operationId: operation.operationId,
});
}
params.token = cliToken;
}
function validateRequired(operation, params) {
const missing = [];
for (const parameter of operation.parameters) {
if (parameter.required && params[parameter.name] === undefined) {
missing.push(parameter.name);
}
}
if (operation.requestBody?.required && params.body === undefined) {
missing.push("body");
}
if (missing.length) {
fail("Missing required parameters.", {
missing,
operationId: operation.operationId,
});
}
}
function applyPathParams(operation, params, url) {
let pathname = url.pathname;
for (const parameter of operation.parameters.filter((item) => item.location === "path")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
pathname = pathname.replace(`{parameter.name}`, encodeURIComponent(String(value)));
}
url.pathname = pathname;
}
function applyQueryParams(operation, params, url) {
for (const parameter of operation.parameters.filter((item) => item.location === "query")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
appendValue(url.searchParams, parameter.name, value);
}
}
function appendValue(searchParams, name, value) {
if (Array.isArray(value)) {
for (const item of value) {
appendValue(searchParams, name, item);
}
return;
}
if (value && typeof value === "object") {
searchParams.append(name, JSON.stringify(value));
return;
}
searchParams.append(name, String(value));
}
function ensureBaseUrl(value) {
return value.endsWith("/") ? value : `value/`;
}
function fail(message, details = null) {
const payload = { message };
if (details) {
payload.details = details;
}
process.stderr.write(`JSON.stringify(payload, null, 2)\n`);
process.exit(1);
}
FILE:generated/operations.json
{
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/get-kol-fans-distribution/v1 for Douyin Creator Marketplace (Xingtu) Follower Distribution through JustOneAPI with kolId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Follower Distribution",
"endpointPath": "get-kol-fans-distribution",
"openapi": "3.1.0",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) follower distribution data, including audience demographics, interests, and distribution metrics, for creator evaluation, campaign planning, and marketplace research.",
"method": "GET",
"operationId": "getKolFansDistributionV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "KOL ID.",
"enumValues": [],
"location": "query",
"name": "kolId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": "_1",
"description": "Fans type.\n\nAvailable Values:\n- `_1`: Fans Portrait\n- `_2`: Fans Group Portrait\n- `_5`: Iron Fans Portrait",
"enumValues": [
"_1",
"_2",
"_5"
],
"location": "query",
"name": "fansType",
"required": false,
"schemaType": "string"
},
{
"defaultValue": false,
"description": "Enable cache.",
"enumValues": [],
"location": "query",
"name": "acceptCache",
"required": false,
"schemaType": "boolean"
}
],
"path": "/api/douyin-xingtu/get-kol-fans-distribution/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Follower Distribution",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_get_kol_fans_distribution",
"skillType": "interface",
"slug": "justoneapi-douyin-xingtu-get-kol-fans-distribution",
"sourceTitle": "OpenAPI definition"
}
FILE:generated/operations.md
# Douyin Creator Marketplace (Xingtu) Follower Distribution operations
Generated from JustOneAPI OpenAPI for platform key `douyin-xingtu`.
Endpoint group: `get-kol-fans-distribution`.
## `getKolFansDistributionV1`
- Method: `GET`
- Path: `/api/douyin-xingtu/get-kol-fans-distribution/v1`
- Summary: Follower Distribution
- Description: Get Douyin Creator Marketplace (Xingtu) follower distribution data, including audience demographics, interests, and distribution metrics, for creator evaluation, campaign planning, and marketplace research.
- Tags: `Douyin Creator Marketplace (Xingtu)`
### Parameters
| Name | In | Required | Type | Default | Description |
| --- | --- | --- | --- | --- | --- |
| `token` | `query` | yes | `string` | n/a | User authentication token. |
| `kolId` | `query` | yes | `string` | n/a | KOL ID. |
| `fansType` | `query` | no | `string` | `_1` | Fans type.
Available Values:
- `_1`: Fans Portrait
- `_2`: Fans Group Portrait
- `_5`: Iron Fans Portrait |
| enum | values | no | n/a | n/a | `_1`, `_2`, `_5` |
| `acceptCache` | `query` | no | `boolean` | `false` | Enable cache. |
### Request body
No request body.
### Responses
- `200`: OK
Call GET /api/douyin-xingtu/get-kol-daily-fans/v1 for Douyin Creator Marketplace (Xingtu) Follower Growth Trend through JustOneAPI with endDate, kolId, and s...
---
name: Douyin Creator Marketplace (Xingtu) Follower Growth Trend API
description: Call GET /api/douyin-xingtu/get-kol-daily-fans/v1 for Douyin Creator Marketplace (Xingtu) Follower Growth Trend through JustOneAPI with endDate, kolId, and startDate.
author: JustOneAPI
homepage: https://api.justoneapi.com
metadata: {"openclaw":{"homepage":"https://api.justoneapi.com","primaryEnv":"JUST_ONE_API_TOKEN","requires":{"bins":["node"],"env":["JUST_ONE_API_TOKEN"]},"skillKey":"justoneapi_douyin_xingtu_get_kol_daily_fans"}}
---
# Douyin Creator Marketplace (Xingtu) Follower Growth Trend
Use this focused JustOneAPI skill for follower Growth Trend in Douyin Creator Marketplace (Xingtu). It targets `GET /api/douyin-xingtu/get-kol-daily-fans/v1`. Required non-token inputs are `endDate`, `kolId`, and `startDate`. OpenAPI describes it as: Get Douyin Creator Marketplace (Xingtu) follower Growth Trend data, including historical audience changes over time, for creator evaluation, campaign planning, and marketplace research.
## Endpoint Scope
- Platform key: `douyin-xingtu`
- Endpoint key: `get-kol-daily-fans`
- Platform family: Douyin Creator Marketplace (Xingtu)
- Skill slug: `justoneapi-douyin-xingtu-get-kol-daily-fans`
| Operation | Version | Method | Path | OpenAPI summary |
| --- | --- | --- | --- | --- |
| `getKolDailyFansV1` | `v1` | `GET` | `/api/douyin-xingtu/get-kol-daily-fans/v1` | Follower Growth Trend |
## Inputs
| Parameter | In | Required by | Optional by | Type | Notes |
| --- | --- | --- | --- | --- | --- |
| `acceptCache` | `query` | n/a | all | `boolean` | Enable cache |
| `endDate` | `query` | all | n/a | `string` | End Date (yyyy-MM-dd) |
| `kolId` | `query` | all | n/a | `string` | KOL ID |
| `startDate` | `query` | all | n/a | `string` | Start Date (yyyy-MM-dd) |
Request body: none documented; send parameters through path or query arguments.
## Version Choice
Use `getKolDailyFansV1` for the documented `v1` endpoint. There are no alternate versions grouped in this skill.
## Run This Endpoint
Supported operation IDs in this skill: `getKolDailyFansV1`.
```bash
node {baseDir}/bin/run.mjs --operation "getKolDailyFansV1" --token "$JUST_ONE_API_TOKEN" --params-json '{"kolId":"<kolId>","startDate":"<startDate>","endDate":"<endDate>"}'
```
Ask for any missing required parameter before calling the helper. Keep user-provided IDs, cursors, keywords, and filters unchanged.
## Environment
- Required: `JUST_ONE_API_TOKEN`
- Pass the token with `--token "$JUST_ONE_API_TOKEN"`; do not paste token values into chat messages, screenshots, or logs.
- Get a token from [Just One API Dashboard](https://dashboard.justoneapi.com/en/login?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_get_kol_daily_fans&utm_content=project_link).
- Authentication details: [Just One API Usage Guide](https://docs.justoneapi.com/en/?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_get_kol_daily_fans&utm_content=project_link).
## Output Focus
- State the operation ID and endpoint path used, for example `getKolDailyFansV1` on `/api/douyin-xingtu/get-kol-daily-fans/v1`.
- Echo the required lookup scope (`endDate`, `kolId`, and `startDate`) before summarizing results.
- Prioritize fields that support this endpoint purpose: Get Douyin Creator Marketplace (Xingtu) follower Growth Trend data, including historical audience changes over time, for creator evaluation, campaign planning, and marketplace research.
- Return raw JSON only after the short, endpoint-specific summary.
- If the backend errors, include the backend payload and the exact operation ID.
FILE:bin/run.mjs
#!/usr/bin/env node
const manifest = {
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/get-kol-daily-fans/v1 for Douyin Creator Marketplace (Xingtu) Follower Growth Trend through JustOneAPI with endDate, kolId, and startDate.",
"displayName": "Douyin Creator Marketplace (Xingtu) Follower Growth Trend",
"openapi": "3.1.0",
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_get_kol_daily_fans",
"slug": "justoneapi-douyin-xingtu-get-kol-daily-fans",
"sourceTitle": "OpenAPI definition",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) follower Growth Trend data, including historical audience changes over time, for creator evaluation, campaign planning, and marketplace research.",
"method": "GET",
"operationId": "getKolDailyFansV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "KOL ID.",
"enumValues": [],
"location": "query",
"name": "kolId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Start Date (yyyy-MM-dd).",
"enumValues": [],
"location": "query",
"name": "startDate",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "End Date (yyyy-MM-dd).",
"enumValues": [],
"location": "query",
"name": "endDate",
"required": true,
"schemaType": "string"
},
{
"defaultValue": false,
"description": "Enable cache.",
"enumValues": [],
"location": "query",
"name": "acceptCache",
"required": false,
"schemaType": "boolean"
}
],
"path": "/api/douyin-xingtu/get-kol-daily-fans/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Follower Growth Trend",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"endpointPath": "get-kol-daily-fans",
"skillType": "interface"
};
const args = parseArgs(process.argv.slice(2));
if (!args.operation) {
fail("Missing required --operation argument.");
}
const operation = manifest.operations.find((item) => item.operationId === args.operation);
if (!operation) {
fail(`Unknown operation "args.operation".`, { availableOperations: manifest.operations.map((item) => item.operationId) });
}
const params = parseParams(args.paramsJson);
applyDefaults(operation, params);
injectToken(operation, params, args.token);
validateRequired(operation, params);
const baseUrl = manifest.baseUrl;
const url = new URL(operation.path, ensureBaseUrl(baseUrl));
applyPathParams(operation, params, url);
applyQueryParams(operation, params, url);
const requestInit = {
headers: {
"accept": "application/json",
},
method: operation.method,
};
if (operation.requestBody && params.body !== undefined) {
requestInit.body = JSON.stringify(params.body);
requestInit.headers["content-type"] = operation.requestBody.contentType || "application/json";
}
let response;
try {
response = await fetch(url, requestInit);
} catch (error) {
fail("Network request failed.", {
cause: error instanceof Error ? error.message : String(error),
operationId: operation.operationId,
});
}
const rawBody = await response.text();
let parsedBody;
try {
parsedBody = rawBody ? JSON.parse(rawBody) : null;
} catch (error) {
if (!response.ok) {
fail("Backend returned a non-JSON error response.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
fail("Backend returned invalid JSON.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
if (!response.ok) {
fail("Backend request failed.", {
body: parsedBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
process.stdout.write(`JSON.stringify(parsedBody, null, 2)\n`);
function parseArgs(argv) {
const parsed = { operation: null, paramsJson: "{}", token: null };
for (let index = 0; index < argv.length; index += 1) {
const flag = argv[index];
const value = argv[index + 1];
if (flag === "--operation") {
parsed.operation = value;
index += 1;
continue;
}
if (flag === "--params-json") {
parsed.paramsJson = value;
index += 1;
continue;
}
if (flag === "--token") {
parsed.token = value;
index += 1;
continue;
}
fail(`Unknown argument "flag".`);
}
return parsed;
}
function parseParams(input) {
try {
const parsed = JSON.parse(input || "{}");
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
fail("--params-json must decode to a JSON object.");
}
return parsed;
} catch (error) {
fail("Failed to parse --params-json.", {
cause: error instanceof Error ? error.message : String(error),
});
}
}
function applyDefaults(operation, params) {
for (const parameter of operation.parameters) {
if (params[parameter.name] === undefined && parameter.defaultValue !== null) {
params[parameter.name] = parameter.defaultValue;
}
}
}
function injectToken(operation, params, cliToken) {
const tokenParam = operation.parameters.find((parameter) => parameter.name === "token");
if (!tokenParam || params.token !== undefined) {
return;
}
if (!cliToken) {
fail("--token is required for this operation.", {
operationId: operation.operationId,
});
}
params.token = cliToken;
}
function validateRequired(operation, params) {
const missing = [];
for (const parameter of operation.parameters) {
if (parameter.required && params[parameter.name] === undefined) {
missing.push(parameter.name);
}
}
if (operation.requestBody?.required && params.body === undefined) {
missing.push("body");
}
if (missing.length) {
fail("Missing required parameters.", {
missing,
operationId: operation.operationId,
});
}
}
function applyPathParams(operation, params, url) {
let pathname = url.pathname;
for (const parameter of operation.parameters.filter((item) => item.location === "path")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
pathname = pathname.replace(`{parameter.name}`, encodeURIComponent(String(value)));
}
url.pathname = pathname;
}
function applyQueryParams(operation, params, url) {
for (const parameter of operation.parameters.filter((item) => item.location === "query")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
appendValue(url.searchParams, parameter.name, value);
}
}
function appendValue(searchParams, name, value) {
if (Array.isArray(value)) {
for (const item of value) {
appendValue(searchParams, name, item);
}
return;
}
if (value && typeof value === "object") {
searchParams.append(name, JSON.stringify(value));
return;
}
searchParams.append(name, String(value));
}
function ensureBaseUrl(value) {
return value.endsWith("/") ? value : `value/`;
}
function fail(message, details = null) {
const payload = { message };
if (details) {
payload.details = details;
}
process.stderr.write(`JSON.stringify(payload, null, 2)\n`);
process.exit(1);
}
FILE:generated/operations.json
{
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/get-kol-daily-fans/v1 for Douyin Creator Marketplace (Xingtu) Follower Growth Trend through JustOneAPI with endDate, kolId, and startDate.",
"displayName": "Douyin Creator Marketplace (Xingtu) Follower Growth Trend",
"endpointPath": "get-kol-daily-fans",
"openapi": "3.1.0",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) follower Growth Trend data, including historical audience changes over time, for creator evaluation, campaign planning, and marketplace research.",
"method": "GET",
"operationId": "getKolDailyFansV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "KOL ID.",
"enumValues": [],
"location": "query",
"name": "kolId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Start Date (yyyy-MM-dd).",
"enumValues": [],
"location": "query",
"name": "startDate",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "End Date (yyyy-MM-dd).",
"enumValues": [],
"location": "query",
"name": "endDate",
"required": true,
"schemaType": "string"
},
{
"defaultValue": false,
"description": "Enable cache.",
"enumValues": [],
"location": "query",
"name": "acceptCache",
"required": false,
"schemaType": "boolean"
}
],
"path": "/api/douyin-xingtu/get-kol-daily-fans/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Follower Growth Trend",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_get_kol_daily_fans",
"skillType": "interface",
"slug": "justoneapi-douyin-xingtu-get-kol-daily-fans",
"sourceTitle": "OpenAPI definition"
}
FILE:generated/operations.md
# Douyin Creator Marketplace (Xingtu) Follower Growth Trend operations
Generated from JustOneAPI OpenAPI for platform key `douyin-xingtu`.
Endpoint group: `get-kol-daily-fans`.
## `getKolDailyFansV1`
- Method: `GET`
- Path: `/api/douyin-xingtu/get-kol-daily-fans/v1`
- Summary: Follower Growth Trend
- Description: Get Douyin Creator Marketplace (Xingtu) follower Growth Trend data, including historical audience changes over time, for creator evaluation, campaign planning, and marketplace research.
- Tags: `Douyin Creator Marketplace (Xingtu)`
### Parameters
| Name | In | Required | Type | Default | Description |
| --- | --- | --- | --- | --- | --- |
| `token` | `query` | yes | `string` | n/a | User authentication token. |
| `kolId` | `query` | yes | `string` | n/a | KOL ID. |
| `startDate` | `query` | yes | `string` | n/a | Start Date (yyyy-MM-dd). |
| `endDate` | `query` | yes | `string` | n/a | End Date (yyyy-MM-dd). |
| `acceptCache` | `query` | no | `boolean` | `false` | Enable cache. |
### Request body
No request body.
### Responses
- `200`: OK
Call GET /api/douyin-xingtu/get-kol-cp-info/v1 for Douyin Creator Marketplace (Xingtu) Cost Performance Analysis through JustOneAPI with kolId.
---
name: Douyin Creator Marketplace (Xingtu) Cost Performance Analysis API
description: Call GET /api/douyin-xingtu/get-kol-cp-info/v1 for Douyin Creator Marketplace (Xingtu) Cost Performance Analysis through JustOneAPI with kolId.
author: JustOneAPI
homepage: https://api.justoneapi.com
metadata: {"openclaw":{"homepage":"https://api.justoneapi.com","primaryEnv":"JUST_ONE_API_TOKEN","requires":{"bins":["node"],"env":["JUST_ONE_API_TOKEN"]},"skillKey":"justoneapi_douyin_xingtu_get_kol_cp_info"}}
---
# Douyin Creator Marketplace (Xingtu) Cost Performance Analysis
Use this focused JustOneAPI skill for cost Performance Analysis in Douyin Creator Marketplace (Xingtu). It targets `GET /api/douyin-xingtu/get-kol-cp-info/v1`. Required non-token inputs are `kolId`. OpenAPI describes it as: Get Douyin Creator Marketplace (Xingtu) cost Performance Analysis data, including pricing, exposure, and engagement efficiency indicators, for creator evaluation, campaign planning, and marketplace research.
## Endpoint Scope
- Platform key: `douyin-xingtu`
- Endpoint key: `get-kol-cp-info`
- Platform family: Douyin Creator Marketplace (Xingtu)
- Skill slug: `justoneapi-douyin-xingtu-get-kol-cp-info`
| Operation | Version | Method | Path | OpenAPI summary |
| --- | --- | --- | --- | --- |
| `getKolCpInfoV1` | `v1` | `GET` | `/api/douyin-xingtu/get-kol-cp-info/v1` | Cost Performance Analysis |
## Inputs
| Parameter | In | Required by | Optional by | Type | Notes |
| --- | --- | --- | --- | --- | --- |
| `acceptCache` | `query` | n/a | all | `boolean` | Enable cache |
| `kolId` | `query` | all | n/a | `string` | KOL ID |
Request body: none documented; send parameters through path or query arguments.
## Version Choice
Use `getKolCpInfoV1` for the documented `v1` endpoint. There are no alternate versions grouped in this skill.
## Run This Endpoint
Supported operation IDs in this skill: `getKolCpInfoV1`.
```bash
node {baseDir}/bin/run.mjs --operation "getKolCpInfoV1" --token "$JUST_ONE_API_TOKEN" --params-json '{"kolId":"<kolId>"}'
```
Ask for any missing required parameter before calling the helper. Keep user-provided IDs, cursors, keywords, and filters unchanged.
## Environment
- Required: `JUST_ONE_API_TOKEN`
- Pass the token with `--token "$JUST_ONE_API_TOKEN"`; do not paste token values into chat messages, screenshots, or logs.
- Get a token from [Just One API Dashboard](https://dashboard.justoneapi.com/en/login?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_get_kol_cp_info&utm_content=project_link).
- Authentication details: [Just One API Usage Guide](https://docs.justoneapi.com/en/?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_get_kol_cp_info&utm_content=project_link).
## Output Focus
- State the operation ID and endpoint path used, for example `getKolCpInfoV1` on `/api/douyin-xingtu/get-kol-cp-info/v1`.
- Echo the required lookup scope (`kolId`) before summarizing results.
- Prioritize fields that support this endpoint purpose: Get Douyin Creator Marketplace (Xingtu) cost Performance Analysis data, including pricing, exposure, and engagement efficiency indicators, for creator evaluation, campaign planning, and marketplace research.
- Return raw JSON only after the short, endpoint-specific summary.
- If the backend errors, include the backend payload and the exact operation ID.
FILE:bin/run.mjs
#!/usr/bin/env node
const manifest = {
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/get-kol-cp-info/v1 for Douyin Creator Marketplace (Xingtu) Cost Performance Analysis through JustOneAPI with kolId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Cost Performance Analysis",
"openapi": "3.1.0",
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_get_kol_cp_info",
"slug": "justoneapi-douyin-xingtu-get-kol-cp-info",
"sourceTitle": "OpenAPI definition",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) cost Performance Analysis data, including pricing, exposure, and engagement efficiency indicators, for creator evaluation, campaign planning, and marketplace research.",
"method": "GET",
"operationId": "getKolCpInfoV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "KOL ID.",
"enumValues": [],
"location": "query",
"name": "kolId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": false,
"description": "Enable cache.",
"enumValues": [],
"location": "query",
"name": "acceptCache",
"required": false,
"schemaType": "boolean"
}
],
"path": "/api/douyin-xingtu/get-kol-cp-info/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Cost Performance Analysis",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"endpointPath": "get-kol-cp-info",
"skillType": "interface"
};
const args = parseArgs(process.argv.slice(2));
if (!args.operation) {
fail("Missing required --operation argument.");
}
const operation = manifest.operations.find((item) => item.operationId === args.operation);
if (!operation) {
fail(`Unknown operation "args.operation".`, { availableOperations: manifest.operations.map((item) => item.operationId) });
}
const params = parseParams(args.paramsJson);
applyDefaults(operation, params);
injectToken(operation, params, args.token);
validateRequired(operation, params);
const baseUrl = manifest.baseUrl;
const url = new URL(operation.path, ensureBaseUrl(baseUrl));
applyPathParams(operation, params, url);
applyQueryParams(operation, params, url);
const requestInit = {
headers: {
"accept": "application/json",
},
method: operation.method,
};
if (operation.requestBody && params.body !== undefined) {
requestInit.body = JSON.stringify(params.body);
requestInit.headers["content-type"] = operation.requestBody.contentType || "application/json";
}
let response;
try {
response = await fetch(url, requestInit);
} catch (error) {
fail("Network request failed.", {
cause: error instanceof Error ? error.message : String(error),
operationId: operation.operationId,
});
}
const rawBody = await response.text();
let parsedBody;
try {
parsedBody = rawBody ? JSON.parse(rawBody) : null;
} catch (error) {
if (!response.ok) {
fail("Backend returned a non-JSON error response.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
fail("Backend returned invalid JSON.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
if (!response.ok) {
fail("Backend request failed.", {
body: parsedBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
process.stdout.write(`JSON.stringify(parsedBody, null, 2)\n`);
function parseArgs(argv) {
const parsed = { operation: null, paramsJson: "{}", token: null };
for (let index = 0; index < argv.length; index += 1) {
const flag = argv[index];
const value = argv[index + 1];
if (flag === "--operation") {
parsed.operation = value;
index += 1;
continue;
}
if (flag === "--params-json") {
parsed.paramsJson = value;
index += 1;
continue;
}
if (flag === "--token") {
parsed.token = value;
index += 1;
continue;
}
fail(`Unknown argument "flag".`);
}
return parsed;
}
function parseParams(input) {
try {
const parsed = JSON.parse(input || "{}");
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
fail("--params-json must decode to a JSON object.");
}
return parsed;
} catch (error) {
fail("Failed to parse --params-json.", {
cause: error instanceof Error ? error.message : String(error),
});
}
}
function applyDefaults(operation, params) {
for (const parameter of operation.parameters) {
if (params[parameter.name] === undefined && parameter.defaultValue !== null) {
params[parameter.name] = parameter.defaultValue;
}
}
}
function injectToken(operation, params, cliToken) {
const tokenParam = operation.parameters.find((parameter) => parameter.name === "token");
if (!tokenParam || params.token !== undefined) {
return;
}
if (!cliToken) {
fail("--token is required for this operation.", {
operationId: operation.operationId,
});
}
params.token = cliToken;
}
function validateRequired(operation, params) {
const missing = [];
for (const parameter of operation.parameters) {
if (parameter.required && params[parameter.name] === undefined) {
missing.push(parameter.name);
}
}
if (operation.requestBody?.required && params.body === undefined) {
missing.push("body");
}
if (missing.length) {
fail("Missing required parameters.", {
missing,
operationId: operation.operationId,
});
}
}
function applyPathParams(operation, params, url) {
let pathname = url.pathname;
for (const parameter of operation.parameters.filter((item) => item.location === "path")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
pathname = pathname.replace(`{parameter.name}`, encodeURIComponent(String(value)));
}
url.pathname = pathname;
}
function applyQueryParams(operation, params, url) {
for (const parameter of operation.parameters.filter((item) => item.location === "query")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
appendValue(url.searchParams, parameter.name, value);
}
}
function appendValue(searchParams, name, value) {
if (Array.isArray(value)) {
for (const item of value) {
appendValue(searchParams, name, item);
}
return;
}
if (value && typeof value === "object") {
searchParams.append(name, JSON.stringify(value));
return;
}
searchParams.append(name, String(value));
}
function ensureBaseUrl(value) {
return value.endsWith("/") ? value : `value/`;
}
function fail(message, details = null) {
const payload = { message };
if (details) {
payload.details = details;
}
process.stderr.write(`JSON.stringify(payload, null, 2)\n`);
process.exit(1);
}
FILE:generated/operations.json
{
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/get-kol-cp-info/v1 for Douyin Creator Marketplace (Xingtu) Cost Performance Analysis through JustOneAPI with kolId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Cost Performance Analysis",
"endpointPath": "get-kol-cp-info",
"openapi": "3.1.0",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) cost Performance Analysis data, including pricing, exposure, and engagement efficiency indicators, for creator evaluation, campaign planning, and marketplace research.",
"method": "GET",
"operationId": "getKolCpInfoV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "KOL ID.",
"enumValues": [],
"location": "query",
"name": "kolId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": false,
"description": "Enable cache.",
"enumValues": [],
"location": "query",
"name": "acceptCache",
"required": false,
"schemaType": "boolean"
}
],
"path": "/api/douyin-xingtu/get-kol-cp-info/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Cost Performance Analysis",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_get_kol_cp_info",
"skillType": "interface",
"slug": "justoneapi-douyin-xingtu-get-kol-cp-info",
"sourceTitle": "OpenAPI definition"
}
FILE:generated/operations.md
# Douyin Creator Marketplace (Xingtu) Cost Performance Analysis operations
Generated from JustOneAPI OpenAPI for platform key `douyin-xingtu`.
Endpoint group: `get-kol-cp-info`.
## `getKolCpInfoV1`
- Method: `GET`
- Path: `/api/douyin-xingtu/get-kol-cp-info/v1`
- Summary: Cost Performance Analysis
- Description: Get Douyin Creator Marketplace (Xingtu) cost Performance Analysis data, including pricing, exposure, and engagement efficiency indicators, for creator evaluation, campaign planning, and marketplace research.
- Tags: `Douyin Creator Marketplace (Xingtu)`
### Parameters
| Name | In | Required | Type | Default | Description |
| --- | --- | --- | --- | --- | --- |
| `token` | `query` | yes | `string` | n/a | User authentication token. |
| `kolId` | `query` | yes | `string` | n/a | KOL ID. |
| `acceptCache` | `query` | no | `boolean` | `false` | Enable cache. |
### Request body
No request body.
### Responses
- `200`: OK
Call GET /api/douyin-xingtu/get-kol-convert-videos-or-products/v1 for Douyin Creator Marketplace (Xingtu) Conversion Resources through JustOneAPI with detail...
---
name: Douyin Creator Marketplace (Xingtu) Conversion Resources API
description: Call GET /api/douyin-xingtu/get-kol-convert-videos-or-products/v1 for Douyin Creator Marketplace (Xingtu) Conversion Resources through JustOneAPI with detailType, kolId, and page.
author: JustOneAPI
homepage: https://api.justoneapi.com
metadata: {"openclaw":{"homepage":"https://api.justoneapi.com","primaryEnv":"JUST_ONE_API_TOKEN","requires":{"bins":["node"],"env":["JUST_ONE_API_TOKEN"]},"skillKey":"justoneapi_douyin_xingtu_get_kol_convert_videos_or_products"}}
---
# Douyin Creator Marketplace (Xingtu) Conversion Resources
Use this focused JustOneAPI skill for conversion Resources in Douyin Creator Marketplace (Xingtu). It targets `GET /api/douyin-xingtu/get-kol-convert-videos-or-products/v1`. Required non-token inputs are `detailType`, `kolId`, and `page`. OpenAPI describes it as: Get Douyin Creator Marketplace (Xingtu) conversion Resources data, including products tied to a Douyin Xingtu creator's conversion activity, for commerce analysis and campaign optimization.
## Endpoint Scope
- Platform key: `douyin-xingtu`
- Endpoint key: `get-kol-convert-videos-or-products`
- Platform family: Douyin Creator Marketplace (Xingtu)
- Skill slug: `justoneapi-douyin-xingtu-get-kol-convert-videos-or-products`
| Operation | Version | Method | Path | OpenAPI summary |
| --- | --- | --- | --- | --- |
| `getKolConvertVideosOrProductsV1` | `v1` | `GET` | `/api/douyin-xingtu/get-kol-convert-videos-or-products/v1` | Conversion Resources |
## Inputs
| Parameter | In | Required by | Optional by | Type | Notes |
| --- | --- | --- | --- | --- | --- |
| `acceptCache` | `query` | n/a | all | `boolean` | Enable cache |
| `detailType` | `query` | all | n/a | `string` | Resource type. Available Values: - `_1`: Video Data - `_2`: Product Data |
| `detailType` enum | values | n/a | n/a | n/a | `_1`, `_2` |
| `kolId` | `query` | all | n/a | `string` | KOL ID |
| `page` | `query` | all | n/a | `integer` | Page number |
Request body: none documented; send parameters through path or query arguments.
## Version Choice
Use `getKolConvertVideosOrProductsV1` for the documented `v1` endpoint. There are no alternate versions grouped in this skill.
## Run This Endpoint
Supported operation IDs in this skill: `getKolConvertVideosOrProductsV1`.
```bash
node {baseDir}/bin/run.mjs --operation "getKolConvertVideosOrProductsV1" --token "$JUST_ONE_API_TOKEN" --params-json '{"kolId":"<kolId>","detailType":"_1","page":1}'
```
Ask for any missing required parameter before calling the helper. Keep user-provided IDs, cursors, keywords, and filters unchanged.
## Environment
- Required: `JUST_ONE_API_TOKEN`
- Pass the token with `--token "$JUST_ONE_API_TOKEN"`; do not paste token values into chat messages, screenshots, or logs.
- Get a token from [Just One API Dashboard](https://dashboard.justoneapi.com/en/login?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_get_kol_convert_videos_or_products&utm_content=project_link).
- Authentication details: [Just One API Usage Guide](https://docs.justoneapi.com/en/?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_get_kol_convert_videos_or_products&utm_content=project_link).
## Output Focus
- State the operation ID and endpoint path used, for example `getKolConvertVideosOrProductsV1` on `/api/douyin-xingtu/get-kol-convert-videos-or-products/v1`.
- Echo the required lookup scope (`detailType`, `kolId`, and `page`) before summarizing results.
- Prioritize fields that support this endpoint purpose: Get Douyin Creator Marketplace (Xingtu) conversion Resources data, including products tied to a Douyin Xingtu creator's conversion activity, for commerce analysis and campaign optimization.
- Return raw JSON only after the short, endpoint-specific summary.
- If the backend errors, include the backend payload and the exact operation ID.
FILE:bin/run.mjs
#!/usr/bin/env node
const manifest = {
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/get-kol-convert-videos-or-products/v1 for Douyin Creator Marketplace (Xingtu) Conversion Resources through JustOneAPI with detailType, kolId, and page.",
"displayName": "Douyin Creator Marketplace (Xingtu) Conversion Resources",
"openapi": "3.1.0",
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_get_kol_convert_videos_or_products",
"slug": "justoneapi-douyin-xingtu-get-kol-convert-videos-or-products",
"sourceTitle": "OpenAPI definition",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) conversion Resources data, including products tied to a Douyin Xingtu creator's conversion activity, for commerce analysis and campaign optimization.",
"method": "GET",
"operationId": "getKolConvertVideosOrProductsV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "KOL ID.",
"enumValues": [],
"location": "query",
"name": "kolId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Resource type.\n\nAvailable Values:\n- `_1`: Video Data\n- `_2`: Product Data",
"enumValues": [
"_1",
"_2"
],
"location": "query",
"name": "detailType",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Page number.",
"enumValues": [],
"location": "query",
"name": "page",
"required": true,
"schemaType": "integer"
},
{
"defaultValue": false,
"description": "Enable cache.",
"enumValues": [],
"location": "query",
"name": "acceptCache",
"required": false,
"schemaType": "boolean"
}
],
"path": "/api/douyin-xingtu/get-kol-convert-videos-or-products/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Conversion Resources",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"endpointPath": "get-kol-convert-videos-or-products",
"skillType": "interface"
};
const args = parseArgs(process.argv.slice(2));
if (!args.operation) {
fail("Missing required --operation argument.");
}
const operation = manifest.operations.find((item) => item.operationId === args.operation);
if (!operation) {
fail(`Unknown operation "args.operation".`, { availableOperations: manifest.operations.map((item) => item.operationId) });
}
const params = parseParams(args.paramsJson);
applyDefaults(operation, params);
injectToken(operation, params, args.token);
validateRequired(operation, params);
const baseUrl = manifest.baseUrl;
const url = new URL(operation.path, ensureBaseUrl(baseUrl));
applyPathParams(operation, params, url);
applyQueryParams(operation, params, url);
const requestInit = {
headers: {
"accept": "application/json",
},
method: operation.method,
};
if (operation.requestBody && params.body !== undefined) {
requestInit.body = JSON.stringify(params.body);
requestInit.headers["content-type"] = operation.requestBody.contentType || "application/json";
}
let response;
try {
response = await fetch(url, requestInit);
} catch (error) {
fail("Network request failed.", {
cause: error instanceof Error ? error.message : String(error),
operationId: operation.operationId,
});
}
const rawBody = await response.text();
let parsedBody;
try {
parsedBody = rawBody ? JSON.parse(rawBody) : null;
} catch (error) {
if (!response.ok) {
fail("Backend returned a non-JSON error response.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
fail("Backend returned invalid JSON.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
if (!response.ok) {
fail("Backend request failed.", {
body: parsedBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
process.stdout.write(`JSON.stringify(parsedBody, null, 2)\n`);
function parseArgs(argv) {
const parsed = { operation: null, paramsJson: "{}", token: null };
for (let index = 0; index < argv.length; index += 1) {
const flag = argv[index];
const value = argv[index + 1];
if (flag === "--operation") {
parsed.operation = value;
index += 1;
continue;
}
if (flag === "--params-json") {
parsed.paramsJson = value;
index += 1;
continue;
}
if (flag === "--token") {
parsed.token = value;
index += 1;
continue;
}
fail(`Unknown argument "flag".`);
}
return parsed;
}
function parseParams(input) {
try {
const parsed = JSON.parse(input || "{}");
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
fail("--params-json must decode to a JSON object.");
}
return parsed;
} catch (error) {
fail("Failed to parse --params-json.", {
cause: error instanceof Error ? error.message : String(error),
});
}
}
function applyDefaults(operation, params) {
for (const parameter of operation.parameters) {
if (params[parameter.name] === undefined && parameter.defaultValue !== null) {
params[parameter.name] = parameter.defaultValue;
}
}
}
function injectToken(operation, params, cliToken) {
const tokenParam = operation.parameters.find((parameter) => parameter.name === "token");
if (!tokenParam || params.token !== undefined) {
return;
}
if (!cliToken) {
fail("--token is required for this operation.", {
operationId: operation.operationId,
});
}
params.token = cliToken;
}
function validateRequired(operation, params) {
const missing = [];
for (const parameter of operation.parameters) {
if (parameter.required && params[parameter.name] === undefined) {
missing.push(parameter.name);
}
}
if (operation.requestBody?.required && params.body === undefined) {
missing.push("body");
}
if (missing.length) {
fail("Missing required parameters.", {
missing,
operationId: operation.operationId,
});
}
}
function applyPathParams(operation, params, url) {
let pathname = url.pathname;
for (const parameter of operation.parameters.filter((item) => item.location === "path")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
pathname = pathname.replace(`{parameter.name}`, encodeURIComponent(String(value)));
}
url.pathname = pathname;
}
function applyQueryParams(operation, params, url) {
for (const parameter of operation.parameters.filter((item) => item.location === "query")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
appendValue(url.searchParams, parameter.name, value);
}
}
function appendValue(searchParams, name, value) {
if (Array.isArray(value)) {
for (const item of value) {
appendValue(searchParams, name, item);
}
return;
}
if (value && typeof value === "object") {
searchParams.append(name, JSON.stringify(value));
return;
}
searchParams.append(name, String(value));
}
function ensureBaseUrl(value) {
return value.endsWith("/") ? value : `value/`;
}
function fail(message, details = null) {
const payload = { message };
if (details) {
payload.details = details;
}
process.stderr.write(`JSON.stringify(payload, null, 2)\n`);
process.exit(1);
}
FILE:generated/operations.json
{
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/get-kol-convert-videos-or-products/v1 for Douyin Creator Marketplace (Xingtu) Conversion Resources through JustOneAPI with detailType, kolId, and page.",
"displayName": "Douyin Creator Marketplace (Xingtu) Conversion Resources",
"endpointPath": "get-kol-convert-videos-or-products",
"openapi": "3.1.0",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) conversion Resources data, including products tied to a Douyin Xingtu creator's conversion activity, for commerce analysis and campaign optimization.",
"method": "GET",
"operationId": "getKolConvertVideosOrProductsV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "KOL ID.",
"enumValues": [],
"location": "query",
"name": "kolId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Resource type.\n\nAvailable Values:\n- `_1`: Video Data\n- `_2`: Product Data",
"enumValues": [
"_1",
"_2"
],
"location": "query",
"name": "detailType",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Page number.",
"enumValues": [],
"location": "query",
"name": "page",
"required": true,
"schemaType": "integer"
},
{
"defaultValue": false,
"description": "Enable cache.",
"enumValues": [],
"location": "query",
"name": "acceptCache",
"required": false,
"schemaType": "boolean"
}
],
"path": "/api/douyin-xingtu/get-kol-convert-videos-or-products/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Conversion Resources",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_get_kol_convert_videos_or_products",
"skillType": "interface",
"slug": "justoneapi-douyin-xingtu-get-kol-convert-videos-or-products",
"sourceTitle": "OpenAPI definition"
}
FILE:generated/operations.md
# Douyin Creator Marketplace (Xingtu) Conversion Resources operations
Generated from JustOneAPI OpenAPI for platform key `douyin-xingtu`.
Endpoint group: `get-kol-convert-videos-or-products`.
## `getKolConvertVideosOrProductsV1`
- Method: `GET`
- Path: `/api/douyin-xingtu/get-kol-convert-videos-or-products/v1`
- Summary: Conversion Resources
- Description: Get Douyin Creator Marketplace (Xingtu) conversion Resources data, including products tied to a Douyin Xingtu creator's conversion activity, for commerce analysis and campaign optimization.
- Tags: `Douyin Creator Marketplace (Xingtu)`
### Parameters
| Name | In | Required | Type | Default | Description |
| --- | --- | --- | --- | --- | --- |
| `token` | `query` | yes | `string` | n/a | User authentication token. |
| `kolId` | `query` | yes | `string` | n/a | KOL ID. |
| `detailType` | `query` | yes | `string` | n/a | Resource type.
Available Values:
- `_1`: Video Data
- `_2`: Product Data |
| enum | values | no | n/a | n/a | `_1`, `_2` |
| `page` | `query` | yes | `integer` | n/a | Page number. |
| `acceptCache` | `query` | no | `boolean` | `false` | Enable cache. |
### Request body
No request body.
### Responses
- `200`: OK
Call GET /api/douyin-xingtu/get-kol-convert-ability/v1 for Douyin Creator Marketplace (Xingtu) Conversion Analysis through JustOneAPI with kolId and range.
---
name: Douyin Creator Marketplace (Xingtu) Conversion Analysis API
description: Call GET /api/douyin-xingtu/get-kol-convert-ability/v1 for Douyin Creator Marketplace (Xingtu) Conversion Analysis through JustOneAPI with kolId and range.
author: JustOneAPI
homepage: https://api.justoneapi.com
metadata: {"openclaw":{"homepage":"https://api.justoneapi.com","primaryEnv":"JUST_ONE_API_TOKEN","requires":{"bins":["node"],"env":["JUST_ONE_API_TOKEN"]},"skillKey":"justoneapi_douyin_xingtu_get_kol_convert_ability"}}
---
# Douyin Creator Marketplace (Xingtu) Conversion Analysis
Use this focused JustOneAPI skill for conversion Analysis in Douyin Creator Marketplace (Xingtu). It targets `GET /api/douyin-xingtu/get-kol-convert-ability/v1`. Required non-token inputs are `kolId` and `range`. OpenAPI describes it as: Get Douyin Creator Marketplace (Xingtu) conversion Analysis data, including conversion efficiency and commercial performance indicators, for creator evaluation, campaign planning, and marketplace research.
## Endpoint Scope
- Platform key: `douyin-xingtu`
- Endpoint key: `get-kol-convert-ability`
- Platform family: Douyin Creator Marketplace (Xingtu)
- Skill slug: `justoneapi-douyin-xingtu-get-kol-convert-ability`
| Operation | Version | Method | Path | OpenAPI summary |
| --- | --- | --- | --- | --- |
| `getKolConvertAbilityV1` | `v1` | `GET` | `/api/douyin-xingtu/get-kol-convert-ability/v1` | Conversion Analysis |
## Inputs
| Parameter | In | Required by | Optional by | Type | Notes |
| --- | --- | --- | --- | --- | --- |
| `acceptCache` | `query` | n/a | all | `boolean` | Enable cache |
| `kolId` | `query` | all | n/a | `string` | KOL ID |
| `range` | `query` | all | n/a | `string` | Time range. Available Values: - `_1`: Last 7 days - `_2`: Last 30 days - `_3`: Last 90 days |
| `range` enum | values | n/a | n/a | n/a | `_1`, `_2`, `_3` |
Request body: none documented; send parameters through path or query arguments.
## Version Choice
Use `getKolConvertAbilityV1` for the documented `v1` endpoint. There are no alternate versions grouped in this skill.
## Run This Endpoint
Supported operation IDs in this skill: `getKolConvertAbilityV1`.
```bash
node {baseDir}/bin/run.mjs --operation "getKolConvertAbilityV1" --token "$JUST_ONE_API_TOKEN" --params-json '{"kolId":"<kolId>","range":"_1"}'
```
Ask for any missing required parameter before calling the helper. Keep user-provided IDs, cursors, keywords, and filters unchanged.
## Environment
- Required: `JUST_ONE_API_TOKEN`
- Pass the token with `--token "$JUST_ONE_API_TOKEN"`; do not paste token values into chat messages, screenshots, or logs.
- Get a token from [Just One API Dashboard](https://dashboard.justoneapi.com/en/login?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_get_kol_convert_ability&utm_content=project_link).
- Authentication details: [Just One API Usage Guide](https://docs.justoneapi.com/en/?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_get_kol_convert_ability&utm_content=project_link).
## Output Focus
- State the operation ID and endpoint path used, for example `getKolConvertAbilityV1` on `/api/douyin-xingtu/get-kol-convert-ability/v1`.
- Echo the required lookup scope (`kolId` and `range`) before summarizing results.
- Prioritize fields that support this endpoint purpose: Get Douyin Creator Marketplace (Xingtu) conversion Analysis data, including conversion efficiency and commercial performance indicators, for creator evaluation, campaign planning, and marketplace research.
- Return raw JSON only after the short, endpoint-specific summary.
- If the backend errors, include the backend payload and the exact operation ID.
FILE:bin/run.mjs
#!/usr/bin/env node
const manifest = {
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/get-kol-convert-ability/v1 for Douyin Creator Marketplace (Xingtu) Conversion Analysis through JustOneAPI with kolId and range.",
"displayName": "Douyin Creator Marketplace (Xingtu) Conversion Analysis",
"openapi": "3.1.0",
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_get_kol_convert_ability",
"slug": "justoneapi-douyin-xingtu-get-kol-convert-ability",
"sourceTitle": "OpenAPI definition",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) conversion Analysis data, including conversion efficiency and commercial performance indicators, for creator evaluation, campaign planning, and marketplace research.",
"method": "GET",
"operationId": "getKolConvertAbilityV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "KOL ID.",
"enumValues": [],
"location": "query",
"name": "kolId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Time range.\n\nAvailable Values:\n- `_1`: Last 7 days\n- `_2`: Last 30 days\n- `_3`: Last 90 days",
"enumValues": [
"_1",
"_2",
"_3"
],
"location": "query",
"name": "range",
"required": true,
"schemaType": "string"
},
{
"defaultValue": false,
"description": "Enable cache.",
"enumValues": [],
"location": "query",
"name": "acceptCache",
"required": false,
"schemaType": "boolean"
}
],
"path": "/api/douyin-xingtu/get-kol-convert-ability/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Conversion Analysis",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"endpointPath": "get-kol-convert-ability",
"skillType": "interface"
};
const args = parseArgs(process.argv.slice(2));
if (!args.operation) {
fail("Missing required --operation argument.");
}
const operation = manifest.operations.find((item) => item.operationId === args.operation);
if (!operation) {
fail(`Unknown operation "args.operation".`, { availableOperations: manifest.operations.map((item) => item.operationId) });
}
const params = parseParams(args.paramsJson);
applyDefaults(operation, params);
injectToken(operation, params, args.token);
validateRequired(operation, params);
const baseUrl = manifest.baseUrl;
const url = new URL(operation.path, ensureBaseUrl(baseUrl));
applyPathParams(operation, params, url);
applyQueryParams(operation, params, url);
const requestInit = {
headers: {
"accept": "application/json",
},
method: operation.method,
};
if (operation.requestBody && params.body !== undefined) {
requestInit.body = JSON.stringify(params.body);
requestInit.headers["content-type"] = operation.requestBody.contentType || "application/json";
}
let response;
try {
response = await fetch(url, requestInit);
} catch (error) {
fail("Network request failed.", {
cause: error instanceof Error ? error.message : String(error),
operationId: operation.operationId,
});
}
const rawBody = await response.text();
let parsedBody;
try {
parsedBody = rawBody ? JSON.parse(rawBody) : null;
} catch (error) {
if (!response.ok) {
fail("Backend returned a non-JSON error response.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
fail("Backend returned invalid JSON.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
if (!response.ok) {
fail("Backend request failed.", {
body: parsedBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
process.stdout.write(`JSON.stringify(parsedBody, null, 2)\n`);
function parseArgs(argv) {
const parsed = { operation: null, paramsJson: "{}", token: null };
for (let index = 0; index < argv.length; index += 1) {
const flag = argv[index];
const value = argv[index + 1];
if (flag === "--operation") {
parsed.operation = value;
index += 1;
continue;
}
if (flag === "--params-json") {
parsed.paramsJson = value;
index += 1;
continue;
}
if (flag === "--token") {
parsed.token = value;
index += 1;
continue;
}
fail(`Unknown argument "flag".`);
}
return parsed;
}
function parseParams(input) {
try {
const parsed = JSON.parse(input || "{}");
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
fail("--params-json must decode to a JSON object.");
}
return parsed;
} catch (error) {
fail("Failed to parse --params-json.", {
cause: error instanceof Error ? error.message : String(error),
});
}
}
function applyDefaults(operation, params) {
for (const parameter of operation.parameters) {
if (params[parameter.name] === undefined && parameter.defaultValue !== null) {
params[parameter.name] = parameter.defaultValue;
}
}
}
function injectToken(operation, params, cliToken) {
const tokenParam = operation.parameters.find((parameter) => parameter.name === "token");
if (!tokenParam || params.token !== undefined) {
return;
}
if (!cliToken) {
fail("--token is required for this operation.", {
operationId: operation.operationId,
});
}
params.token = cliToken;
}
function validateRequired(operation, params) {
const missing = [];
for (const parameter of operation.parameters) {
if (parameter.required && params[parameter.name] === undefined) {
missing.push(parameter.name);
}
}
if (operation.requestBody?.required && params.body === undefined) {
missing.push("body");
}
if (missing.length) {
fail("Missing required parameters.", {
missing,
operationId: operation.operationId,
});
}
}
function applyPathParams(operation, params, url) {
let pathname = url.pathname;
for (const parameter of operation.parameters.filter((item) => item.location === "path")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
pathname = pathname.replace(`{parameter.name}`, encodeURIComponent(String(value)));
}
url.pathname = pathname;
}
function applyQueryParams(operation, params, url) {
for (const parameter of operation.parameters.filter((item) => item.location === "query")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
appendValue(url.searchParams, parameter.name, value);
}
}
function appendValue(searchParams, name, value) {
if (Array.isArray(value)) {
for (const item of value) {
appendValue(searchParams, name, item);
}
return;
}
if (value && typeof value === "object") {
searchParams.append(name, JSON.stringify(value));
return;
}
searchParams.append(name, String(value));
}
function ensureBaseUrl(value) {
return value.endsWith("/") ? value : `value/`;
}
function fail(message, details = null) {
const payload = { message };
if (details) {
payload.details = details;
}
process.stderr.write(`JSON.stringify(payload, null, 2)\n`);
process.exit(1);
}
FILE:generated/operations.json
{
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/get-kol-convert-ability/v1 for Douyin Creator Marketplace (Xingtu) Conversion Analysis through JustOneAPI with kolId and range.",
"displayName": "Douyin Creator Marketplace (Xingtu) Conversion Analysis",
"endpointPath": "get-kol-convert-ability",
"openapi": "3.1.0",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) conversion Analysis data, including conversion efficiency and commercial performance indicators, for creator evaluation, campaign planning, and marketplace research.",
"method": "GET",
"operationId": "getKolConvertAbilityV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "KOL ID.",
"enumValues": [],
"location": "query",
"name": "kolId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Time range.\n\nAvailable Values:\n- `_1`: Last 7 days\n- `_2`: Last 30 days\n- `_3`: Last 90 days",
"enumValues": [
"_1",
"_2",
"_3"
],
"location": "query",
"name": "range",
"required": true,
"schemaType": "string"
},
{
"defaultValue": false,
"description": "Enable cache.",
"enumValues": [],
"location": "query",
"name": "acceptCache",
"required": false,
"schemaType": "boolean"
}
],
"path": "/api/douyin-xingtu/get-kol-convert-ability/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Conversion Analysis",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_get_kol_convert_ability",
"skillType": "interface",
"slug": "justoneapi-douyin-xingtu-get-kol-convert-ability",
"sourceTitle": "OpenAPI definition"
}
FILE:generated/operations.md
# Douyin Creator Marketplace (Xingtu) Conversion Analysis operations
Generated from JustOneAPI OpenAPI for platform key `douyin-xingtu`.
Endpoint group: `get-kol-convert-ability`.
## `getKolConvertAbilityV1`
- Method: `GET`
- Path: `/api/douyin-xingtu/get-kol-convert-ability/v1`
- Summary: Conversion Analysis
- Description: Get Douyin Creator Marketplace (Xingtu) conversion Analysis data, including conversion efficiency and commercial performance indicators, for creator evaluation, campaign planning, and marketplace research.
- Tags: `Douyin Creator Marketplace (Xingtu)`
### Parameters
| Name | In | Required | Type | Default | Description |
| --- | --- | --- | --- | --- | --- |
| `token` | `query` | yes | `string` | n/a | User authentication token. |
| `kolId` | `query` | yes | `string` | n/a | KOL ID. |
| `range` | `query` | yes | `string` | n/a | Time range.
Available Values:
- `_1`: Last 7 days
- `_2`: Last 30 days
- `_3`: Last 90 days |
| enum | values | no | n/a | n/a | `_1`, `_2`, `_3` |
| `acceptCache` | `query` | no | `boolean` | `false` | Enable cache. |
### Request body
No request body.
### Responses
- `200`: OK
Call GET /api/douyin-xingtu/get-kol-audience-distribution/v1 for Douyin Creator Marketplace (Xingtu) Audience Distribution through JustOneAPI with kolId.
---
name: Douyin Creator Marketplace (Xingtu) Audience Distribution API
description: Call GET /api/douyin-xingtu/get-kol-audience-distribution/v1 for Douyin Creator Marketplace (Xingtu) Audience Distribution through JustOneAPI with kolId.
author: JustOneAPI
homepage: https://api.justoneapi.com
metadata: {"openclaw":{"homepage":"https://api.justoneapi.com","primaryEnv":"JUST_ONE_API_TOKEN","requires":{"bins":["node"],"env":["JUST_ONE_API_TOKEN"]},"skillKey":"justoneapi_douyin_xingtu_get_kol_audience_distribution"}}
---
# Douyin Creator Marketplace (Xingtu) Audience Distribution
Use this focused JustOneAPI skill for audience Distribution in Douyin Creator Marketplace (Xingtu). It targets `GET /api/douyin-xingtu/get-kol-audience-distribution/v1`. Required non-token inputs are `kolId`. OpenAPI describes it as: Get Douyin Creator Marketplace (Xingtu) audience Distribution data, including demographic and interest-based audience segmentation, for creator evaluation, campaign planning, and marketplace research.
## Endpoint Scope
- Platform key: `douyin-xingtu`
- Endpoint key: `get-kol-audience-distribution`
- Platform family: Douyin Creator Marketplace (Xingtu)
- Skill slug: `justoneapi-douyin-xingtu-get-kol-audience-distribution`
| Operation | Version | Method | Path | OpenAPI summary |
| --- | --- | --- | --- | --- |
| `getKolAudienceDistributionV1` | `v1` | `GET` | `/api/douyin-xingtu/get-kol-audience-distribution/v1` | Audience Distribution |
## Inputs
| Parameter | In | Required by | Optional by | Type | Notes |
| --- | --- | --- | --- | --- | --- |
| `acceptCache` | `query` | n/a | all | `boolean` | Enable cache |
| `kolId` | `query` | all | n/a | `string` | KOL ID |
Request body: none documented; send parameters through path or query arguments.
## Version Choice
Use `getKolAudienceDistributionV1` for the documented `v1` endpoint. There are no alternate versions grouped in this skill.
## Run This Endpoint
Supported operation IDs in this skill: `getKolAudienceDistributionV1`.
```bash
node {baseDir}/bin/run.mjs --operation "getKolAudienceDistributionV1" --token "$JUST_ONE_API_TOKEN" --params-json '{"kolId":"<kolId>"}'
```
Ask for any missing required parameter before calling the helper. Keep user-provided IDs, cursors, keywords, and filters unchanged.
## Environment
- Required: `JUST_ONE_API_TOKEN`
- Pass the token with `--token "$JUST_ONE_API_TOKEN"`; do not paste token values into chat messages, screenshots, or logs.
- Get a token from [Just One API Dashboard](https://dashboard.justoneapi.com/en/login?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_get_kol_audience_distribution&utm_content=project_link).
- Authentication details: [Just One API Usage Guide](https://docs.justoneapi.com/en/?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_get_kol_audience_distribution&utm_content=project_link).
## Output Focus
- State the operation ID and endpoint path used, for example `getKolAudienceDistributionV1` on `/api/douyin-xingtu/get-kol-audience-distribution/v1`.
- Echo the required lookup scope (`kolId`) before summarizing results.
- Prioritize fields that support this endpoint purpose: Get Douyin Creator Marketplace (Xingtu) audience Distribution data, including demographic and interest-based audience segmentation, for creator evaluation, campaign planning, and marketplace research.
- Return raw JSON only after the short, endpoint-specific summary.
- If the backend errors, include the backend payload and the exact operation ID.
FILE:bin/run.mjs
#!/usr/bin/env node
const manifest = {
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/get-kol-audience-distribution/v1 for Douyin Creator Marketplace (Xingtu) Audience Distribution through JustOneAPI with kolId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Audience Distribution",
"openapi": "3.1.0",
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_get_kol_audience_distribution",
"slug": "justoneapi-douyin-xingtu-get-kol-audience-distribution",
"sourceTitle": "OpenAPI definition",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) audience Distribution data, including demographic and interest-based audience segmentation, for creator evaluation, campaign planning, and marketplace research.",
"method": "GET",
"operationId": "getKolAudienceDistributionV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "KOL ID.",
"enumValues": [],
"location": "query",
"name": "kolId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": false,
"description": "Enable cache.",
"enumValues": [],
"location": "query",
"name": "acceptCache",
"required": false,
"schemaType": "boolean"
}
],
"path": "/api/douyin-xingtu/get-kol-audience-distribution/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Audience Distribution",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"endpointPath": "get-kol-audience-distribution",
"skillType": "interface"
};
const args = parseArgs(process.argv.slice(2));
if (!args.operation) {
fail("Missing required --operation argument.");
}
const operation = manifest.operations.find((item) => item.operationId === args.operation);
if (!operation) {
fail(`Unknown operation "args.operation".`, { availableOperations: manifest.operations.map((item) => item.operationId) });
}
const params = parseParams(args.paramsJson);
applyDefaults(operation, params);
injectToken(operation, params, args.token);
validateRequired(operation, params);
const baseUrl = manifest.baseUrl;
const url = new URL(operation.path, ensureBaseUrl(baseUrl));
applyPathParams(operation, params, url);
applyQueryParams(operation, params, url);
const requestInit = {
headers: {
"accept": "application/json",
},
method: operation.method,
};
if (operation.requestBody && params.body !== undefined) {
requestInit.body = JSON.stringify(params.body);
requestInit.headers["content-type"] = operation.requestBody.contentType || "application/json";
}
let response;
try {
response = await fetch(url, requestInit);
} catch (error) {
fail("Network request failed.", {
cause: error instanceof Error ? error.message : String(error),
operationId: operation.operationId,
});
}
const rawBody = await response.text();
let parsedBody;
try {
parsedBody = rawBody ? JSON.parse(rawBody) : null;
} catch (error) {
if (!response.ok) {
fail("Backend returned a non-JSON error response.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
fail("Backend returned invalid JSON.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
if (!response.ok) {
fail("Backend request failed.", {
body: parsedBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
process.stdout.write(`JSON.stringify(parsedBody, null, 2)\n`);
function parseArgs(argv) {
const parsed = { operation: null, paramsJson: "{}", token: null };
for (let index = 0; index < argv.length; index += 1) {
const flag = argv[index];
const value = argv[index + 1];
if (flag === "--operation") {
parsed.operation = value;
index += 1;
continue;
}
if (flag === "--params-json") {
parsed.paramsJson = value;
index += 1;
continue;
}
if (flag === "--token") {
parsed.token = value;
index += 1;
continue;
}
fail(`Unknown argument "flag".`);
}
return parsed;
}
function parseParams(input) {
try {
const parsed = JSON.parse(input || "{}");
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
fail("--params-json must decode to a JSON object.");
}
return parsed;
} catch (error) {
fail("Failed to parse --params-json.", {
cause: error instanceof Error ? error.message : String(error),
});
}
}
function applyDefaults(operation, params) {
for (const parameter of operation.parameters) {
if (params[parameter.name] === undefined && parameter.defaultValue !== null) {
params[parameter.name] = parameter.defaultValue;
}
}
}
function injectToken(operation, params, cliToken) {
const tokenParam = operation.parameters.find((parameter) => parameter.name === "token");
if (!tokenParam || params.token !== undefined) {
return;
}
if (!cliToken) {
fail("--token is required for this operation.", {
operationId: operation.operationId,
});
}
params.token = cliToken;
}
function validateRequired(operation, params) {
const missing = [];
for (const parameter of operation.parameters) {
if (parameter.required && params[parameter.name] === undefined) {
missing.push(parameter.name);
}
}
if (operation.requestBody?.required && params.body === undefined) {
missing.push("body");
}
if (missing.length) {
fail("Missing required parameters.", {
missing,
operationId: operation.operationId,
});
}
}
function applyPathParams(operation, params, url) {
let pathname = url.pathname;
for (const parameter of operation.parameters.filter((item) => item.location === "path")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
pathname = pathname.replace(`{parameter.name}`, encodeURIComponent(String(value)));
}
url.pathname = pathname;
}
function applyQueryParams(operation, params, url) {
for (const parameter of operation.parameters.filter((item) => item.location === "query")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
appendValue(url.searchParams, parameter.name, value);
}
}
function appendValue(searchParams, name, value) {
if (Array.isArray(value)) {
for (const item of value) {
appendValue(searchParams, name, item);
}
return;
}
if (value && typeof value === "object") {
searchParams.append(name, JSON.stringify(value));
return;
}
searchParams.append(name, String(value));
}
function ensureBaseUrl(value) {
return value.endsWith("/") ? value : `value/`;
}
function fail(message, details = null) {
const payload = { message };
if (details) {
payload.details = details;
}
process.stderr.write(`JSON.stringify(payload, null, 2)\n`);
process.exit(1);
}
FILE:generated/operations.json
{
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/get-kol-audience-distribution/v1 for Douyin Creator Marketplace (Xingtu) Audience Distribution through JustOneAPI with kolId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Audience Distribution",
"endpointPath": "get-kol-audience-distribution",
"openapi": "3.1.0",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) audience Distribution data, including demographic and interest-based audience segmentation, for creator evaluation, campaign planning, and marketplace research.",
"method": "GET",
"operationId": "getKolAudienceDistributionV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "KOL ID.",
"enumValues": [],
"location": "query",
"name": "kolId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": false,
"description": "Enable cache.",
"enumValues": [],
"location": "query",
"name": "acceptCache",
"required": false,
"schemaType": "boolean"
}
],
"path": "/api/douyin-xingtu/get-kol-audience-distribution/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Audience Distribution",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_get_kol_audience_distribution",
"skillType": "interface",
"slug": "justoneapi-douyin-xingtu-get-kol-audience-distribution",
"sourceTitle": "OpenAPI definition"
}
FILE:generated/operations.md
# Douyin Creator Marketplace (Xingtu) Audience Distribution operations
Generated from JustOneAPI OpenAPI for platform key `douyin-xingtu`.
Endpoint group: `get-kol-audience-distribution`.
## `getKolAudienceDistributionV1`
- Method: `GET`
- Path: `/api/douyin-xingtu/get-kol-audience-distribution/v1`
- Summary: Audience Distribution
- Description: Get Douyin Creator Marketplace (Xingtu) audience Distribution data, including demographic and interest-based audience segmentation, for creator evaluation, campaign planning, and marketplace research.
- Tags: `Douyin Creator Marketplace (Xingtu)`
### Parameters
| Name | In | Required | Type | Default | Description |
| --- | --- | --- | --- | --- | --- |
| `token` | `query` | yes | `string` | n/a | User authentication token. |
| `kolId` | `query` | yes | `string` | n/a | KOL ID. |
| `acceptCache` | `query` | no | `boolean` | `false` | Enable cache. |
### Request body
No request body.
### Responses
- `200`: OK
Call GET /api/douyin-xingtu/get-author-hot-comment-tokens/v1 for Douyin Creator Marketplace (Xingtu) KOL Comment Keyword Analysis through JustOneAPI with kolId.
---
name: Douyin Creator Marketplace (Xingtu) KOL Comment Keyword Analysis API
description: Call GET /api/douyin-xingtu/get-author-hot-comment-tokens/v1 for Douyin Creator Marketplace (Xingtu) KOL Comment Keyword Analysis through JustOneAPI with kolId.
author: JustOneAPI
homepage: https://api.justoneapi.com
metadata: {"openclaw":{"homepage":"https://api.justoneapi.com","primaryEnv":"JUST_ONE_API_TOKEN","requires":{"bins":["node"],"env":["JUST_ONE_API_TOKEN"]},"skillKey":"justoneapi_douyin_xingtu_get_author_hot_comment_tokens"}}
---
# Douyin Creator Marketplace (Xingtu) KOL Comment Keyword Analysis
Use this focused JustOneAPI skill for kOL Comment Keyword Analysis in Douyin Creator Marketplace (Xingtu). It targets `GET /api/douyin-xingtu/get-author-hot-comment-tokens/v1`. Required non-token inputs are `kolId`. OpenAPI describes it as: Get Douyin Creator Marketplace (Xingtu) kOL Comment Keyword Analysis data, including core metrics, trend signals, and performance indicators, for audience language analysis and comment-topic research.
## Endpoint Scope
- Platform key: `douyin-xingtu`
- Endpoint key: `get-author-hot-comment-tokens`
- Platform family: Douyin Creator Marketplace (Xingtu)
- Skill slug: `justoneapi-douyin-xingtu-get-author-hot-comment-tokens`
| Operation | Version | Method | Path | OpenAPI summary |
| --- | --- | --- | --- | --- |
| `getAuthorHotCommentTokensV1` | `v1` | `GET` | `/api/douyin-xingtu/get-author-hot-comment-tokens/v1` | KOL Comment Keyword Analysis |
## Inputs
| Parameter | In | Required by | Optional by | Type | Notes |
| --- | --- | --- | --- | --- | --- |
| `acceptCache` | `query` | n/a | all | `boolean` | Enable cache |
| `kolId` | `query` | all | n/a | `string` | KOL ID |
Request body: none documented; send parameters through path or query arguments.
## Version Choice
Use `getAuthorHotCommentTokensV1` for the documented `v1` endpoint. There are no alternate versions grouped in this skill.
## Run This Endpoint
Supported operation IDs in this skill: `getAuthorHotCommentTokensV1`.
```bash
node {baseDir}/bin/run.mjs --operation "getAuthorHotCommentTokensV1" --token "$JUST_ONE_API_TOKEN" --params-json '{"kolId":"<kolId>"}'
```
Ask for any missing required parameter before calling the helper. Keep user-provided IDs, cursors, keywords, and filters unchanged.
## Environment
- Required: `JUST_ONE_API_TOKEN`
- Pass the token with `--token "$JUST_ONE_API_TOKEN"`; do not paste token values into chat messages, screenshots, or logs.
- Get a token from [Just One API Dashboard](https://dashboard.justoneapi.com/en/login?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_get_author_hot_comment_tokens&utm_content=project_link).
- Authentication details: [Just One API Usage Guide](https://docs.justoneapi.com/en/?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_get_author_hot_comment_tokens&utm_content=project_link).
## Output Focus
- State the operation ID and endpoint path used, for example `getAuthorHotCommentTokensV1` on `/api/douyin-xingtu/get-author-hot-comment-tokens/v1`.
- Echo the required lookup scope (`kolId`) before summarizing results.
- Prioritize fields that support this endpoint purpose: Get Douyin Creator Marketplace (Xingtu) kOL Comment Keyword Analysis data, including core metrics, trend signals, and performance indicators, for audience language analysis and comment-topic research.
- Return raw JSON only after the short, endpoint-specific summary.
- If the backend errors, include the backend payload and the exact operation ID.
FILE:bin/run.mjs
#!/usr/bin/env node
const manifest = {
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/get-author-hot-comment-tokens/v1 for Douyin Creator Marketplace (Xingtu) KOL Comment Keyword Analysis through JustOneAPI with kolId.",
"displayName": "Douyin Creator Marketplace (Xingtu) KOL Comment Keyword Analysis",
"openapi": "3.1.0",
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_get_author_hot_comment_tokens",
"slug": "justoneapi-douyin-xingtu-get-author-hot-comment-tokens",
"sourceTitle": "OpenAPI definition",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) kOL Comment Keyword Analysis data, including core metrics, trend signals, and performance indicators, for audience language analysis and comment-topic research.",
"method": "GET",
"operationId": "getAuthorHotCommentTokensV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "KOL ID.",
"enumValues": [],
"location": "query",
"name": "kolId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": false,
"description": "Enable cache.",
"enumValues": [],
"location": "query",
"name": "acceptCache",
"required": false,
"schemaType": "boolean"
}
],
"path": "/api/douyin-xingtu/get-author-hot-comment-tokens/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "KOL Comment Keyword Analysis",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"endpointPath": "get-author-hot-comment-tokens",
"skillType": "interface"
};
const args = parseArgs(process.argv.slice(2));
if (!args.operation) {
fail("Missing required --operation argument.");
}
const operation = manifest.operations.find((item) => item.operationId === args.operation);
if (!operation) {
fail(`Unknown operation "args.operation".`, { availableOperations: manifest.operations.map((item) => item.operationId) });
}
const params = parseParams(args.paramsJson);
applyDefaults(operation, params);
injectToken(operation, params, args.token);
validateRequired(operation, params);
const baseUrl = manifest.baseUrl;
const url = new URL(operation.path, ensureBaseUrl(baseUrl));
applyPathParams(operation, params, url);
applyQueryParams(operation, params, url);
const requestInit = {
headers: {
"accept": "application/json",
},
method: operation.method,
};
if (operation.requestBody && params.body !== undefined) {
requestInit.body = JSON.stringify(params.body);
requestInit.headers["content-type"] = operation.requestBody.contentType || "application/json";
}
let response;
try {
response = await fetch(url, requestInit);
} catch (error) {
fail("Network request failed.", {
cause: error instanceof Error ? error.message : String(error),
operationId: operation.operationId,
});
}
const rawBody = await response.text();
let parsedBody;
try {
parsedBody = rawBody ? JSON.parse(rawBody) : null;
} catch (error) {
if (!response.ok) {
fail("Backend returned a non-JSON error response.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
fail("Backend returned invalid JSON.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
if (!response.ok) {
fail("Backend request failed.", {
body: parsedBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
process.stdout.write(`JSON.stringify(parsedBody, null, 2)\n`);
function parseArgs(argv) {
const parsed = { operation: null, paramsJson: "{}", token: null };
for (let index = 0; index < argv.length; index += 1) {
const flag = argv[index];
const value = argv[index + 1];
if (flag === "--operation") {
parsed.operation = value;
index += 1;
continue;
}
if (flag === "--params-json") {
parsed.paramsJson = value;
index += 1;
continue;
}
if (flag === "--token") {
parsed.token = value;
index += 1;
continue;
}
fail(`Unknown argument "flag".`);
}
return parsed;
}
function parseParams(input) {
try {
const parsed = JSON.parse(input || "{}");
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
fail("--params-json must decode to a JSON object.");
}
return parsed;
} catch (error) {
fail("Failed to parse --params-json.", {
cause: error instanceof Error ? error.message : String(error),
});
}
}
function applyDefaults(operation, params) {
for (const parameter of operation.parameters) {
if (params[parameter.name] === undefined && parameter.defaultValue !== null) {
params[parameter.name] = parameter.defaultValue;
}
}
}
function injectToken(operation, params, cliToken) {
const tokenParam = operation.parameters.find((parameter) => parameter.name === "token");
if (!tokenParam || params.token !== undefined) {
return;
}
if (!cliToken) {
fail("--token is required for this operation.", {
operationId: operation.operationId,
});
}
params.token = cliToken;
}
function validateRequired(operation, params) {
const missing = [];
for (const parameter of operation.parameters) {
if (parameter.required && params[parameter.name] === undefined) {
missing.push(parameter.name);
}
}
if (operation.requestBody?.required && params.body === undefined) {
missing.push("body");
}
if (missing.length) {
fail("Missing required parameters.", {
missing,
operationId: operation.operationId,
});
}
}
function applyPathParams(operation, params, url) {
let pathname = url.pathname;
for (const parameter of operation.parameters.filter((item) => item.location === "path")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
pathname = pathname.replace(`{parameter.name}`, encodeURIComponent(String(value)));
}
url.pathname = pathname;
}
function applyQueryParams(operation, params, url) {
for (const parameter of operation.parameters.filter((item) => item.location === "query")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
appendValue(url.searchParams, parameter.name, value);
}
}
function appendValue(searchParams, name, value) {
if (Array.isArray(value)) {
for (const item of value) {
appendValue(searchParams, name, item);
}
return;
}
if (value && typeof value === "object") {
searchParams.append(name, JSON.stringify(value));
return;
}
searchParams.append(name, String(value));
}
function ensureBaseUrl(value) {
return value.endsWith("/") ? value : `value/`;
}
function fail(message, details = null) {
const payload = { message };
if (details) {
payload.details = details;
}
process.stderr.write(`JSON.stringify(payload, null, 2)\n`);
process.exit(1);
}
FILE:generated/operations.json
{
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/get-author-hot-comment-tokens/v1 for Douyin Creator Marketplace (Xingtu) KOL Comment Keyword Analysis through JustOneAPI with kolId.",
"displayName": "Douyin Creator Marketplace (Xingtu) KOL Comment Keyword Analysis",
"endpointPath": "get-author-hot-comment-tokens",
"openapi": "3.1.0",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) kOL Comment Keyword Analysis data, including core metrics, trend signals, and performance indicators, for audience language analysis and comment-topic research.",
"method": "GET",
"operationId": "getAuthorHotCommentTokensV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "KOL ID.",
"enumValues": [],
"location": "query",
"name": "kolId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": false,
"description": "Enable cache.",
"enumValues": [],
"location": "query",
"name": "acceptCache",
"required": false,
"schemaType": "boolean"
}
],
"path": "/api/douyin-xingtu/get-author-hot-comment-tokens/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "KOL Comment Keyword Analysis",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_get_author_hot_comment_tokens",
"skillType": "interface",
"slug": "justoneapi-douyin-xingtu-get-author-hot-comment-tokens",
"sourceTitle": "OpenAPI definition"
}
FILE:generated/operations.md
# Douyin Creator Marketplace (Xingtu) KOL Comment Keyword Analysis operations
Generated from JustOneAPI OpenAPI for platform key `douyin-xingtu`.
Endpoint group: `get-author-hot-comment-tokens`.
## `getAuthorHotCommentTokensV1`
- Method: `GET`
- Path: `/api/douyin-xingtu/get-author-hot-comment-tokens/v1`
- Summary: KOL Comment Keyword Analysis
- Description: Get Douyin Creator Marketplace (Xingtu) kOL Comment Keyword Analysis data, including core metrics, trend signals, and performance indicators, for audience language analysis and comment-topic research.
- Tags: `Douyin Creator Marketplace (Xingtu)`
### Parameters
| Name | In | Required | Type | Default | Description |
| --- | --- | --- | --- | --- | --- |
| `token` | `query` | yes | `string` | n/a | User authentication token. |
| `kolId` | `query` | yes | `string` | n/a | KOL ID. |
| `acceptCache` | `query` | no | `boolean` | `false` | Enable cache. |
### Request body
No request body.
### Responses
- `200`: OK
Call GET /api/douyin-xingtu/get-author-content-hot-keywords/v1 for Douyin Creator Marketplace (Xingtu) KOL Content Keyword Analysis through JustOneAPI with k...
---
name: Douyin Creator Marketplace (Xingtu) KOL Content Keyword Analysis API
description: Call GET /api/douyin-xingtu/get-author-content-hot-keywords/v1 for Douyin Creator Marketplace (Xingtu) KOL Content Keyword Analysis through JustOneAPI with kolId.
author: JustOneAPI
homepage: https://api.justoneapi.com
metadata: {"openclaw":{"homepage":"https://api.justoneapi.com","primaryEnv":"JUST_ONE_API_TOKEN","requires":{"bins":["node"],"env":["JUST_ONE_API_TOKEN"]},"skillKey":"justoneapi_douyin_xingtu_get_author_content_hot_keywords"}}
---
# Douyin Creator Marketplace (Xingtu) KOL Content Keyword Analysis
Use this focused JustOneAPI skill for kOL Content Keyword Analysis in Douyin Creator Marketplace (Xingtu). It targets `GET /api/douyin-xingtu/get-author-content-hot-keywords/v1`. Required non-token inputs are `kolId`. OpenAPI describes it as: Get Douyin Creator Marketplace (Xingtu) kOL Content Keyword Analysis data, including core metrics, trend signals, and performance indicators, for content theme analysis and creator positioning research.
## Endpoint Scope
- Platform key: `douyin-xingtu`
- Endpoint key: `get-author-content-hot-keywords`
- Platform family: Douyin Creator Marketplace (Xingtu)
- Skill slug: `justoneapi-douyin-xingtu-get-author-content-hot-keywords`
| Operation | Version | Method | Path | OpenAPI summary |
| --- | --- | --- | --- | --- |
| `getAuthorContentHotKeywordsV1` | `v1` | `GET` | `/api/douyin-xingtu/get-author-content-hot-keywords/v1` | KOL Content Keyword Analysis |
## Inputs
| Parameter | In | Required by | Optional by | Type | Notes |
| --- | --- | --- | --- | --- | --- |
| `acceptCache` | `query` | n/a | all | `boolean` | Enable cache |
| `keywordType` | `query` | n/a | all | `string` | Type of keywords |
| `kolId` | `query` | all | n/a | `string` | KOL ID |
Request body: none documented; send parameters through path or query arguments.
## Version Choice
Use `getAuthorContentHotKeywordsV1` for the documented `v1` endpoint. There are no alternate versions grouped in this skill.
## Run This Endpoint
Supported operation IDs in this skill: `getAuthorContentHotKeywordsV1`.
```bash
node {baseDir}/bin/run.mjs --operation "getAuthorContentHotKeywordsV1" --token "$JUST_ONE_API_TOKEN" --params-json '{"kolId":"<kolId>"}'
```
Ask for any missing required parameter before calling the helper. Keep user-provided IDs, cursors, keywords, and filters unchanged.
## Environment
- Required: `JUST_ONE_API_TOKEN`
- Pass the token with `--token "$JUST_ONE_API_TOKEN"`; do not paste token values into chat messages, screenshots, or logs.
- Get a token from [Just One API Dashboard](https://dashboard.justoneapi.com/en/login?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_get_author_content_hot_keywords&utm_content=project_link).
- Authentication details: [Just One API Usage Guide](https://docs.justoneapi.com/en/?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_get_author_content_hot_keywords&utm_content=project_link).
## Output Focus
- State the operation ID and endpoint path used, for example `getAuthorContentHotKeywordsV1` on `/api/douyin-xingtu/get-author-content-hot-keywords/v1`.
- Echo the required lookup scope (`kolId`) before summarizing results.
- Prioritize fields that support this endpoint purpose: Get Douyin Creator Marketplace (Xingtu) kOL Content Keyword Analysis data, including core metrics, trend signals, and performance indicators, for content theme analysis and creator positioning research.
- Return raw JSON only after the short, endpoint-specific summary.
- If the backend errors, include the backend payload and the exact operation ID.
FILE:bin/run.mjs
#!/usr/bin/env node
const manifest = {
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/get-author-content-hot-keywords/v1 for Douyin Creator Marketplace (Xingtu) KOL Content Keyword Analysis through JustOneAPI with kolId.",
"displayName": "Douyin Creator Marketplace (Xingtu) KOL Content Keyword Analysis",
"openapi": "3.1.0",
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_get_author_content_hot_keywords",
"slug": "justoneapi-douyin-xingtu-get-author-content-hot-keywords",
"sourceTitle": "OpenAPI definition",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) kOL Content Keyword Analysis data, including core metrics, trend signals, and performance indicators, for content theme analysis and creator positioning research.",
"method": "GET",
"operationId": "getAuthorContentHotKeywordsV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "KOL ID.",
"enumValues": [],
"location": "query",
"name": "kolId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": "0",
"description": "Type of keywords.",
"enumValues": [],
"location": "query",
"name": "keywordType",
"required": false,
"schemaType": "string"
},
{
"defaultValue": false,
"description": "Enable cache.",
"enumValues": [],
"location": "query",
"name": "acceptCache",
"required": false,
"schemaType": "boolean"
}
],
"path": "/api/douyin-xingtu/get-author-content-hot-keywords/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "KOL Content Keyword Analysis",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"endpointPath": "get-author-content-hot-keywords",
"skillType": "interface"
};
const args = parseArgs(process.argv.slice(2));
if (!args.operation) {
fail("Missing required --operation argument.");
}
const operation = manifest.operations.find((item) => item.operationId === args.operation);
if (!operation) {
fail(`Unknown operation "args.operation".`, { availableOperations: manifest.operations.map((item) => item.operationId) });
}
const params = parseParams(args.paramsJson);
applyDefaults(operation, params);
injectToken(operation, params, args.token);
validateRequired(operation, params);
const baseUrl = manifest.baseUrl;
const url = new URL(operation.path, ensureBaseUrl(baseUrl));
applyPathParams(operation, params, url);
applyQueryParams(operation, params, url);
const requestInit = {
headers: {
"accept": "application/json",
},
method: operation.method,
};
if (operation.requestBody && params.body !== undefined) {
requestInit.body = JSON.stringify(params.body);
requestInit.headers["content-type"] = operation.requestBody.contentType || "application/json";
}
let response;
try {
response = await fetch(url, requestInit);
} catch (error) {
fail("Network request failed.", {
cause: error instanceof Error ? error.message : String(error),
operationId: operation.operationId,
});
}
const rawBody = await response.text();
let parsedBody;
try {
parsedBody = rawBody ? JSON.parse(rawBody) : null;
} catch (error) {
if (!response.ok) {
fail("Backend returned a non-JSON error response.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
fail("Backend returned invalid JSON.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
if (!response.ok) {
fail("Backend request failed.", {
body: parsedBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
process.stdout.write(`JSON.stringify(parsedBody, null, 2)\n`);
function parseArgs(argv) {
const parsed = { operation: null, paramsJson: "{}", token: null };
for (let index = 0; index < argv.length; index += 1) {
const flag = argv[index];
const value = argv[index + 1];
if (flag === "--operation") {
parsed.operation = value;
index += 1;
continue;
}
if (flag === "--params-json") {
parsed.paramsJson = value;
index += 1;
continue;
}
if (flag === "--token") {
parsed.token = value;
index += 1;
continue;
}
fail(`Unknown argument "flag".`);
}
return parsed;
}
function parseParams(input) {
try {
const parsed = JSON.parse(input || "{}");
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
fail("--params-json must decode to a JSON object.");
}
return parsed;
} catch (error) {
fail("Failed to parse --params-json.", {
cause: error instanceof Error ? error.message : String(error),
});
}
}
function applyDefaults(operation, params) {
for (const parameter of operation.parameters) {
if (params[parameter.name] === undefined && parameter.defaultValue !== null) {
params[parameter.name] = parameter.defaultValue;
}
}
}
function injectToken(operation, params, cliToken) {
const tokenParam = operation.parameters.find((parameter) => parameter.name === "token");
if (!tokenParam || params.token !== undefined) {
return;
}
if (!cliToken) {
fail("--token is required for this operation.", {
operationId: operation.operationId,
});
}
params.token = cliToken;
}
function validateRequired(operation, params) {
const missing = [];
for (const parameter of operation.parameters) {
if (parameter.required && params[parameter.name] === undefined) {
missing.push(parameter.name);
}
}
if (operation.requestBody?.required && params.body === undefined) {
missing.push("body");
}
if (missing.length) {
fail("Missing required parameters.", {
missing,
operationId: operation.operationId,
});
}
}
function applyPathParams(operation, params, url) {
let pathname = url.pathname;
for (const parameter of operation.parameters.filter((item) => item.location === "path")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
pathname = pathname.replace(`{parameter.name}`, encodeURIComponent(String(value)));
}
url.pathname = pathname;
}
function applyQueryParams(operation, params, url) {
for (const parameter of operation.parameters.filter((item) => item.location === "query")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
appendValue(url.searchParams, parameter.name, value);
}
}
function appendValue(searchParams, name, value) {
if (Array.isArray(value)) {
for (const item of value) {
appendValue(searchParams, name, item);
}
return;
}
if (value && typeof value === "object") {
searchParams.append(name, JSON.stringify(value));
return;
}
searchParams.append(name, String(value));
}
function ensureBaseUrl(value) {
return value.endsWith("/") ? value : `value/`;
}
function fail(message, details = null) {
const payload = { message };
if (details) {
payload.details = details;
}
process.stderr.write(`JSON.stringify(payload, null, 2)\n`);
process.exit(1);
}
FILE:generated/operations.json
{
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/get-author-content-hot-keywords/v1 for Douyin Creator Marketplace (Xingtu) KOL Content Keyword Analysis through JustOneAPI with kolId.",
"displayName": "Douyin Creator Marketplace (Xingtu) KOL Content Keyword Analysis",
"endpointPath": "get-author-content-hot-keywords",
"openapi": "3.1.0",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) kOL Content Keyword Analysis data, including core metrics, trend signals, and performance indicators, for content theme analysis and creator positioning research.",
"method": "GET",
"operationId": "getAuthorContentHotKeywordsV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "KOL ID.",
"enumValues": [],
"location": "query",
"name": "kolId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": "0",
"description": "Type of keywords.",
"enumValues": [],
"location": "query",
"name": "keywordType",
"required": false,
"schemaType": "string"
},
{
"defaultValue": false,
"description": "Enable cache.",
"enumValues": [],
"location": "query",
"name": "acceptCache",
"required": false,
"schemaType": "boolean"
}
],
"path": "/api/douyin-xingtu/get-author-content-hot-keywords/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "KOL Content Keyword Analysis",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_get_author_content_hot_keywords",
"skillType": "interface",
"slug": "justoneapi-douyin-xingtu-get-author-content-hot-keywords",
"sourceTitle": "OpenAPI definition"
}
FILE:generated/operations.md
# Douyin Creator Marketplace (Xingtu) KOL Content Keyword Analysis operations
Generated from JustOneAPI OpenAPI for platform key `douyin-xingtu`.
Endpoint group: `get-author-content-hot-keywords`.
## `getAuthorContentHotKeywordsV1`
- Method: `GET`
- Path: `/api/douyin-xingtu/get-author-content-hot-keywords/v1`
- Summary: KOL Content Keyword Analysis
- Description: Get Douyin Creator Marketplace (Xingtu) kOL Content Keyword Analysis data, including core metrics, trend signals, and performance indicators, for content theme analysis and creator positioning research.
- Tags: `Douyin Creator Marketplace (Xingtu)`
### Parameters
| Name | In | Required | Type | Default | Description |
| --- | --- | --- | --- | --- | --- |
| `token` | `query` | yes | `string` | n/a | User authentication token. |
| `kolId` | `query` | yes | `string` | n/a | KOL ID. |
| `keywordType` | `query` | no | `string` | `0` | Type of keywords. |
| `acceptCache` | `query` | no | `boolean` | `false` | Enable cache. |
### Request body
No request body.
### Responses
- `200`: OK
Call GET /api/douyin-xingtu/get-author-commerce-spread-info/v1 for Douyin Creator Marketplace (Xingtu) Author Commerce Spread Info through JustOneAPI with ko...
---
name: Douyin Creator Marketplace (Xingtu) Author Commerce Spread Info API
description: Call GET /api/douyin-xingtu/get-author-commerce-spread-info/v1 for Douyin Creator Marketplace (Xingtu) Author Commerce Spread Info through JustOneAPI with kolId.
author: JustOneAPI
homepage: https://api.justoneapi.com
metadata: {"openclaw":{"homepage":"https://api.justoneapi.com","primaryEnv":"JUST_ONE_API_TOKEN","requires":{"bins":["node"],"env":["JUST_ONE_API_TOKEN"]},"skillKey":"justoneapi_douyin_xingtu_get_author_commerce_spread_info"}}
---
# Douyin Creator Marketplace (Xingtu) Author Commerce Spread Info
Use this focused JustOneAPI skill for author Commerce Spread Info in Douyin Creator Marketplace (Xingtu). It targets `GET /api/douyin-xingtu/get-author-commerce-spread-info/v1`. Required non-token inputs are `kolId`. OpenAPI describes it as: Get Douyin Creator Marketplace (Xingtu) author Commerce Spread Info data, including spread metrics, for creator evaluation for campaign planning and media buying.
## Endpoint Scope
- Platform key: `douyin-xingtu`
- Endpoint key: `get-author-commerce-spread-info`
- Platform family: Douyin Creator Marketplace (Xingtu)
- Skill slug: `justoneapi-douyin-xingtu-get-author-commerce-spread-info`
| Operation | Version | Method | Path | OpenAPI summary |
| --- | --- | --- | --- | --- |
| `getAuthorCommerceSpreadInfoV1` | `v1` | `GET` | `/api/douyin-xingtu/get-author-commerce-spread-info/v1` | Author Commerce Spread Info |
## Inputs
| Parameter | In | Required by | Optional by | Type | Notes |
| --- | --- | --- | --- | --- | --- |
| `acceptCache` | `query` | n/a | all | `boolean` | Enable cache |
| `kolId` | `query` | all | n/a | `string` | KOL ID |
Request body: none documented; send parameters through path or query arguments.
## Version Choice
Use `getAuthorCommerceSpreadInfoV1` for the documented `v1` endpoint. There are no alternate versions grouped in this skill.
## Run This Endpoint
Supported operation IDs in this skill: `getAuthorCommerceSpreadInfoV1`.
```bash
node {baseDir}/bin/run.mjs --operation "getAuthorCommerceSpreadInfoV1" --token "$JUST_ONE_API_TOKEN" --params-json '{"kolId":"<kolId>"}'
```
Ask for any missing required parameter before calling the helper. Keep user-provided IDs, cursors, keywords, and filters unchanged.
## Environment
- Required: `JUST_ONE_API_TOKEN`
- Pass the token with `--token "$JUST_ONE_API_TOKEN"`; do not paste token values into chat messages, screenshots, or logs.
- Get a token from [Just One API Dashboard](https://dashboard.justoneapi.com/en/login?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_get_author_commerce_spread_info&utm_content=project_link).
- Authentication details: [Just One API Usage Guide](https://docs.justoneapi.com/en/?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_get_author_commerce_spread_info&utm_content=project_link).
## Output Focus
- State the operation ID and endpoint path used, for example `getAuthorCommerceSpreadInfoV1` on `/api/douyin-xingtu/get-author-commerce-spread-info/v1`.
- Echo the required lookup scope (`kolId`) before summarizing results.
- Prioritize fields that support this endpoint purpose: Get Douyin Creator Marketplace (Xingtu) author Commerce Spread Info data, including spread metrics, for creator evaluation for campaign planning and media buying.
- Return raw JSON only after the short, endpoint-specific summary.
- If the backend errors, include the backend payload and the exact operation ID.
FILE:bin/run.mjs
#!/usr/bin/env node
const manifest = {
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/get-author-commerce-spread-info/v1 for Douyin Creator Marketplace (Xingtu) Author Commerce Spread Info through JustOneAPI with kolId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Author Commerce Spread Info",
"openapi": "3.1.0",
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_get_author_commerce_spread_info",
"slug": "justoneapi-douyin-xingtu-get-author-commerce-spread-info",
"sourceTitle": "OpenAPI definition",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) author Commerce Spread Info data, including spread metrics, for creator evaluation for campaign planning and media buying.",
"method": "GET",
"operationId": "getAuthorCommerceSpreadInfoV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "KOL ID.",
"enumValues": [],
"location": "query",
"name": "kolId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": false,
"description": "Enable cache.",
"enumValues": [],
"location": "query",
"name": "acceptCache",
"required": false,
"schemaType": "boolean"
}
],
"path": "/api/douyin-xingtu/get-author-commerce-spread-info/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Author Commerce Spread Info",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"endpointPath": "get-author-commerce-spread-info",
"skillType": "interface"
};
const args = parseArgs(process.argv.slice(2));
if (!args.operation) {
fail("Missing required --operation argument.");
}
const operation = manifest.operations.find((item) => item.operationId === args.operation);
if (!operation) {
fail(`Unknown operation "args.operation".`, { availableOperations: manifest.operations.map((item) => item.operationId) });
}
const params = parseParams(args.paramsJson);
applyDefaults(operation, params);
injectToken(operation, params, args.token);
validateRequired(operation, params);
const baseUrl = manifest.baseUrl;
const url = new URL(operation.path, ensureBaseUrl(baseUrl));
applyPathParams(operation, params, url);
applyQueryParams(operation, params, url);
const requestInit = {
headers: {
"accept": "application/json",
},
method: operation.method,
};
if (operation.requestBody && params.body !== undefined) {
requestInit.body = JSON.stringify(params.body);
requestInit.headers["content-type"] = operation.requestBody.contentType || "application/json";
}
let response;
try {
response = await fetch(url, requestInit);
} catch (error) {
fail("Network request failed.", {
cause: error instanceof Error ? error.message : String(error),
operationId: operation.operationId,
});
}
const rawBody = await response.text();
let parsedBody;
try {
parsedBody = rawBody ? JSON.parse(rawBody) : null;
} catch (error) {
if (!response.ok) {
fail("Backend returned a non-JSON error response.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
fail("Backend returned invalid JSON.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
if (!response.ok) {
fail("Backend request failed.", {
body: parsedBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
process.stdout.write(`JSON.stringify(parsedBody, null, 2)\n`);
function parseArgs(argv) {
const parsed = { operation: null, paramsJson: "{}", token: null };
for (let index = 0; index < argv.length; index += 1) {
const flag = argv[index];
const value = argv[index + 1];
if (flag === "--operation") {
parsed.operation = value;
index += 1;
continue;
}
if (flag === "--params-json") {
parsed.paramsJson = value;
index += 1;
continue;
}
if (flag === "--token") {
parsed.token = value;
index += 1;
continue;
}
fail(`Unknown argument "flag".`);
}
return parsed;
}
function parseParams(input) {
try {
const parsed = JSON.parse(input || "{}");
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
fail("--params-json must decode to a JSON object.");
}
return parsed;
} catch (error) {
fail("Failed to parse --params-json.", {
cause: error instanceof Error ? error.message : String(error),
});
}
}
function applyDefaults(operation, params) {
for (const parameter of operation.parameters) {
if (params[parameter.name] === undefined && parameter.defaultValue !== null) {
params[parameter.name] = parameter.defaultValue;
}
}
}
function injectToken(operation, params, cliToken) {
const tokenParam = operation.parameters.find((parameter) => parameter.name === "token");
if (!tokenParam || params.token !== undefined) {
return;
}
if (!cliToken) {
fail("--token is required for this operation.", {
operationId: operation.operationId,
});
}
params.token = cliToken;
}
function validateRequired(operation, params) {
const missing = [];
for (const parameter of operation.parameters) {
if (parameter.required && params[parameter.name] === undefined) {
missing.push(parameter.name);
}
}
if (operation.requestBody?.required && params.body === undefined) {
missing.push("body");
}
if (missing.length) {
fail("Missing required parameters.", {
missing,
operationId: operation.operationId,
});
}
}
function applyPathParams(operation, params, url) {
let pathname = url.pathname;
for (const parameter of operation.parameters.filter((item) => item.location === "path")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
pathname = pathname.replace(`{parameter.name}`, encodeURIComponent(String(value)));
}
url.pathname = pathname;
}
function applyQueryParams(operation, params, url) {
for (const parameter of operation.parameters.filter((item) => item.location === "query")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
appendValue(url.searchParams, parameter.name, value);
}
}
function appendValue(searchParams, name, value) {
if (Array.isArray(value)) {
for (const item of value) {
appendValue(searchParams, name, item);
}
return;
}
if (value && typeof value === "object") {
searchParams.append(name, JSON.stringify(value));
return;
}
searchParams.append(name, String(value));
}
function ensureBaseUrl(value) {
return value.endsWith("/") ? value : `value/`;
}
function fail(message, details = null) {
const payload = { message };
if (details) {
payload.details = details;
}
process.stderr.write(`JSON.stringify(payload, null, 2)\n`);
process.exit(1);
}
FILE:generated/operations.json
{
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/get-author-commerce-spread-info/v1 for Douyin Creator Marketplace (Xingtu) Author Commerce Spread Info through JustOneAPI with kolId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Author Commerce Spread Info",
"endpointPath": "get-author-commerce-spread-info",
"openapi": "3.1.0",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) author Commerce Spread Info data, including spread metrics, for creator evaluation for campaign planning and media buying.",
"method": "GET",
"operationId": "getAuthorCommerceSpreadInfoV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "KOL ID.",
"enumValues": [],
"location": "query",
"name": "kolId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": false,
"description": "Enable cache.",
"enumValues": [],
"location": "query",
"name": "acceptCache",
"required": false,
"schemaType": "boolean"
}
],
"path": "/api/douyin-xingtu/get-author-commerce-spread-info/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Author Commerce Spread Info",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_get_author_commerce_spread_info",
"skillType": "interface",
"slug": "justoneapi-douyin-xingtu-get-author-commerce-spread-info",
"sourceTitle": "OpenAPI definition"
}
FILE:generated/operations.md
# Douyin Creator Marketplace (Xingtu) Author Commerce Spread Info operations
Generated from JustOneAPI OpenAPI for platform key `douyin-xingtu`.
Endpoint group: `get-author-commerce-spread-info`.
## `getAuthorCommerceSpreadInfoV1`
- Method: `GET`
- Path: `/api/douyin-xingtu/get-author-commerce-spread-info/v1`
- Summary: Author Commerce Spread Info
- Description: Get Douyin Creator Marketplace (Xingtu) author Commerce Spread Info data, including spread metrics, for creator evaluation for campaign planning and media buying.
- Tags: `Douyin Creator Marketplace (Xingtu)`
### Parameters
| Name | In | Required | Type | Default | Description |
| --- | --- | --- | --- | --- | --- |
| `token` | `query` | yes | `string` | n/a | User authentication token. |
| `kolId` | `query` | yes | `string` | n/a | KOL ID. |
| `acceptCache` | `query` | no | `boolean` | `false` | Enable cache. |
### Request body
No request body.
### Responses
- `200`: OK