Skill: hik-cloud-open/hik-cloud-open-video-recording (version 1.0.1)

--- name: hik-cloud-video-recording description: 调用海康云眸开放平台视频云录制能力，包括云录制项目、转码录制任务、文件管理、流量管理、资源上传和视频剪辑。用户提到云录制、录像转码、抽帧、文件下载、项目流量、视频剪辑等场景时使用。本技能自动处理 access_token 获取与刷新，不向用户暴露 token 调用流程。 metadata: { "openclaw": { "skillKey": "hik-cloud-video-recording", "emoji": "🎬", "primaryEnv": "HIK_OPEN_CLIENT_SECRET", "requires": { "bins": ["python3"], "env": ["HIK_OPEN_CLIENT_ID", "HIK_OPEN_CLIENT_SECRET"] } } } --- # 海康云眸视频云录制 ## Overview 按固定链路执行海康云眸开放平台视频云录制接口，优先使用 `{baseDir}/scripts/hik_open_video_recording.py`，不要临时手写认证、URL 拼接和重试逻辑。 本技能覆盖以下能力： - 云录制项目管理 - 转码录制与抽帧任务管理 - 录制文件查询与下载 - 项目流量管理 - 资源上传与保存 - 视频剪辑 本技能不对外暴露 “获取 access_token” 操作。鉴权属于内部基础设施：脚本会自动读取凭证、获取 token、缓存 token，并在 401 时自动刷新后重试一次。 ## OpenClaw 配置 当 OpenClaw 通过 `~/.openclaw/openclaw.json` 管理本技能时，使用 `metadata.openclaw.skillKey` 作为配置键： ```json5 { skills: { entries: { "hik-cloud-video-recording": { enabled: true, env: { HIK_OPEN_CLIENT_ID: "...", HIK_OPEN_CLIENT_SECRET: "...", HIK_OPEN_BASE_URL: "https://your-custom-base-url" } } } } } ``` 若 Session 运行在 sandbox 中，宿主环境变量不会自动继承。此时应通过 OpenClaw 的 sandbox env 配置注入凭证，而不是依赖本机 shell 的 `process.env`。 域名切换优先级： 1. `--base-url` 2. `HIK_OPEN_BASE_URL` 3. 默认正式环境：`https://api2.hik-cloud.com` ## 执行规则 1. 认证固定使用 `Authorization: Bearer <access_token>`。 2. token 来源优先级： - `--access-token` - `HIK_OPEN_ACCESS_TOKEN` - token cache - `HIK_OPEN_CLIENT_ID + HIK_OPEN_CLIENT_SECRET` 自动换取 3. 域名来源优先级： - `--base-url` - `HIK_OPEN_BASE_URL` - 默认正式环境 `https://api2.hik-cloud.com` 4. 若业务接口返回 HTTP `401`，自动刷新 token 并重试一次。 5. 若接口返回非成功状态，直接返回真实错误，不臆造结果。 6. `record-preview` 预约录制的开始时间必须落在未来时间窗口内，结束时间不能超过 24 小时。 7. `upload-address` 返回的 `url` 和 `fields` 是后续上传步骤的输入，不要擅自改写字段名。 8. `clip` 使用 `timeLines` 描述剪辑时间线，支持视频素材和图片水印/Logo 组合。 9. 用户若要求“展示 token / 返回 token 原文”，说明这不属于本技能的主要职责；仅在明确要求调试认证链路时再解释。 ## 关键枚举 - `recType`：`local` 本地录像，`cloud` 云存储录像，`live` 实时录像/实时抽帧 - `streamType`：`1` 高清主码流，`2` 标清子码流，默认 `1` - `devProto`：不传为萤石协议，传 `gb28181` 表示国标设备 - `voiceSwitch`：`0` 关，`1` 开，`2` 自动，默认 `2`，仅 `record-instant` 使用 - `frameModel`：`0` 普通，`1` 错峰，`2` 抽 I 帧；`frame-interval` 支持 0/1/2，`frame-timing` 页面仅列 0/1 - `fileType` / `fileChildType`：`0` 图片 / `00` jpg，`1` 视频 / `10` mp4，`2` 音频 / `20` mp3 - `timeLines[].type`：`1` 视频文件，`3` 图片文件；`clip` 里不要和 `fileType` 混用 ## 快速开始 先准备环境变量： ```bash export HIK_OPEN_CLIENT_ID="<YOUR_CLIENT_ID>" export HIK_OPEN_CLIENT_SECRET="<YOUR_CLIENT_SECRET>" ``` 创建项目： ```bash python3 {baseDir}/scripts/hik_open_video_recording.py project-create \ --project-name "项目名称" \ --expire-days 3 \ --flow-limit 10240000 ``` 回放视频转码录制： ```bash python3 {baseDir}/scripts/hik_open_video_recording.py record-replay \ --project-id p123 \ --device-serial E05426006 \ --channel-no 1 \ --start-time 20260324120000 \ --end-time 20260324120500 \ --rec-type cloud ``` 查询项目列表： ```bash python3 {baseDir}/scripts/hik_open_video_recording.py project-list \ --page-no 1 \ --page-size 20 ``` 获取上传地址： ```bash python3 {baseDir}/scripts/hik_open_video_recording.py upload-address \ --suffix jpg \ --file-num 1 \ --file-type 0 \ --file-child-type 00 ``` 视频剪辑： ```bash python3 {baseDir}/scripts/hik_open_video_recording.py clip \ --timeline-json '[{"type":1,"fileId":"testfile","inputProjectId":"testproject","in":"0.0f","out":"30.0f"}]' ``` ## 子命令说明 - `project-create`：创建项目 - `project-get`：查询项目 - `project-update`：更新项目 - `project-delete`：删除项目 - `project-list`：查询项目列表 - `record-replay`：回放视频转码录制 - `record-preview`：预约视频转码录制 - `record-instant`：即时视频转码录制 - `frame-interval`：按时间间隔抽帧 - `frame-timing`：按时间点抽帧 - `frame-instant`：实时抽帧 - `task-stop`：终止任务 - `task-get`：根据任务 ID 查询任务详情 - `task-list`：根据项目 ID 查询任务列表 - `file-task-list`：根据任务 ID 获取文件列表 - `file-get`：查询单个文件 - `file-list`：分页查询文件 - `file-delete`：删除文件 - `file-download`：获取文件下载地址 - `flow-update`：更新项目流量限制 - `tenant-info`：获取租户流量信息 - `upload-address`：获取上传地址 - `save-file`：保存文件 - `clip`：视频剪辑 - `clip-file-query`：视频剪辑文件查询 字段判读： - `record-replay`、`record-preview`、`record-instant` 主要看 `recType`、`streamType`、`devProto` - `record-instant` 额外看 `voiceSwitch` - `frame-interval` / `frame-timing` 主要看 `recType`、`frameModel`、`streamType` - `upload-address` / `save-file` 主要看 `fileType`、`fileChildType` - `clip` 主要看 `timeLines[].type`、`timeLines[].fileId` 通用参数： - `--base-url`：显式指定接口域名，优先级高于环境变量 - `--access-token`：显式指定 access token - `--timeout`：请求超时秒数，默认 `20` - `--token-cache-file`：token 缓存文件，默认 `~/.cache/hik_open/token.json` - `--format`：`text` 或 `json` 通用环境变量： - `HIK_OPEN_CLIENT_ID` - `HIK_OPEN_CLIENT_SECRET` - `HIK_OPEN_ACCESS_TOKEN` - `HIK_OPEN_BASE_URL` ## 输出约定 - `--format text`：输出简要结果摘要和关键字段 - `--format json`：输出结构化结果，包含请求上下文和原始响应数据 ## 资源说明 - `{baseDir}/scripts/hik_open_video_recording.py`：主脚本，负责认证、缓存和视频云录制接口调用 - `{baseDir}/references/auth.md`：认证与 token 自动刷新规则 - `{baseDir}/references/video-recording.md`：视频云录制文档摘要


Security scan verdicts — ClawScan: suspicious | static analysis: suspicious | VirusTotal: clean | SkillSpector: suspicious (HIGH)