{
  "schemaVersion": "1.0",
  "item": {
    "slug": "yuboto-omni-api",
    "name": "Yuboto Omni API Assistant",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/dinaras/yuboto-omni-api",
    "canonicalUrl": "https://clawhub.ai/dinaras/yuboto-omni-api",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/yuboto-omni-api",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=yuboto-omni-api",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "references/version.md",
      "references/api_quick_reference.md",
      "references/omni_api_v1_10_raw.md",
      "references/swagger_v1.json",
      "references/user-guide.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-07T17:22:31.273Z",
      "expiresAt": "2026-05-14T17:22:31.273Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
        "contentDisposition": "attachment; filename=\"afrexai-annual-report-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/yuboto-omni-api"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/yuboto-omni-api",
    "agentPageUrl": "https://openagent3.xyz/skills/yuboto-omni-api/agent",
    "manifestUrl": "https://openagent3.xyz/skills/yuboto-omni-api/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/yuboto-omni-api/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Yuboto Omni API",
        "body": "Use this skill to work with Yuboto Omni API safely and consistently.\n\nNote: This skill requires the OCTAPUSH_API_KEY environment variable.\n\nGetting Started: You need a Yuboto/Octapush account with API access. Register at octapush.yuboto.com and request API access from support.\n\nOpenClaw Integration: This skill supports native OpenClaw credential management. Store your API key in openclaw.json for centralized, secure credential handling."
      },
      {
        "title": "Source-of-truth order",
        "body": "references/swagger_v1.json (live endpoint contract)\nreferences/api_quick_reference.md (human-readable endpoint map)\nreferences/omni_api_v1_10_raw.md (legacy PDF extract)\nassets/OMNI_API_DOCUMENTATION_V1_10.pdf (original PDF)\n\nIf PDF and Swagger conflict, prefer Swagger for endpoint paths/fields."
      },
      {
        "title": "Fast workflow",
        "body": "Identify the use case (send message, get DLR, contacts, subscriber lists, blacklist, cost/balance).\nFind matching endpoint(s):\n\nRead references/api_quick_reference.md, or\nRun: python3 scripts/find_endpoints.py --q \"<keyword>\"\n\n\nValidate request schema directly in references/swagger_v1.json:\n\nparameters (path/query/header)\nrequestBody\nresponse schema\n\n\nBuild implementation code with:\n\nclear auth header handling\nretries + timeout\nstructured error mapping\n\n\nFor advanced Viber features, check Swagger first."
      },
      {
        "title": "Available commands (provided by scripts/yuboto_cli.py)",
        "body": "balance — get account balance\ncost --channel sms --iso2 gr --phonenumber +30... — estimate sending cost\nsend-sms --sender <approved_sender> --text \"...\" --to +30... --batch-size 200 --sms-encoding auto — send SMS (auto-batched + auto Unicode/GSM)\ndlr --id <messageGuid> — check delivery status for one message\nsend-csv --file contacts.csv --phone-col phonenumber --text-col text --sender-col sender — bulk send from CSV\npoll-pending — refresh statuses for all pending messages\nhistory --last 20 — show recent send records\nstatus / status --id <messageGuid> — inspect tracked message state"
      },
      {
        "title": "Output requirements",
        "body": "When generating code or integration instructions:\n\nInclude exact method + path.\nInclude required auth headers.\nInclude minimal working request example.\nInclude expected response shape.\nInclude 1 failure case and handling."
      },
      {
        "title": "Required Credential",
        "body": "OCTAPUSH_API_KEY — Your Yuboto/Octapush API key (already base64 encoded from Octapush)\n\nNote: This is the only credential required."
      },
      {
        "title": "Optional Variables (for testing/overrides)",
        "body": "TEST_PHONENUMBER — Phone number for testing (international format: +3069XXXXXXXX)\nSMS_SENDER — Default sender ID for SMS messages (must be approved)\nYUBOTO_BASE_URL — Override API base URL (default: https://api.yuboto.com)"
      },
      {
        "title": "Getting an API Key",
        "body": "To use this skill, you need a Yuboto/Octapush API key:\n\nRegister for an account at octapush.yuboto.com\nContact Yuboto support to request API access\nGet your API key from your Octapush dashboard or via support\n\nThe API key is used for authentication with all Yuboto Omni API endpoints."
      },
      {
        "title": "Setup Instructions",
        "body": "Option 1: OpenClaw Config (✅ Recommended)\n\nAdd to your openclaw.json config file:\n\n\"skills\": {\n  \"entries\": {\n    \"yuboto-omni-api\": {\n      \"enabled\": true,\n      \"env\": {\n        \"OCTAPUSH_API_KEY\": \"your_base64_api_key_here\"\n      }\n    }\n  }\n}\n\nOption 2: Environment Variable\n\nexport OCTAPUSH_API_KEY=\"your_base64_api_key_here\"\n\nNote: .env files are not supported. Use OpenClaw config for secure, centralized credential management."
      },
      {
        "title": "Security + Ops Notes",
        "body": "Store API key in environment variable OCTAPUSH_API_KEY, not in source files.\nPrefer env vars over CLI --api-key to avoid leaking credentials in shell history.\npoll_pending.sh reads OCTAPUSH_API_KEY from the process environment only (it does not source .env).\nAlways use an account-approved sender ID for SMS. If sender is not approved, API returns 108 - Sms Sender is not valid.\nBulk safety defaults are enabled:\n\nsend-sms defaults to --batch-size 200 (hard cap 1000 recipients/request)\nsend-sms defaults to --batch-delay-ms 250\nsend-csv defaults to --delay-ms 100\n\n\nEncoding defaults:\n\n--sms-encoding auto detects non-GSM text and sends as Unicode\nForce Unicode with --sms-encoding unicode for scripts like Greek/Arabic/Chinese\nForce GSM-7 with --sms-encoding gsm when needed\n\n\nLocal state retention is enabled by default:\n\nSent log rotates to last 5000 lines (YUBOTO_MAX_SENT_LOG_LINES)\nState index keeps up to 5000 tracked IDs (YUBOTO_MAX_STATE_RECORDS)\n\n\nRuntime data location default is outside the skill folder:\n\nCLI state default: $XDG_STATE_HOME/openclaw/yuboto-omni-api (fallback ~/.local/state/openclaw/yuboto-omni-api)\nPoll logs/state default under the same base (YUBOTO_LOG_DIR/YUBOTO_STATE_DIR override supported)\n\n\nPrivacy-by-default storage:\n\nStored state/log keeps minimal metadata (messageGuid, timestamps, status, recipient count)\nFull payload/text/recipient persistence is off by default\nEnable full persistence only if needed via YUBOTO_STORE_FULL_PAYLOAD=true\n\n\nRuntime dependency model: Python standard library only (no requests install required).\nHelper scripts are also stdlib-only: scripts/refresh_swagger.py uses urllib (no pip installs).\nTreat local runtime logs/state as sensitive even in minimized mode."
      },
      {
        "title": "Notes",
        "body": "Swagger URL: https://api.yuboto.com/scalar/#description/introduction\nSwagger JSON: https://api.yuboto.com/swagger/v1/swagger.json\nMore product/account info: https://messaging.yuboto.com\nKeep generated examples language-neutral unless user requests GR/EN copy."
      }
    ],
    "body": "Yuboto Omni API\n\nUse this skill to work with Yuboto Omni API safely and consistently.\n\nNote: This skill requires the OCTAPUSH_API_KEY environment variable.\n\nGetting Started: You need a Yuboto/Octapush account with API access. Register at octapush.yuboto.com and request API access from support.\n\nOpenClaw Integration: This skill supports native OpenClaw credential management. Store your API key in openclaw.json for centralized, secure credential handling.\n\nSource-of-truth order\nreferences/swagger_v1.json (live endpoint contract)\nreferences/api_quick_reference.md (human-readable endpoint map)\nreferences/omni_api_v1_10_raw.md (legacy PDF extract)\nassets/OMNI_API_DOCUMENTATION_V1_10.pdf (original PDF)\n\nIf PDF and Swagger conflict, prefer Swagger for endpoint paths/fields.\n\nFast workflow\nIdentify the use case (send message, get DLR, contacts, subscriber lists, blacklist, cost/balance).\nFind matching endpoint(s):\nRead references/api_quick_reference.md, or\nRun: python3 scripts/find_endpoints.py --q \"<keyword>\"\nValidate request schema directly in references/swagger_v1.json:\nparameters (path/query/header)\nrequestBody\nresponse schema\nBuild implementation code with:\nclear auth header handling\nretries + timeout\nstructured error mapping\nFor advanced Viber features, check Swagger first.\nAvailable commands (provided by scripts/yuboto_cli.py)\nbalance — get account balance\ncost --channel sms --iso2 gr --phonenumber +30... — estimate sending cost\nsend-sms --sender <approved_sender> --text \"...\" --to +30... --batch-size 200 --sms-encoding auto — send SMS (auto-batched + auto Unicode/GSM)\ndlr --id <messageGuid> — check delivery status for one message\nsend-csv --file contacts.csv --phone-col phonenumber --text-col text --sender-col sender — bulk send from CSV\npoll-pending — refresh statuses for all pending messages\nhistory --last 20 — show recent send records\nstatus / status --id <messageGuid> — inspect tracked message state\nOutput requirements\n\nWhen generating code or integration instructions:\n\nInclude exact method + path.\nInclude required auth headers.\nInclude minimal working request example.\nInclude expected response shape.\nInclude 1 failure case and handling.\nEnvironment Variables\nRequired Credential\nOCTAPUSH_API_KEY — Your Yuboto/Octapush API key (already base64 encoded from Octapush)\n\nNote: This is the only credential required.\n\nOptional Variables (for testing/overrides)\nTEST_PHONENUMBER — Phone number for testing (international format: +3069XXXXXXXX)\nSMS_SENDER — Default sender ID for SMS messages (must be approved)\nYUBOTO_BASE_URL — Override API base URL (default: https://api.yuboto.com)\nGetting an API Key\n\nTo use this skill, you need a Yuboto/Octapush API key:\n\nRegister for an account at octapush.yuboto.com\nContact Yuboto support to request API access\nGet your API key from your Octapush dashboard or via support\n\nThe API key is used for authentication with all Yuboto Omni API endpoints.\n\nSetup Instructions\nOption 1: OpenClaw Config (✅ Recommended)\n\nAdd to your openclaw.json config file:\n\n\"skills\": {\n  \"entries\": {\n    \"yuboto-omni-api\": {\n      \"enabled\": true,\n      \"env\": {\n        \"OCTAPUSH_API_KEY\": \"your_base64_api_key_here\"\n      }\n    }\n  }\n}\n\nOption 2: Environment Variable\nexport OCTAPUSH_API_KEY=\"your_base64_api_key_here\"\n\n\nNote: .env files are not supported. Use OpenClaw config for secure, centralized credential management.\n\nSecurity + Ops Notes\nStore API key in environment variable OCTAPUSH_API_KEY, not in source files.\nPrefer env vars over CLI --api-key to avoid leaking credentials in shell history.\npoll_pending.sh reads OCTAPUSH_API_KEY from the process environment only (it does not source .env).\nAlways use an account-approved sender ID for SMS. If sender is not approved, API returns 108 - Sms Sender is not valid.\nBulk safety defaults are enabled:\nsend-sms defaults to --batch-size 200 (hard cap 1000 recipients/request)\nsend-sms defaults to --batch-delay-ms 250\nsend-csv defaults to --delay-ms 100\nEncoding defaults:\n--sms-encoding auto detects non-GSM text and sends as Unicode\nForce Unicode with --sms-encoding unicode for scripts like Greek/Arabic/Chinese\nForce GSM-7 with --sms-encoding gsm when needed\nLocal state retention is enabled by default:\nSent log rotates to last 5000 lines (YUBOTO_MAX_SENT_LOG_LINES)\nState index keeps up to 5000 tracked IDs (YUBOTO_MAX_STATE_RECORDS)\nRuntime data location default is outside the skill folder:\nCLI state default: $XDG_STATE_HOME/openclaw/yuboto-omni-api (fallback ~/.local/state/openclaw/yuboto-omni-api)\nPoll logs/state default under the same base (YUBOTO_LOG_DIR/YUBOTO_STATE_DIR override supported)\nPrivacy-by-default storage:\nStored state/log keeps minimal metadata (messageGuid, timestamps, status, recipient count)\nFull payload/text/recipient persistence is off by default\nEnable full persistence only if needed via YUBOTO_STORE_FULL_PAYLOAD=true\nRuntime dependency model: Python standard library only (no requests install required).\nHelper scripts are also stdlib-only: scripts/refresh_swagger.py uses urllib (no pip installs).\nTreat local runtime logs/state as sensitive even in minimized mode.\nNotes\nSwagger URL: https://api.yuboto.com/scalar/#description/introduction\nSwagger JSON: https://api.yuboto.com/swagger/v1/swagger.json\nMore product/account info: https://messaging.yuboto.com\nKeep generated examples language-neutral unless user requests GR/EN copy."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/dinaras/yuboto-omni-api",
    "publisherUrl": "https://clawhub.ai/dinaras/yuboto-omni-api",
    "owner": "dinaras",
    "version": "1.6.2",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/yuboto-omni-api",
    "downloadUrl": "https://openagent3.xyz/downloads/yuboto-omni-api",
    "agentUrl": "https://openagent3.xyz/skills/yuboto-omni-api/agent",
    "manifestUrl": "https://openagent3.xyz/skills/yuboto-omni-api/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/yuboto-omni-api/agent.md"
  }
}