Byted Airesearch Videoeval
Use this skill to submit and query long-running material evaluation tasks.
When to use
Use this skill when the user wants to:
- - evaluate a video material or creative asset
- submit a material evaluation task and get back a task identifier
- check the status of an existing evaluation task later
- fetch the final detail/result of a previously created evaluation task
Do not use this skill for generic video upload requests.
Current workflow
- 1. Validate the full input batch before any upload starts.
- Upload the local video files and capture the returned
attachment_id values. - Create a task with the uploaded attachment IDs.
- Return success immediately after the task is created.
- Ask the user to query task list or task detail later if they want progress or results.
This workflow is intentionally non-blocking. Do not poll automatically after task creation.
Mandatory behavior
- - Do not expose the upload API as a standalone user-facing capability.
- Do not trigger this skill for generic requests such as “upload this video”, “store this file”, or “send this video”.
- Only call the upload API when the user explicitly intends to create a new material evaluation task.
- For new task creation, prefer
scripts/submit_evaluation_task.py so validation, upload, and task creation stay in one controlled flow. - Treat
scripts/upload_video.py as an internal helper used by the orchestration flow, not as the primary user entrypoint. The script itself rejects direct use unless it is called with the internal orchestration marker.
For multi-file submissions, use the orchestration entrypoint so the whole batch is validated before the first upload starts.
Authentication
The current APIs use API key authentication.
All API requests sent by this skill must include the header:
Preferred input methods:
If no API key is available, ask the user to create or view one at:
Then ask the user to provide the API key before calling the API.
If the API key is missing, the scripts must fail immediately with a clear error that points the user to the API key page above.
Known API coverage
Upload attachment
- - Endpoint: INLINECODE8
- Request: INLINECODE9
- File field: INLINECODE10
- Upload constraints:
- each upload request contains exactly one video file
- each video must be 50MB or smaller
- file format must be
mp4
- MIME type must be
video/mp4
- preserve the raw attachment payload
- map the attachment object's
id field to INLINECODE14
The upload_video.py script is an internal helper for the create-task workflow. It is not the primary user-facing entrypoint.
Create task
- - Endpoint: INLINECODE16
- Fixed request fields:
-
form_id: 0
-
agent_id: 125
-
audience_id: 3664529
- - Optional request fields currently exposed:
-
prompt
-
language
-
is_typical_user_enabled
-
typical_user_count
-
typical_user_selection_mode
-
is_report_enabled
-
attachment_ids
- one task submission can include at most 50 videos
-
attachment_ids must contain at most 50 items per request
The create step should send the uploaded attachment_id as a one-element attachment_ids array unless multiple attachment IDs are explicitly provided.
List and detail
Task detail is wired and can query an existing task directly:
- - Endpoint: INLINECODE30
- Current auth: API key bearer token
- Output mapping:
- map the task object's
id field to
task_id
- map the task object's
status field to
task_status
- parse
task.detail
- keep only items where
key == video_structured_result and
sub_tab != null
- expose a compact
summary block for downstream agent use
Task list is wired and can query existing tasks directly:
- - Endpoint: INLINECODE39
- Current auth: API key bearer token
- Current fixed query params:
-
page=1
-
page_size=100
-
agent_id=125
- map each task item to
task_id,
name,
status,
created_at,
updated_at
- preserve pagination info in INLINECODE48
Commands
CODEBLOCK0
Response handling
All scripts emit JSON to stdout with the same top-level envelope:
- - INLINECODE49
- INLINECODE50
- INLINECODE51
- INLINECODE52
- INLINECODE53
Important normalized fields:
- - submit task:
data.task_id, data.task_status, INLINECODE56 - list: INLINECODE57
- detail:
data.detail, INLINECODE59
Final answer rules
- - Use the structured JSON returned by the detail endpoint as the internal source of truth.
- Present the final answer in human-readable natural language.
- When the task is finished, prefer a concise report-style answer rather than a raw data dump.
- Do not dump raw JSON to the user.
- Do not expose internal field names such as
video_eval, video_user_report, distribution, field_desc, or similar implementation-oriented keys. - Apply the same rule to task list responses: use the list result as internal source data, but present the outcome as a natural-language summary rather than raw fields.
- For task list answers, it is acceptable to include the task ID, task name, status, created time, and updated time in human-readable prose, because those fields help the user choose a task for follow-up detail queries.
- When multiple videos are present, summarize them separately.
- For finished task detail results, prefer a readable report flow such as: task conclusion first, then one short section per video, then overall recommendations if the source data supports them.
- If the task is not finished yet, do not fabricate a report. Clearly state the current status and ask the user to check again later.
- Only provide raw structured data if the user explicitly asks for the raw result.
Practical guidance
- - For new submissions, use the orchestration flow rather than exposing upload as a standalone step to the user.
- Validate the local file before upload. Reject non-MP4 files, files with non-
video/mp4 MIME types, or files larger than 50MB with a direct and actionable error message. - Validate the task creation input before calling the API. Reject any request that contains more than 50 attachment IDs with a direct and actionable error message.
- For a multi-video submit flow, validate the full batch size before any upload starts. If the batch contains more than 50 files, fail immediately and do not upload anything.
- After create succeeds, tell the user the task has been submitted successfully and can be checked later.
- Use task list when the user wants to browse or find historical tasks.
- Use task detail when the user already knows the task ID and wants the final result.
Byted Airesearch Videoeval
使用此技能提交和查询长时间运行的材料评估任务。
使用时机
当用户希望执行以下操作时使用此技能:
- - 评估视频素材或创意资产
- 提交材料评估任务并获取任务标识符
- 后续检查现有评估任务的状态
- 获取先前创建的评估任务的最终详情/结果
请勿将此技能用于通用的视频上传请求。
当前工作流程
- 1. 在任何上传开始前验证完整的输入批次。
- 上传本地视频文件并捕获返回的 attachment_id 值。
- 使用上传的附件ID创建任务。
- 任务创建后立即返回成功。
- 如果用户需要进度或结果,请稍后查询任务列表或任务详情。
此工作流程特意设计为非阻塞模式。任务创建后请勿自动轮询。
强制行为
- - 不要将上传API作为面向用户的独立功能暴露。
- 不要针对上传此视频、存储此文件或发送此视频等通用请求触发此技能。
- 仅在用户明确意图创建新的材料评估任务时调用上传API。
- 对于新任务创建,优先使用 scripts/submitevaluationtask.py,以便验证、上传和任务创建保持在一个受控流程中。
- 将 scripts/upload_video.py 视为编排流程使用的内部辅助工具,而非主要用户入口点。除非使用内部编排标记调用,否则该脚本本身拒绝直接使用。
对于多文件提交,使用编排入口点,以便在首次上传开始前验证整个批次。
身份验证
当前API使用API密钥进行身份验证。
此技能发送的所有API请求必须包含以下标头:
- - x-product-version: 20
- Authorization: bearer {API_KEY}
首选输入方式:
- - --api-key
- BYTEDAIRESEARCHVIDEOEVALAPIKEY
如果没有可用的API密钥,请让用户在以下地址创建或查看:
- - https://console.volcengine.com/datatester/ai-research/audience/list?tab=apikey
然后在调用API前让用户提供API密钥。
如果缺少API密钥,脚本必须立即失败并显示清晰的错误信息,引导用户访问上述API密钥页面。
已知API覆盖范围
上传附件
- - 端点:POST https://console.volcengine.com/datatester/compass/api/v3/survey/attachment
- 请求:multipart/form-data
- 文件字段:file
- 上传限制:
- 每个上传请求仅包含一个视频文件
- 每个视频必须为50MB或更小
- 文件格式必须为 mp4
- MIME类型必须为 video/mp4
- 保留原始附件负载
- 将附件对象的 id 字段映射到 attachment_id
upload_video.py 脚本是创建任务工作流程的内部辅助工具。它不是面向用户的主要入口点。
创建任务
- - 端点:POST https://console.volcengine.com/datatester/compass/api/v3/survey/task
- 固定请求字段:
- form_id: 0
- agent_id: 125
- audience_id: 3664529
- prompt
- language
- is
typicaluser_enabled
- typical
usercount
- typical
userselection_mode
- is
reportenabled
- attachment_ids
- 一次任务提交最多可包含50个视频
- 每个请求中 attachment_ids 最多包含50个项目
创建步骤应将上传的 attachmentid 作为单元素 attachmentids 数组发送,除非明确提供了多个附件ID。
列表和详情
任务详情已接入,可直接查询现有任务:
- - 端点:GET https://console.volcengine.com/datatester/compass/api/v3/survey/task/{id}
- 当前认证:API密钥Bearer令牌
- 输出映射:
- 将任务对象的 id 字段映射到 task_id
- 将任务对象的 status 字段映射到 task_status
- 解析 task.detail
- 仅保留 key == video
structuredresult 且 sub_tab != null 的项目
- 为下游代理使用暴露紧凑的 summary 块
任务列表已接入,可直接查询现有任务:
- - 端点:GET https://console.volcengine.com/datatester/compass/api/v3/survey/task
- 当前认证:API密钥Bearer令牌
- 当前固定查询参数:
- page=1
- page_size=100
- agent_id=125
- 将每个任务项映射到 task
id、name、status、createdat、updated_at
- 在 data.page 中保留分页信息
命令
bash
在上传前验证整个批次,然后上传所有文件并创建任务
python scripts/submit
evaluationtask.py \
--file /path/to/video-1.mp4 \
--file /path/to/video-2.mp4 \
--api-key
单视频创建流程
python scripts/submitevaluationtask.py \
--file /path/to/video.mp4 \
--prompt 评估此素材的受众契合度和内容质量。 \
--api-key
稍后查询任务列表
python scripts/listevaluationtasks.py
稍后查询任务详情
python scripts/getevaluationtask_detail.py --task-id 12345
响应处理
所有脚本向stdout输出JSON,使用相同的顶层信封结构:
- - status
- message
- request_id
- data
- error
重要的标准化字段:
- - 提交任务:data.taskid、data.taskstatus、data.submittedvideocount
- 列表:data.items
- 详情:data.detail、data.summary
最终答案规则
- - 使用详情端点返回的结构化JSON作为内部数据源。
- 以人类可读的自然语言呈现最终答案。
- 任务完成时,优先使用简洁的报告式答案,而非原始数据转储。
- 不要向用户转储原始JSON。
- 不要暴露内部字段名称,如 videoeval、videouserreport、distribution、fielddesc 或类似的面向实现的键。
- 对任务列表响应应用相同规则:使用列表结果作为内部源数据,但以自然语言摘要而非原始字段的形式呈现结果。
- 对于任务列表答案,可以包含任务ID、任务名称、状态、创建时间和更新时间的人类可读描述,因为这些字段有助于用户选择任务进行后续详情查询。
- 当存在多个视频时,分别进行总结。
- 对于已完成的任务详情结果,优先使用可读的报告流程,例如:先给出任务结论,然后每个视频一个简短部分,最后给出整体建议(如果源数据支持)。
- 如果任务尚未完成,不要编造报告。清晰说明当前状态并让用户稍后再次检查。
- 仅当用户明确要求原始结果时才提供原始结构化数据。
实用指南
- - 对于新提交,使用编排流程,而不是将上传作为独立步骤暴露给用户。
- 在上传前验证本地文件。拒绝非MP4文件、非 video/mp4 MIME类型的文件或大于50MB的文件,并提供直接且可操作的错误信息。
- 在调用API前验证任务创建输入。拒绝包含超过50个附件ID的请求,并提供直接且可操作的错误信息。
- 对于多视频提交流程,在任何上传开始前验证完整的批次大小。如果批次包含超过50个文件,立即失败且不上传任何内容。
- 创建成功后,告知用户任务已成功提交,稍后可进行检查。
- 当用户想要浏览或查找历史任务时使用任务列表。
- 当用户已知任务ID并想要最终结果时使用任务详情。