Skill: ebrun-developer/ebrun-original-news (version 1.0.0)

--- name: ebrun-original-news description: 获取亿邦动力网最新电商新闻报道。 当用户说"查亿邦最新文章"、"查跨境最新文章"、"产业最新报道"、"零售最新报道"、"今日电商新闻"时触发。 --- ## Goal 技能目的 根据用户查询的频道或希望查询的文章类型，返回亿邦动力网该频道下最新的10篇文章列表，包含标题、作者、摘要、发布时间和原文链接。 ## When to use 何时使用 以下自然语言表达会触发此技能： - "查亿邦最新文章" - "查跨境最新文章" - "产业最新报道" - "零售最新报道" - "今日电商新闻" - "看看有什么AI新闻" - "品牌有什么新动态" 技能自动识别用户提到的频道关键词，匹配到对应的频道配置。 ## Do not use 不使用 以下情况不触发此技能： - 用户询问非电商新闻内容（如娱乐、体育、时政） - 用户要求获取超过10篇文章 - 用户提到的频道不在频道列表中 - 用户要求获取历史存档而非最新文章 ## 安装成功提示 技能安装成功，提供欢迎信息。 **欢迎信息模板：** ``` 🎉 亿邦新闻技能已安装成功！ 你可以问我以下问题： • "查亿邦最新文章" - 获取推荐频道最新文章 • "查XX频道最新文章" - 获取某频道最新报道 • "查亚马逊新闻" - 获取亚马逊最新文章 • "产业有什么新动态" - 获取产业互联网最新报道 • "看看AI新闻" - 获取AI频道最新文章 • "看品牌全球化报道" - 获取品牌全球化频道文章 支持的主要频道： 📰 推荐 🛒 未来零售（淘宝天猫、抖音、京东、视频号、美团、快手、拼多多、小红书） 🌏 跨境电商（亚马逊、阿里国际、TikTok、Temu、SHEIN） 🏭 产业互联网（B2B、产业科技、数据要素、产业出海、数智供应链、数智化采购） 🏷️ 品牌（新竞争力品牌、品牌全球化） 🤖 AI ``` ## Procedure 执行流程 调用技能执行流程 ### 步骤1：频道识别 1. 读取 `references/channel-list.json` 2. 将用户输入与频道列表匹配： - 精确匹配频道名称（如"跨境电商"） - 模糊匹配关键词（如"跨境"匹配"跨境电商"） - 匹配子频道关键词（如"亚马逊"匹配"跨境电商-亚马逊"） ### 步骤2：频道未匹配处理 如果用户输入的频道关键词未匹配到任何频道： 1. 自动切换到「推荐」频道查询 3. 继续执行步骤3取「推荐」频道数据 ### 步骤3：数据获取 1. 根据匹配结果构造API URL：`{base_url}{channel_path}.json` 2. 发起 GET 请求 — 接口无需 header / cookie 3. 解析返回的文章列表，取前10条 #### 快速示例 优先直接调用本 skill 自带脚本，不要临时自己写抓取代码。 1. 优先使用 Python 脚本，输入 `channel_path` 或完整 URL 都可以 2. 如果 Python 不可用，再使用 Shell 脚本 3. 脚本默认输出 JSON；只有显式传 `--table` 才输出表格 ```bash # 例：查询 AI 频道最新 10 篇 python3 scripts/fetch_news.py [REDACTED_SECRET] --json --limit 10 # 例：查询推荐频道最新 10 篇 python3 scripts/fetch_news.py [REDACTED_SECRET] --json --limit 10 # Python 不可用时的降级方案 bash scripts/fetch_news.sh [REDACTED_SECRET] --json --limit 10 ``` 执行后会返回 JSON 数组。拿到结果后： 1. 读取前 10 条文章 2. 对每条文章提取 `title`、`author`、`summary`、`publish_time`、`url` 3. 生成 Markdown 前，转义 `title` / `author` / `summary` 中的 Markdown 特殊字符，并只使用可信的 HTTPS 原文链接 4. 按“步骤5：格式化输出”要求生成 Markdown 如果用户指定了具体频道，先从 `references/channel-list.json` 找到对应的 `channel_path`，再把该路径传给脚本；不要手写猜测 URL。 ### 步骤4：版本更新检查 **独立执行，不影响主流程** 在后台异步检查是否有新版本： 1. 优先请求版本接口：`{base_url}/_index/ClaudeCode/SkillJson/skill_version.json` 2. 从接口返回的 JSON 对象中读取 `ebrun-original-news` 字段，作为远端最新版本号 3. 读取 `references/version.json` 中的 `current_version` 4. 如果远端版本号与 `current_version` 不一致： - 记录更新可用状态 - 暂存 `update_url_github` 和 `update_url_gitee` 5. 如果版本接口请求失败： - 读取 `references/version.json` 中的 `update_url_github` / `update_url_gitee` - 从 GitHub / Gitee 仓库远端读取 `references/version.json` - 取远端 `current_version` 与本地 `current_version` 做比对 - 如果远端仓库中的版本号不一致，则提示更新 6. 只有当版本接口和远端仓库版本文件都失败时，才视为“当前无法判断是否有更新” 7. `references/version.json` 中的 `check_interval_hours` 用于限制检查频率；如果未到间隔，则优先返回运行时缓存的上次检查结果 8. 运行时缓存不得回写 `references/version.json`，避免污染 skill 安装内容 9. 当显式传入自定义 `--version-url` 时，只能复用同一版本源写入的缓存；不同版本源之间不能混用缓存 **注意**：此步骤失败或超时不会影响主流程，仅记录状态供后续使用。 #### 快速示例 优先直接调用更新脚本，不要临时自己写版本比较逻辑。 ```bash # 优先使用 Python 版本 python3 scripts/update.py --json # Python 不可用时的降级方案 bash scripts/update.sh --json # 忽略检查间隔，强制联网检查 python3 scripts/update.py --json --force ``` 脚本输出会包含： 1. `current_version` 2. `latest_version` 3. `update_available` 4. `check_source`：`remote_api`、`github_version_json`、`gitee_version_json` 或 `unavailable` 5. `update_url_github` / `update_url_gitee` 6. `version_file_url`：降级到远端仓库版本文件时，返回实际使用的远端 `references/version.json` 地址 7. 如果未到 `check_interval_hours`，脚本会返回缓存结果，`status` 为 `cached` 默认输出为 JSON；只有显式传 `--table` 时才输出文本表格。 如果 `update_available` 为 `true`，则在最终结果页脚追加更新提示。 文案需要根据检查结果区分两种场景： 1. 当 `status != cached` 时，表示本轮刚完成联网检查并确认有新版本 2. 当 `status == cached` 时，表示本轮未重新检查，只是沿用上次缓存结果继续提醒 更新提示要满足以下要求： - 使用短句，不要把说明、命令和长链接挤在同一行 - 优先引导用户回复一句自然语言来触发更新 - 链接作为次要信息放在下一行 - 避免使用“检测到”“如需更新请回复……，或访问……”这种过长的串联句式 ### 步骤5：格式化输出 #### 按用户要求查询文章时的格式化输出 ```markdown 📰 亿邦原创新闻 | {channel_name} {sub_channel_name} 获取时间: {current_time} --- [{title}]({url}) {author} · {publish_time} {summary} [{title}]({url}) {author} · {publish_time} {summary} --- 更多资讯请见[亿邦官网](https://www.ebrun.com/) ``` #### 频道未匹配，按推荐频道处理的格式化输出 ```markdown 未找到"{用户输入}"频道的文章，将为您展示推荐内容。 📰 亿邦原创新闻 | {channel_name} {sub_channel_name} 获取时间: {current_time} --- [{title}]({url}) {author} · {publish_time} {summary} [{title}]({url}) {author} · {publish_time} {summary} --- 可用的频道有： 📰 推荐 | 🛒 未来零售 | 🌏 跨境电商 | 🏭 产业互联网 | 🏷️ 品牌 | 🤖 AI 您可以直接说： • "查跨境最新文章" 或 "查亚马逊新闻" • "产业有什么新动态" • "看看AI新闻" 更多资讯请见[亿邦官网](https://www.ebrun.com/) ``` **追加更新提示（如检测到新版本）：** 如果步骤4检测到新版本可用，在页脚后追加。需要根据 `status` 使用不同模板： #### 场景A：本轮刚检查到新版本（`status != cached`） ```markdown --- ### 技能更新 发现 `ebrun-original-news` 有新版本 `v{latest_version}`。 回复“帮我更新 ebrun-original-news 技能”即可开始更新。 更新地址：[GitHub]({update_url_github}) | [Gitee]({update_url_gitee}) ``` #### 场景B：本轮未重新检查，沿用缓存继续提醒（`status == cached`） ```markdown --- ### 技能更新 可用更新：`ebrun-original-news v{latest_version}`。 ``` #### 文案选择规则 - `status != cached`：使用“发现有新版本”语气，强调这是刚检查到的结果 - `status == cached`：使用“当前仍有可用更新”语气，强调这是延续提醒，不要伪装成刚刚检查 - 如果只有一个可用链接，就只展示该链接，不要输出空链接占位 - 不要在更新提示里内嵌长命令或把链接直接裸露拼接到句子中 ## Output format 输出格式 - 格式：Markdown - 标题区：📰 图标 + "亿邦原创新闻" + 日期范围 + 频道名称 - 获取时间：显示当前时间 - 文章列表：每条包含标题（带链接）、作者、发布时间、摘要 - 分隔线：文章之间用空行分隔 - 页脚：链接到亿邦官网 ## Failure handling 异常情况处理 异常情况处理： | 场景 | 处理方式 | |------|----------| | 频道未匹配 | 自动切换到「推荐」频道，返回推荐文章并友善提示可用频道列表 | | API请求失败 | 提示用户检查网络连接，稍后重试 | | JSON解析失败 | 提示管理员检查API接口格式 | | 返回文章数为0 | 提示该频道暂无最新文章 | | 版本检查失败 | 静默处理，不影响主流程，不显示更新提示 | ## Additional resources 配套文件清单 配套文件清单： | 文件路径 | 用途 | |----------|------| | `scripts/fetch_news.py` | 优先使用的新闻抓取脚本。支持传入 `channel_path` 或完整 URL，自动补全 API 地址，可通过 `--json` 输出结构化结果、通过 `--limit` 控制返回条数，并校验请求域名安全性。 | | `scripts/fetch_news.sh` | Python 不可用时的降级抓取脚本。支持与 Python 版一致的 `channel_path` / URL 输入、`--json` 和 `--limit` 参数，依赖 `curl` 获取数据，适合作为兼容性后备方案。 | | `scripts/update.py` | 优先使用的版本检查脚本。会请求远端 `skill_version.json`，读取 `ebrun-original-news` 字段并与本地 `current_version` 比对；接口失败时降级到 `references/version.json` 和 GitHub/Gitee 链接可达性检查。 | | `scripts/update.sh` | Python 不可用时的降级版本检查脚本。提供与 Python 版一致的版本比对、失败处理、频率控制和降级检查能力，依赖 `curl`。 | | `references/api-reference.md` | 亿邦频道 JSON 接口参考文档。包含 URL 构造规则、响应字段、错误处理和脚本防御性处理说明；需要确认接口细节或字段语义时优先读取。 | | `references/channel-list.json` | 频道与子频道映射表，包含 `base_url`、主频道别名和每个子频道对应的 `channel_path`。匹配用户意图或构造请求前必须读取。 | | `references/version.json` | Skill 版本信息、更新链接和本地检查缓存。`check_interval_hours` 控制检查频率，`last_check_time` 等字段用于缓存上次检查结果。 | | `examples.md` | 使用示例集合。汇总了自然语言触发、主频道与子频道匹配、推荐频道回退、脚本直调、批量汇总、版本检查和错误处理等典型用法；需要为上层代理、自动化任务或新接入者提供参考时优先查看。 |


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