🎁 Get the FREE AI Skills Starter GuideSubscribe →
BytesAgainBytesAgain
🦀 ClawHub

文旅素材搜索

by @fengyily

指导智能体检索文旅素材(数游神州 data0086.com)并走通「搜索 → 列表 → 预览(HLS/MP4) → 选择/购买 → Mock交易返回 → 视频下载到本地」。搜索请求默认 3条,最多 5 条(pageSize≤5),用户可要求更少;列表用表格展示(颜色徽章状态 + img + video),用户通过...

Versionv1.0.22
Downloads750
TERMINAL
clawhub install culturetour-skill

📖 About This Skill


name: culturetour-search description: >- 指导智能体检索文旅素材(数游神州 data0086.com)并走通「搜索 → 列表 → 预览(HLS/MP4) → 选择/购买 → Mock交易返回 → 视频下载到本地」。搜索请求默认 3条,最多 5 条(pageSize≤5),用户可要求更少;列表用表格展示(颜色徽章状态 + img + video),用户通过文本指令选择,支持多选与批量购买。用户可「购买 1,2」直接下单,无需二次确认;购买后 mock 交易响应(video_url 取自搜索结果的 fragmentUrl),自动下载视频到本地并输出文件路径。 输出格式自动适配:桌面端/Web 客户端(ArkClaw、OpenClaw 等)默认输出 HTML 表格;IM 手机应用(飞书、微信、钉钉等)则输出 Markdown 表格,避免手机端直接显示 HTML 源码。 所有嵌入媒体仅限 config.json 中 trusted_media_origins 声明的域名。环境变量 WENLV_API_ORIGIN、TRADE_API_BASE 可选覆盖 config.json 默认值(见 index.json env 声明)。

文旅素材搜索(API)

> ## 搜索流程说明(每次搜索都适用) > > 用户每次发起搜索时(包括首次、后续、重新搜索、换关键词等),智能体都须按以下流程执行,不得省略或合并为一次: > > Step 1. 计算两次调用的 pageSize(成片优先配比) > > 设用户想要总条数为 N(默认 3,上限 5;用户可指定 1-5): > - pageSize_finished = ceil(N / 2) — 成片 > - pageSize_material = floor(N / 2) — 素材 > > | 用户想要 N | 成片条数 | 素材条数 | > |:--:|:--:|:--:| > | 1 | 1 | 0 | > | 2 | 1 | 1 | > | 3 | 2 | 1 | > | 4 | 2 | 2 | > | 5 | 3 | 2 | > > Step 2. 两次 POST 调用(顺序执行) > > 1. 第一次(成片):请求体 commodityCode = finished_commodity_code,URL pageSize = pageSize_finished > 2. 第二次(素材):请求体 commodityCode = null,URL pageSize = pageSize_material(若为 0 则跳过第二次) > > Step 3. 兜底补齐(配比失败时) > > 若成片实际返回 < pageSize_finished,用素材补齐到 N 条;反之亦然。目标是总条数尽量等于 N。 > > Step 4. 合并与判定类别 > > - 合并两次返回的 datas,按 businessCode/id 去重 > - 逐条以"返回数据本身"的 commodityCode 判定(不是按哪次调用): > - item.commodityCode === finished_commodity_codecategory = "成片" > - 否则 → category = "素材" > > Step 5. 展示与汇总(统计必须基于 category 字段,不是请求参数!) > >

> 成片条数 = sum(1 for item in results if item.category == "成片")
> 素材条数 = sum(1 for item in results if item.category == "素材")
> 
> > - 汇总行(表格之前):📽 共找到 N 条资源:成片 X 条 | 素材 Y > - XY 必须与表格里实际带 【成片】/【素材】 徽章的行数严格一致 > - 即使 X=0Y=0 也要写出(说明搜过了但无结果) > - 表格每行:标题旁强制带 【成片】 / 【素材】 徽章(以 item.category 为准) > > 绝对禁止: > - ❌ 省略成片调用,只调一次接口就返回 > - ❌ 汇总行的数字与表格里实际徽章不一致(最常见错误:按"请求参数 commodityCode 是什么"算成片条数,而不是按"返回记录本身的 commodityCode"算) > - ❌ 输出表格时省略类别徽章 > > 此规则等同于主路径「步骤 1」,优先级最高。

> ## 购买流程说明(当前调试阶段) > > 本 Skill 处于调试阶段,真实交易 API 尚未上线。用户发出「购买」「下单」「买 N」等指令时,当前约定的完整响应流程为: > > 1. 构造 mock 交易响应video_url = 搜索结果中该素材的 fragmentUrl(预览地址) > 2. 下载视频到本地:调用 bash scripts/download_video.sh "" "downloads/{business_code}.mp4" [HLS|MP4],将视频保存到 downloads/ 目录 > 3. 告知用户:输出下载完成状态及本地文件路径 > > 此流程由用户购买指令显式触发,搜索和预览阶段不执行任何下载。 > 真实交易 API 上线(TRADE_API_BASE 非空)后,步骤 1 将替换为真实下单请求,步骤 2-3 保持不变。

> 输出格式规范 > > 智能体应先判断客户端类型,再选择对应的输出格式: > > | 客户端类型 | 判定依据 | 输出格式 | > |-----------|---------|---------| > | 桌面端 / Web(ArkClaw、OpenClaw、浏览器等) | 默认 | HTML 表格(

等,仅限 index.jsonhtml_output.tags 声明的标签) | > | IM 手机应用(飞书、微信、钉钉、企业微信等) | 用户提到在飞书/微信/钉钉中使用,或上下文/系统信息表明客户端为 IM 应用 | Markdown 表格(| col | 语法,图片用 ![](url),链接用 text) | > > 桌面端 HTML 模式注意事项: > - 不要将 HTML 放在代码围栏内(围栏内的标签不会被渲染,只会显示源码) > - 不要使用 (静态 HTML 环境中无法交互) > - 不要使用
状态标题缩略图视频预览详情
1 {title}
{id}
{resolution}
{duration_seconds}s / {file_size}
浏览器播放
2 {title}
{id}
{resolution}
{duration_seconds}s / {file_size}
浏览器播放
💡 操作说明
· 回复「购买 1、3」或「下单 2」直接购买指定素材
· 回复「选 1、3」先标记,之后回复「购买」一键下单

初始状态(全部未选中)— Markdown 模式(IM 手机端):

| 状态 | 标题 | 预览 | 详情 |
|------|------|------|------|
| 1 | {title} | ▶ 预览 | {resolution} / {duration_seconds}s / {file_size} |
| 2 | {title} | ▶ 预览 | {resolution} / {duration_seconds}s / {file_size} |

💡 操作说明 · 回复「购买 1、3」或「下单 2」直接购买指定素材 · 回复「选 1、3」先标记,之后回复「购买」一键下单

选中第 1、2 条后(用户发送「选 1,2」后智能体重新渲染)— HTML 模式:

状态标题缩略图视频预览详情
✅ 1 {title} {resolution}
{duration_seconds}s / {file_size}
✅ 2 {title} {resolution}
{duration_seconds}s / {file_size}
✅ 已选 2 条素材 | 总时长 236.6s | 总大小 273.9M

👉 回复「购买」或「下单」立即下单
👉 回复序号可追加或取消选择

选中第 1、2 条后 — Markdown 模式(IM 手机端):

| 状态 | 标题 | 预览 | 详情 |
|------|------|------|------|
| ✅ 1 | {title} | ▶ 预览 | {resolution} / {duration_seconds}s / {file_size} |
| ✅ 2 | {title} | ▶ 预览 | {resolution} / {duration_seconds}s / {file_size} |

✅ 已选 2 条素材 | 总时长 236.6s | 总大小 273.9M 👉 回复「购买」或「下单」立即下单 👉 回复序号可追加或取消选择

其中:

  • {preview_url} = {api_origin}/#/multimodal?businessCode={businessCode}(数游神州商品详情页)。
  • {cover_url} = breviaryPic(已是完整 URL),{video_url} = fragmentUrl。嵌入前须校验来源属于 trusted_media_origins(见「安全:媒体来源校验」),不符合则不输出 /
  • ❌ 错误输出 vs ✅ 正确输出

    错误(HTML 模式下使用 checkbox / 代码围栏):

    | □ | # | 标题 | 缩略图 | 预览 |
    |---|---|------|--------|------|
    | □ | 1 | 雁荡山素材 | 封面 | 预览 · HLS |
    
    或使用 (渲染出来但无法勾选)、