Ultimate-AI-Media-Generator-Skill
Overview
Use this skill to call CyberBara APIs reliably, create image/video generation tasks, and return final media URLs with credit-aware flow.
Implementation Architecture
The runtime uses a layered Python architecture:
scripts/cyberbara_api.py: thin entrypoint onlysrc/cyberbara_cli/cli.py: command parsing and command routingsrc/cyberbara_cli/usecases/: flow orchestration (generation + polling)src/cyberbara_cli/policies/: safety and policy rules (credits quote + formal confirmation)src/cyberbara_cli/gateways/: raw CyberBara API clientsrc/cyberbara_cli/config.py: API key discovery and local persistencesrc/cyberbara_cli/constants.py: fixed base URL and shared constants
When extending behavior, keep business rules in usecases/ or policies/, not in scripts/.
Set Up Runtime Inputs
The script uses fixed base URL:
https://cyberbara.com
API key lookup order:
--api-key- environment variable
CYBERBARA_API_KEY - local cache file
~/.config/cyberbara/api_key - interactive prompt (if running in terminal)
Recommended one-time setup command:
python3 scripts/cyberbara_api.py setup-api-key "<api-key>"
Or save from environment variable:
export CYBERBARA_API_KEY="<api-key>"
python3 scripts/cyberbara_api.py setup-api-key --from-env
If API key is missing, the script immediately asks for it and shows where to get one:
https://cyberbara.com/settings/apikeys
When you provide API key via --api-key or interactive prompt, it is saved to:
~/.config/cyberbara/api_key
Future runs reuse this cached key, so users do not need to provide it every time.
Run The Standard Generation Flow
- Discover available models.
- Upload reference images when task scene needs image inputs.
- Quote credits before creating a generation task.
- Create image or video generation task and wait for final output.
- Automatically save generated media locally and open it.
- Check usage records when needed.
Reference commands:
# 1) List video models
python3 scripts/cyberbara_api.py models --media-type video
# 2) Upload local reference images
python3 scripts/cyberbara_api.py upload-images ./frame.png ./style.jpg
# 3) Estimate credits
python3 scripts/cyberbara_api.py quote --json '{
"model":"sora-2",
"media_type":"video",
"scene":"text-to-video",
"options":{"duration":"10"}
}'
# 4) Create a video task (default behavior: wait for success, save outputs to ./media_outputs, auto-open)
python3 scripts/cyberbara_api.py generate-video --json '{
"model":"sora-2",
"prompt":"A calm drone shot over snowy mountains at sunrise",
"scene":"text-to-video",
"options":{"duration":"10","resolution":"standard"}
}'
# 5) Existing task: wait + save/open outputs
python3 scripts/cyberbara_api.py wait --task-id <TASK_ID> --interval 5 --timeout 900
Image and video generation are confirmation-gated by default:
# Single image request: script auto-quotes, then asks you to type CONFIRM
python3 scripts/cyberbara_api.py generate-image --json '{
"model":"nano-banana-pro",
"prompt":"A cinematic portrait under neon rain",
"scene":"text-to-image",
"options":{"resolution":"1k"}
}'
# Batch image requests (JSON array): script auto-quotes each request and prints total estimated credits
python3 scripts/cyberbara_api.py generate-image --file ./image-requests.json
image-requests.json format:
[
{
"model": "nano-banana-pro",
"prompt": "A cinematic portrait under neon rain",
"scene": "text-to-image",
"options": { "resolution": "1k" }
},
{
"model": "nano-banana-pro",
"prompt": "A product still life with dramatic side light",
"scene": "text-to-image",
"options": { "resolution": "1k" }
}
]
Only use --yes after explicit user approval has been obtained:
python3 scripts/cyberbara_api.py generate-image --file ./image-requests.json --yes
python3 scripts/cyberbara_api.py generate-video --json '{
"model":"sora-2",
"prompt":"A calm drone shot over snowy mountains at sunrise",
"scene":"text-to-video",
"options":{"duration":"10","resolution":"standard"}
}' --yes
Control auto-save and open behavior:
# keep waiting but do not auto-open media
python3 scripts/cyberbara_api.py generate-image --file ./image-requests.json --yes --no-open
# custom output directory
python3 scripts/cyberbara_api.py generate-video --json '{...}' --yes --output-dir ./downloads
# submit only (no wait/save/open)
python3 scripts/cyberbara_api.py generate-video --json '{...}' --yes --async
Use Script Capabilities
scripts/cyberbara_api.py supports:
setup-api-keyto persist API key into local cachemodelsto list public models (--media-type image|videooptional)upload-imagesto upload local image files to/api/v1/uploads/imagesquoteto estimate credit cost from JSON request bodygenerate-imageto auto-quote credits, compute total for batch requests, require formal confirmation, create task(s), wait, then save/open outputsgenerate-videoto auto-quote credits, compute total for batch requests, require formal confirmation, create task(s), wait, then save/open outputstaskto fetch task snapshot by task IDwaitto poll task untilsuccess,failed, orcanceled, then save/open outputsbalanceandusageto inspect creditsrawfor direct custom endpoint calls
Use --file request.json instead of --json for long payloads.
Enforce API Payload Rules
- Send auth via API key (
Authorization: Bearer <key>orx-api-key). - Send public request fields under
options.*only. - Prefer explicit
sceneto avoid inference ambiguity. - Include
options.image_inputforimage-to-imageandimage-to-video. - Include
options.video_inputforvideo-to-video. - Poll
/api/v1/tasks/{taskId}until final status; onlysuccessguarantees output URLs. - Before every image or video generation submission, obtain quote first and get explicit user confirmation.
- For multiple image/video requests, calculate and present total estimated credits before submission.
- Save output files under
media_outputs/by default and auto-open them unless disabled.
Navigate Detailed Model Options
Use the reference file for full model matrices and examples:
references/cyberbara-api-reference.mdx
For fast lookup in large reference:
rg '^## |^### ' references/cyberbara-api-reference.mdx
rg 'kling-2.6|sora-2|veo-3.1|seedance' references/cyberbara-api-reference.mdx
Handle Common Failures
invalid_api_keyorapi_key_required: verify key and headers.insufficient_credits: quote first or recharge credits.invalid_sceneorscene_not_supported: choose scene supported by model.invalid_request: verifypromptandoptionsrequirements by model.task_not_found: verify task ID and environment domain.