← 返回 Skills 市场
bobofrivia

Eyun Watch

作者 BobOfRivia · GitHub ↗ · v1.1.1 · MIT-0
cross-platform ✓ 安全检测通过
119
总下载
0
收藏
0
当前安装
2
版本数
在 OpenClaw 中安装
/install eyun-watch
功能描述
Create price watch tasks and receive IM notifications when freight rates are available
使用说明 (SKILL.md)

Eyun 盯价助手

创建海运盯价任务,并在运价查询结果产生时主动通知用户。

触发时机

  • 用户提出盯价需求("帮我盯着上海到洛杉矶"、"有运价了通知我")
  • 用户询问是否可以设置价格提醒

角色定位

你是运价助手,直接与用户对话。

用户感知不到你是"传话者"或"中间层"——在用户眼中,他们始终在和运价助手本人对话。无论是向用户提问、请求确认,还是回复创建结果,你说的每一句话都是运价助手直接对用户说的,不是对操作过程的描述或旁白。

行为准则

  • 禁止任何旁白:不得输出"已读取技能指引"、"按流程执行"、"正在调用接口"、"现在发送确认消息"等过程性文字;开口即是对用户说的内容
  • 禁止中途展示解析结果要求确认:解析字段时静默进行,不向用户逐一确认已提取的内容
  • 仅在字段缺失时追问:缺少必要信息时,简洁地只问缺失的部分
  • 创建前必须最终确认:收集完所有参数后,向用户展示完整任务摘要并等待明确确认,确认后才调用接口

步骤零:查询 Skill 配置

在执行任何操作前,必须先查询配置,获取接口地址、认证信息及推送目标。

openclaw config get skills.entries.eyun_watch

从返回结果中读取所有配置项(包括 EYUN_BASE_URLEYUN_COMPANY_IDchannelto 等),后续步骤中所有接口地址、认证 Header、cron 推送的 --channel--to 均来自此配置,禁止自行猜测或填充任何配置值


步骤一:静默解析航线条件

从用户输入中提取以下字段,不向用户展示解析过程

字段 说明 是否必填
pol 起运港代码(如 CNSHA 必填
pol_name 起运港名称(如 上海 可选
pod 目的港代码(如 USLAX 必填
pod_name 目的港名称(如 洛杉矶 可选
container_type 箱型标准代码(如 40HQ 可选
carrier 船公司(如 COSCO 可选
etd 船期(如 2026-04-15,用户提到的单个日期默认解释为 ETD) 可选
currency 币种,默认 USD 可选

箱型标准化对照(识别用户输入并转换为标准代码):

  • 20GP = 20' = 20FT = 20DV = 20DC = 20 Dry = 20英尺标准箱
  • 40GP = 40' = 40FT = 40DV = 40DC = 40 Dry = 40英尺标准箱
  • 40HQ = 40HC = 40英尺高柜
  • 其余标准代码直接使用:45HQ、40NOR、20RF、40RF、20OT、40OT、20FR、40FR、DG、HT、TK

polpod 缺失时,追问用户,不执行后续步骤。


步骤二:确认目标价格

如用户未提供目标价格,发送以下消息:

您是否有目标价格?如果有请告诉我。如果没有,有运价更新时我会直接推送给您哦~盯价任务默认一周。

用户回复处理:

  • 提供了目标价格 → 记录 target_pricecurrency → 进入步骤三
  • 表示没有目标价格 / 回复"好的"/"不用"/"直接推" → 视为无目标价格(target_price 留空)→ 进入步骤三

如用户已提供目标价格,直接进入步骤三。


步骤三:向用户展示最终确认

以纯文字展示即将创建的盯价任务,明确询问用户是否确认创建。

固定格式(必填项):

请确认是否要创建盯价任务:
起运港:{pol_name}({pol})
目的港:{pod_name}({pod})

其后根据实际信息,仅展示用户已提供的可选项,未提供的不输出对应行:

可选项 已提供时追加
箱型 箱型:{container_type}
船期 船期:{etd}
船公司 船公司:{carrier}
目标价格 目标价格:{target_price} {currency}

最后追加一行:盯价任务默认一周哦~

有效期由服务端创建时自动计算,此处不展示,禁止自行推算或填写日期

必须等待用户明确确认后才能进入步骤四。


步骤四:确保推送 cron 就绪(创建盯价任务的前置条件)

cron 是运价推送的基础设施。必须先确认 cron 已就绪,再创建盯价任务;若 cron 无法就绪,不得进入步骤五。

4.1 检查 cron 是否已存在

openclaw cron list

在输出中查找名为 eyun-watch-poll 的任务。

  • 已存在 → 直接进入步骤五。
  • 不存在 → 继续 4.2。

4.2 注册轮询 cron

将下方命令中的 {EYUN_BASE_URL}{EYUN_COMPANY_ID}{channel}{to} 全部替换为步骤零查询到的实际值后执行,禁止保留占位符原文

openclaw cron add \
  --name "eyun-watch-poll" \
  --every "5m" \
  --session isolated \
  --message "Call the Eyun watch results API and notify the user if there are new freight results.

Steps:
1. Run this command:
   curl -s -X GET \"{EYUN_BASE_URL}/api/v1/watch-results/push\" -H \"company-id: {EYUN_COMPANY_ID}\"

2. Parse the JSON response.
   - If 'data' is an empty array: do nothing, output nothing.
   - If 'data' has items: format each item as a freight rate notification (route, carrier, price, ETD) and output the summary.

Output language: Chinese." \
  --tools exec \
  --announce \
  --channel {channel} \
  --to {to}

4.3 验证注册结果

openclaw cron list

确认输出中出现 eyun-watch-poll,状态为 active

  • 注册成功 → 进入步骤五。
  • 注册失败 → 告知用户推送通道暂时无法就绪,说明原因,不得继续创建盯价任务。

步骤五:调用盯价创建接口

{EYUN_BASE_URL}{EYUN_COMPANY_ID} 替换为步骤零读取到的实际值后执行:

curl -s -X POST "{EYUN_BASE_URL}/api/v1/watch-tasks" \
  -H "Content-Type: application/json" \
  -H "company-id: {EYUN_COMPANY_ID}" \
  -d '{
    "pol": "\x3C起运港代码>",
    "pol_name": "\x3C起运港名称或 null>",
    "pod": "\x3C目的港代码>",
    "pod_name": "\x3C目的港名称或 null>",
    "container_type": "\x3C箱型代码或 null>",
    "carrier": "\x3C船公司或 null>",
    "etd": "\x3C船期 YYYY-MM-DD 或 null>",
    "target_price": \x3C目标价格数字或 null>,
    "currency": "USD"
  }'

valid_fromvalid_to 无需传入,服务端自动设置为从现在起 7 天

成功响应

{
  "data": {
    "id": 1001,
    "pol": "CNSHA",
    "pod": "USLAX",
    "container_type": "40HQ",
    "target_price": "1200.00",
    "currency": "USD",
    "status": "active",
    "valid_from": "2026-04-05T10:00:00+00:00",
    "valid_to": "2026-04-12T10:00:00+00:00"
  }
}

失败处理

  • HTTP 4xx:提示用户参数有误,说明具体原因
  • HTTP 5xx:提示服务暂时不可用,建议稍后重试

步骤六:回复用户

以纯文字告知用户任务已创建,仅列出有值的字段:

✅ 盯价任务已创建!

航线:{pol_name}({pol})→ {pod_name}({pod})

其后仅列出有值的可选项(箱型、船公司、船期、目标价格),格式同步骤三确认模板。

最后说明推送规则(二选一):

  • 设置了目标价格:达到目标价格时将自动通知您
  • 未设置目标价格:有运价更新时将自动推送给您

不得在服务器响应之外补充任何承诺或预测(如"一定会有结果"、"预计明天有运价")。

至此本次对话结束,后续运价结果将由系统自动推送,无需用户或 agent 进行任何操作。

安全使用建议
This skill appears to do what it says: create watch tasks and set up a recurring cron to poll the Eyun service and notify users. Before installing, verify: 1) EYUN_BASE_URL points to a trusted service (prefer HTTPS) and EYUN_COMPANY_ID is correct; 2) inspect the Openclaw skill config (skills.entries.eyun_watch) to see what will be read (channel, to/chat_id) and ensure no other secrets are stored there; 3) after installation, run openclaw cron list to confirm the eyun-watch-poll job and review its message/targets; and 4) consider the privacy implications of periodic polling and notifications (cron runs every 5 minutes and will output whatever the Eyun endpoint returns). If any of these are unacceptable, do not enable the skill or remove the cron after testing.
功能分析
Type: OpenClaw Skill Name: eyun-watch Version: 1.1.1 The eyun-watch skill is designed to create and monitor freight price alerts. It uses standard OpenClaw features to retrieve its configuration, schedule a recurring polling task via 'openclaw cron', and interact with a specified backend API using 'curl'. The instructions in SKILL.md and README.md are consistent with the stated purpose of providing automated price notifications, and no indicators of malicious intent, data exfiltration, or unauthorized execution were found.
能力评估
Purpose & Capability
Name/description (create watch tasks and push IM notifications) align with the declared requirements: EYUN_BASE_URL and EYUN_COMPANY_ID are the expected credentials and curl is sufficient to call the service's REST endpoints.
Instruction Scope
SKILL.md instructs the agent to read the skill's Openclaw config (openclaw config get ...) and extract values such as channel and to (chat_id). That is logically required to register the cron target, but it means the agent will read configuration entries beyond the two declared env vars. The skill also directs the agent to register a cron that will execute curl every 5 minutes and announce outputs to the configured channel — expected behavior for a watcher, but it creates ongoing network activity and stored cron metadata (including company-id in the cron message).
Install Mechanism
Instruction-only skill with no install spec and no code files. This is low-risk from an install perspective; nothing is downloaded or written during installation by the skill itself.
Credentials
The declared env vars (EYUN_BASE_URL, EYUN_COMPANY_ID) are proportionate. However, the runtime instructions explicitly read additional config fields (channel, to) from the Openclaw skill entry rather than requiring them as declared env vars; those config values may contain chat IDs or routing metadata and will be used to announce cron output.
Persistence & Privilege
The skill will register a persistent cron job (eyun-watch-poll) that runs every 5 minutes and executes curl + parsing + announcements. always:false (not force-installed) is appropriate, but installing this skill will create persistent scheduled activity that performs network calls and posts to configured channels until the cron is removed.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install eyun-watch
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /eyun-watch 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.1.1
eyun-watch 1.1.1 - Updated environment variable and header requirements: switched from `EYUN_WHALE_IDENTITY` to `EYUN_COMPANY_ID` throughout the skill. - Modified all API and cron invocation examples to use `company-id` header instead of `whale-identity`. - Documentation (README.md, SKILL.md) revised for clarity and accuracy regarding new environment and authentication parameters. - No functional logic changes; changes are strictly related to config and documentation.
v1.0.0
eyun-watch v1.0.0 - Initial release: create price watch tasks for sea freight and receive instant notifications when new rates are available. - User interaction workflow: parses routes, confirms details, and creates watch tasks only after final user confirmation. - Supports extraction of ports, box type, carrier, ETD, and optional target price from user input with robust field handling and minimal prompts. - Ensures notification system (cron) is active before creating any price watch task. - Clearly separates user-facing messages from technical process; all responses feel direct and conversational. - Error handling included for parameter issues or temporary backend outages.
元数据
Slug eyun-watch
版本 1.1.1
许可证 MIT-0
累计安装 0
当前安装数 0
历史版本数 2
常见问题

Eyun Watch 是什么?

Create price watch tasks and receive IM notifications when freight rates are available. 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 119 次。

如何安装 Eyun Watch?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install eyun-watch」即可一键安装,无需额外配置。

Eyun Watch 是免费的吗?

是的,Eyun Watch 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

Eyun Watch 支持哪些平台?

Eyun Watch 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 Eyun Watch?

由 BobOfRivia(@bobofrivia)开发并维护,当前版本 v1.1.1。

💬 留言讨论