Install
openclaw skills install @bpvnebot/byteplus-mediakit-video-highlightsCreate and query BytePlus/MediaKit video highlight editing tasks with the video-highlights-llm tool, focused on preset-based football highlight reels. Use when the user asks to generate, submit, or query highlight edits from one or more HTTP/HTTPS video URLs, optionally with preset (football), scoring_prompt, analysis_prompt, callbacks, or one or more target durations.
openclaw skills install @bpvnebot/byteplus-mediakit-video-highlightsSubmit BytePlus MediaKit video-highlights-llm jobs and query their async results. Default to preset=football and target_duration=[60] when the user does not provide preset or scoring_prompt. Respect the API limits: one input video up to 3 hours, all input videos up to 15 hours.
video_urls: required; collect at least one HTTP/HTTPS media URL in order. Only HTTP/HTTPS URLs are supported. Supported common formats include mp4, flv, ts, avi, mov, wmv, and mkv.target_duration: required array of output durations in seconds. Always an array, even for a single output (for example [60]). At most 5 values, each >= 1, no duplicates, and each smaller than the combined input duration. The CLI defaults to [60] when absent.preset: only football is supported. Default to football when the user provides no preset or scoring_prompt (other values are rejected).scoring_prompt: optional scoring override. If supplied with preset, it overrides the preset's scoring scene.analysis_prompt: optional analysis enhancement. It does not replace preset or scoring_prompt.callback_url, callback_args, client_token.scripts/video_highlights_llm.py doctor before the first real submit/query in a session, or whenever credentials/environment are uncertain. Do not ask the user to paste an API key into chat.scripts/video_highlights_llm.py submit.task_id, usually shaped like amk-tool-video-highlights-llm-....scripts/video_highlights_llm.py query --task-id <task_id>.duration and each entry in outputs[] (index, target_duration, duration, video_url).Use this skill for requests like:
Do not use this skill for requests like:
Use the bundled script. The CLI flags mirror the API fields exactly: array fields (video_urls, target_duration) take a JSON array, and scalar fields take a single value.
python3 scripts/video_highlights_llm.py submit \
--video-urls '["https://example.com/match.mp4"]' \
--preset football \
--target-duration '[60]' \
--callback-args "football-highlight-demo"
Multiple input videos and multiple output durations in one task are just longer arrays (target_duration allows up to 5 unique values):
python3 scripts/video_highlights_llm.py submit \
--video-urls '["https://example.com/first.mp4", "https://example.com/second.mp4"]' \
--preset football \
--target-duration '[60, 90]'
Query:
python3 scripts/video_highlights_llm.py query \
--task-id "amk-tool-video-highlights-llm-000000000000"
The script reads authentication in this order: --api-key, BYTEPLUS_MEDIAKIT_API_KEY, legacy MEDIAKIT_API_KEY, then ~/.mediakit/config.json. It accepts --endpoint and --header.
Prefer BYTEPLUS_MEDIAKIT_* environment variables for configuration:
BYTEPLUS_MEDIAKIT_API_KEYBYTEPLUS_MEDIAKIT_ENDPOINTBYTEPLUS_MEDIAKIT_TT_ENVBYTEPLUS_MEDIAKIT_USE_PPEBYTEPLUS_MEDIAKIT_HEADERSBYTEPLUS_MEDIAKIT_RUNTIMEBYTEPLUS_MEDIAKIT_CONFIGLegacy MEDIAKIT_* environment variables are accepted only as lower-priority fallbacks.
The default endpoint is the production environment https://mediakit.ap-southeast-1.bytepluses.com, and no environment-specific headers are sent by default. There is no built-in PPE profile. To target an internal environment, set the header values yourself with the dedicated environment variables BYTEPLUS_MEDIAKIT_TT_ENV (sets x-tt-env) and BYTEPLUS_MEDIAKIT_USE_PPE (sets x-use-ppe). Use the environment name provided by your environment owner. For example:
export BYTEPLUS_MEDIAKIT_USE_PPE="1"
export BYTEPLUS_MEDIAKIT_TT_ENV="<environment name>"
python3 scripts/video_highlights_llm.py submit --video-urls '["https://example.com/match.mp4"]'
--header (repeatable) and BYTEPLUS_MEDIAKIT_HEADERS (a JSON object) can override any header, including the two above.
Preflight:
python3 scripts/video_highlights_llm.py doctor
If the API key is missing, tell the user to configure it outside the chat:
export BYTEPLUS_MEDIAKIT_API_KEY="..."
or initialize/configure MediaKit so ~/.mediakit/config.json contains the key. Legacy MEDIAKIT_API_KEY works as a fallback, but do not recommend it for new setup. Do not print, log, or ask the user to paste the raw API key into the conversation.
For complex payloads, prefer a JSON file:
python3 scripts/video_highlights_llm.py submit --request-json request.json
Map common user wording as follows:
preset=football unless the user provides a custom scoring_prompt.target_duration=[60].target_duration=[90].target_duration=[60, 90] / [60, 30] (up to 5 unique durations in one task).scoring_prompt; keep preset=football if the user also specified it.analysis_prompt enhancement.Only football is supported for preset. This skill does not support story_prompt or background_music_urls; if the user asks for a non-football scene (for example basketball or short drama), a story-driven cut, or background music, tell them it is not supported.
If the user supplies only a task ID, skip submission and query that task.
references/templates.md when the user asks for JSON payload examples, prompt override templates, or evaluation request templates.references/api.md when changing the script or troubleshooting payload shape, status queries, or returned fields.