Skills skill-everyday

每天抓取 Clawhub 热门技能,深入分析并生成报告。每次执行获取一个未分析过的热门技能,避免重复。

install
source · Clone the upstream repo
git clone https://github.com/openclaw/skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/autoxj/skill-everyday" ~/.claude/skills/clawdbot-skills-skill-everyday && rm -rf "$T"
manifest: skills/autoxj/skill-everyday/SKILL.md
source content

技能分析日报 (skill-everyday)

每天执行一次,抓取 Clawhub 热门技能,深入分析并生成报告。

特性

  • 无需平台账号或 API Key:榜单与详情来自公开页面;运行期状态只写在本地
    data/
  • 去重:按
    data/analyzed.json
    记录已分析 slug,每次只取「当前榜单中、未分析过的第一个」热门技能。
  • 依赖需先行安装:本技能依赖 Node.jsPlaywrightChromium(见下方「依赖」)。装好后再执行脚本即可,无需编辑配置文件。

目录结构

skill-everyday/
├── SKILL.md              # 本文件
├── README.md             # 安装与运行(给人看的简要说明)
├── package.json          # 可选:声明 playwright 依赖,便于 npm install
├── data/
│   ├── analyzed.json     # 已分析技能列表(自动管理)
│   └── reports/          # 每日报告
│       └── YYYY-MM-DD-<slug>.md
└── scripts/
    └── runner.mjs        # 执行脚本

首次运行

scripts/runner.mjs
时会自动创建
data/
data/reports/
(若不存在),并初始化
data/analyzed.json

使用方法

本技能根目录

SKILL.md
所在目录)执行:

node scripts/runner.mjs

或在 OpenClaw 中按触发语调用本技能后,由 Agent 执行上述命令。

工作流程

1. 获取热门技能列表

使用 Playwright 访问

clawhub.ai/skills
并拦截页面请求的 Convex
api/query
响应以取得榜单数据:

import { chromium } from 'playwright';

let apiData = null;
const browser = await chromium.launch({ headless: true });
const page = await browser.newPage();

await page.route('https://wry-manatee-359.convex.cloud/api/query', async route => {
  const response = await route.fetch();
  const data = await response.json();
  apiData = data;
  route.continue();
});

await page.goto('https://clawhub.ai/skills', { waitUntil: 'networkidle' });
await page.waitForTimeout(3000);

const result = apiData?.status === 'success' ? apiData.value : apiData;
const skills = result?.page || [];
// 按下载量排序
skills.sort((a, b) => (b.skill?.stats?.downloads || 0) - (a.skill?.stats?.downloads || 0));

2. 避免重复分析

从技能根目录下的

data/analyzed.json
读取已分析列表(路径以
SKILL.md
为锚:
path.join(skillRoot, 'data', 'analyzed.json')
)。

// 与 scripts/runner.mjs 一致:SKILL_DIR = dirname(scripts),再拼 data/analyzed.json
const analyzedFile = path.join(SKILL_DIR, 'data', 'analyzed.json');
if (!analyzedData.analyzed.includes(skillSlug)) {
  // 分析该技能
}

3. 获取技能详情

打开技能详情页

https://clawhub.ai/skill/{slug}
,读取标题、描述与页面正文(与榜单接口分离,非单独「完整信息」REST 文档)。

4. 尝试读取本地技能源码

在常见 OpenClaw 布局下,技能根目录的上一级为

skills/
,据此拼接目标技能目录:

const skillsRoot = path.join(SKILL_DIR, '..');
const targetSkillDir = path.join(skillsRoot, skillSlug);

5. 生成报告

按模板生成报告,保存到

data/reports/YYYY-MM-DD-<slug>.md
(同日多次运行不会互相覆盖)。

6. 更新状态

自动更新

data/analyzed.json
添加新技能。

报告模板

  • 内置深度模板的技能(如
    self-improving-agent
    ):标题行 + 核心原理 + Clawhub 简介 + 元数据表 + 一、核心工作原理(OpenClaw 主流实现)(1~4 小节)+ 二、为什么受欢迎 + 可选榜单数据补充;不插入通用「技术/设计亮点」占位段落。
  • 其他技能:排名/名称/标识/分类/下载与点赞 + Clawhub 功能介绍 + 核心流程与特点(默认模板)+ 可选榜单数据补充。

报告保存到

data/reports/YYYY-MM-DD-<slug>.md

依赖

  • Node.js:执行
    scripts/runner.mjs
    (ESM)。
  • Playwright + Chromium:若目录内有
    package.json
    ,可在技能根目录执行
    npm install
    ,再
    npx playwright install chromium
    ;否则全局或上级环境已安装
    playwright
    亦可。仅声明
    metadata.openclaw.requires
    不会自动安装浏览器。

触发方式

用户发送 "分析一个 Clawhub 技能" 或 "skill-everyday" 时执行。