Install
openclaw skills install @me-news/me-featured-eventsopenclaw skills install @me-news/me-featured-events通过 ME News 官方接口查询和订阅 AI、Web3 活动。读取 API 参考 获取完整参数和响应字段;配置定时任务前读取 Agent 兼容说明。
scripts/ 中的确定性 Node.js 脚本;要求 Node.js 18 或更高版本。curl -fsS --max-time 30。code === 200,再读取 data。hours 或 start_date、end_date 参数;不要声称 API 只能查询 7 天。limit 增加服务器负担。用户首次启用并完成配置后,立即查询一次未来 7 天活动。
请求 GET https://api.me.news/skill/events/options。
询问用户订阅类型,可多选 AI、Web3;不选表示全部。
询问用户订阅地区,可多选;不选表示全部。
询问接收提醒的明确渠道和目标。不要依赖不确定的最后会话。
在当前 Agent 工作区运行初始化脚本。它先建立 /changes 基线,立即原子保存为 initialization_status: pending,再查询未来 7 天:
node <skill-dir>/scripts/init-subscription.mjs \
--state <workspace>/memory/me-featured-events.json \
--types ai,web3 \
--regions hong-kong
未选择类型或地区时省略对应参数。不得把历史活动作为新增推送。初始化后续步骤失败时保留 pending 状态;使用相同筛选条件重跑命令会沿用原 cursor,不得重新建立更晚的基线。pending 初始化期间不得修改类型、地区或时区。
将初始化脚本的非空 stdout 立即发送给用户;stdout 为空时静默结束。
向用户展示筛选条件、执行频率和接收目标,经明确确认后使用当前 Agent 支持的调度器创建两个任务:
10:00,时区 Asia/Shanghai,执行固定提醒。5 分钟执行新增活动检查。定时任务执行以下脚本,并将非空 stdout 投递到已确认的渠道:
node <skill-dir>/scripts/daily-upcoming.mjs --state <state-file>node <skill-dir>/scripts/poll-new-events.mjs --state <state-file>node <skill-dir>/scripts/record-delivery.mjs --state <state-file> --status success。node <skill-dir>/scripts/record-delivery.mjs --state <state-file> --status failed --error <简短错误>。不得记录 success。创建后立即手动运行两个任务,查看最近一次运行记录,并确认测试消息到达目标渠道。
建议状态结构:
{
"version": 2,
"type_ids": ["ai", "web3"],
"region_ids": ["hong-kong"],
"cursor": "服务端返回的游标",
"recent_ids": [],
"timezone": "Asia/Shanghai",
"initialization_status": "complete",
"pending_delivery": null
}
scripts/daily-upcoming.mjs,读取本地订阅配置。/upcoming?hours=168&limit=20,按需附加 type_ids、region_ids。自然语言指定月份或日期范围时改用 start_date、end_date。start_time 升序处理,使用接口返回的最新活动数据。description 中的 HTML 和多余空白,展示活动简介前 50 字;超过 50 字时添加省略号,不调用模型生成摘要。url。普通活动与合集活动必须链接到 ME 活动详情页;activity_import 表格导入活动使用表格中导入的链接。
8月27日 14:00–18:00(UTC+8);跨日活动显示 8月27日 14:30–8月28日 15:30(UTC+8)。end_time 为空时只显示开始时间,并另起一行显示“结束时间未提供”。end_time 无法解析时显示“⚠️ 结束时间格式异常”;早于或等于 start_time 时显示“⚠️ 结束时间疑似异常”。不得擅自把异常的午夜时间解释成次日。cursor。scripts/poll-new-events.mjs,读取本地 cursor、筛选条件和 recent_ids。/changes,必须传入已保存的 cursor。id 去重;activity:* 与 activity_other:* 是不同数据源。next_cursor 和候选 recent_ids 原子写入 pending_delivery,但不推进正式 cursor,然后输出一条“新增会议”消息。record-delivery.mjs 反馈结果:
--status success:提交 pending_delivery 中的 cursor 和去重 ID,然后清除待投递消息。--status failed:记录失败但保留 pending_delivery,下次轮询重复输出同一消息。recent_ids 仅保留最近 500 个,避免状态无限增长。has_more=true 时使用新游标继续拉取,直到为 false。该流程提供至少一次投递:失败或未知结果不会漏掉消息,但“渠道实际成功、成功反馈写入失败”时可能重复推送。不得为了去重而在投递前提交 cursor。
cursor,不要回放历史新增活动。ai、web3。地区值只使用 /options 返回的 value。按以下顺序展示简介:
description 中的 HTML 标签并合并多余空白。description 为空时,使用标题和地址组成事实性短句。不得把截取内容描述为模型生成的摘要,也不得增加原数据没有的事实。
以 format.md 为唯一输出格式规范。不要在其他文档复制消息模板;格式变化时只更新该文件和确定性脚本测试。
https://api.me.news/skill/events/ 下的三个只读端点。code 非 200 时视为失败;记录错误摘要但不推进状态。