{"skill":{"slug":"skills-weekly","displayName":"OpenClaw Skills Weekly","summary":"OpenClaw Skills Weekly — tracks trending ClawHub skills, generates GitHubAwesome-style YouTube video scripts with two-track ranking (Movers + Rockets).","description":"---\r\nname: skills-weekly\r\ndescription: \"OpenClaw Skills Weekly — tracks trending ClawHub skills, generates GitHubAwesome-style YouTube video scripts with two-track ranking (Movers + Rockets).\"\r\nemoji: \"\\U0001F4CA\"\r\nuser-invocable: true\r\nmetadata:\r\n  openclaw:\r\n    version: \"1.0.0\"\r\n    requires:\r\n      bins: [\"python3\"]\r\n      env: [\"ANTHROPIC_API_KEY\"]\r\n    triggers:\r\n      - \"skills weekly\"\r\n      - \"trending skills\"\r\n      - \"clawhub trending\"\r\n      - \"skill metrics\"\r\n      - \"weekly report\"\r\n      - \"skill snapshot\"\r\n      - \"openclaw skills\"\r\n      - \"generate report\"\r\n      - \"video script\"\r\n---\r\n\r\n# OpenClaw Skills Weekly\r\n\r\nAutomated pipeline for tracking trending ClawHub skills and generating YouTube-ready video scripts in the GitHubAwesome format.\r\n\r\n## What This Skill Does\r\n\r\n1. **ClawHub API Discovery** — Fetches all ~13K skills from `GET https://clawhub.ai/api/v1/skills` with cursor pagination. No auth required.\r\n2. **SQLite Time-Series Snapshots** — Records daily metrics (installs, downloads, stars) to build 7-day velocity history.\r\n3. **Two-Track Ranking** — MOVERS (established skills, 30+ days, ranked by install velocity) and ROCKETS (new skills <30 days, with recency bonus). Author diversity cap prevents one author from dominating.\r\n4. **Content Harvesting** — Fetches documentation and author info from ClawHub detail API for top-ranked skills.\r\n5. **YouTube Script Generation** — Generates GitHubAwesome-style video segments via Claude Haiku: hook-first, technical specs, no popularity metrics, dry newscast tone.\r\n6. **Dual Output** — Markdown report (`.md`) + voice-ready video script (`.txt`).\r\n\r\n## Commands\r\n\r\nParse the user's request and route to the correct mode:\r\n\r\n| User says | Mode | What happens |\r\n|---|---|---|\r\n| `weekly report` or `full report` or `generate report` | Full Pipeline | Discovery → snapshot → rank → harvest → scripts → output |\r\n| `snapshot` or `daily snapshot` | Snapshot Only | Record ClawHub metrics to DB (no scripts) |\r\n| `trending` or `what's trending` | Quick Trending | Show top 10 from existing DB data |\r\n| `status` or `db status` | Status | Show DB health and snapshot history |\r\n| `video script` or `generate script` | Script Only | Re-generate scripts from last snapshot (no re-fetch) |\r\n\r\n## Full Pipeline (Weekly Report)\r\n\r\nFirst, install dependencies if not already present:\r\n\r\n```bash\r\ncd \"${SKILL_ROOT}\" && pip install -r requirements.txt --quiet 2>/dev/null || pip3 install -r requirements.txt --quiet\r\n```\r\n\r\nThen run the full pipeline:\r\n\r\n```bash\r\ncd \"${SKILL_ROOT}\" && python3 run_weekly.py --top 10 --episode ${EPISODE_NUM:-1}\r\n```\r\n\r\nReplace `${EPISODE_NUM}` with the episode number the user specifies, or default to 1.\r\n\r\nIf the user says `--skip-x` or doesn't want X/Twitter capture, add `--skip-x`:\r\n\r\n```bash\r\ncd \"${SKILL_ROOT}\" && python3 run_weekly.py --top 10 --skip-x --episode ${EPISODE_NUM:-1}\r\n```\r\n\r\n**What this produces:**\r\n- `openclaw_weekly_YYYYMMDD.md` — Data-rich markdown report with metrics, rankings, and scripts\r\n- `openclaw_weekly_YYYYMMDD_script.txt` — Voice-ready video script in GitHubAwesome format\r\n\r\nPresent both file paths to the user when done.\r\n\r\n**Expected output:**\r\n```\r\n============================================================\r\n  OpenClaw Skills Weekly — Full Pipeline (v4)\r\n  Week of Mar 01, 2026\r\n============================================================\r\n  PHASE 1: X/Twitter Signal Capture\r\n  PHASE 2: ClawHub Data Pipeline\r\n  [1/5] Discovering ClawHub skills...\r\n  [2/5] Saving snapshot...\r\n  [3/5] Ranking by 7-day velocity...\r\n  [4/5] Harvesting content...\r\n  [5/5] Generating YouTube scripts...\r\n  DONE:\r\n    Report: openclaw_weekly_20260301.md\r\n    Script: openclaw_weekly_20260301_script.txt\r\n```\r\n\r\n## Snapshot Only (Daily Cron)\r\n\r\nFor daily snapshot accumulation without script generation:\r\n\r\n```bash\r\ncd \"${SKILL_ROOT}\" && python3 run_weekly.py --snapshot-only --skip-x\r\n```\r\n\r\nTell the user how many skills were captured and how many snapshot dates exist in the DB.\r\n\r\n## Quick Trending\r\n\r\nShow what's trending from existing DB data without re-fetching:\r\n\r\n```bash\r\ncd \"${SKILL_ROOT}\" && python3 main.py --list-db\r\n```\r\n\r\n## Status\r\n\r\n```bash\r\ncd \"${SKILL_ROOT}\" && python3 main.py --list-db\r\n```\r\n\r\nShows: DB path, total snapshot rows, distinct dates, top skills by current installs.\r\n\r\n## CLI Options Reference\r\n\r\n| Flag | Default | Description |\r\n|---|---|---|\r\n| `--top N` | 10 | Number of top movers to include |\r\n| `--days N` | 7 | Trailing days for velocity calculation |\r\n| `--episode N` | 1 | Episode number for video script cold open |\r\n| `--skip-x` | false | Skip X/Twitter signal capture |\r\n| `--snapshot-only` | false | Just record snapshot, no scripts |\r\n| `--max-pages N` | 0 (all) | Limit API pages (for testing) |\r\n| `--model MODEL` | claude-haiku-4-5-20251001 | Anthropic model for script gen |\r\n| `--output FILE` | auto-dated | Custom output file path |\r\n| `--mock` | false | Use synthetic data (offline dev) |\r\n\r\n## Environment Variables\r\n\r\n| Variable | Required | Description |\r\n|---|---|---|\r\n| `ANTHROPIC_API_KEY` | Yes | For YouTube script generation via Claude |\r\n| `GITHUB_TOKEN` | No | For fetching source READMEs from GitHub |\r\n| `XAI_API_KEY` | No | For X/Twitter signal capture via xAI |\r\n| `CLAWHUB_BASE_URL` | No | Override ClawHub URL (default: https://clawhub.ai) |\r\n\r\n## Video Script Format\r\n\r\nScripts follow the GitHubAwesome \"GitHub Trending Weekly\" format:\r\n- **Cold open**: \"It is time for OpenClaw Skills Weekly, episode number N...\"\r\n- **Per-skill segments** (~20 sec each): Hook first → technical specs → sharp closer\r\n- **No popularity metrics** in narration (no download/install/star counts)\r\n- **Dry, confident newscast tone** — no hype, no superlatives\r\n- **No outro** — last item ends the episode\r\n\r\n## Architecture\r\n\r\n```\r\nrun_weekly.py          # Full pipeline orchestrator\r\nmain.py                # Alternative CLI with --list-db\r\ndiscovery.py           # ClawHub API cursor pagination (~13K skills)\r\nstorage.py             # SQLite time-series (slug-scoped dedup, CTE velocity)\r\nranker.py              # Two-track: Movers + Rockets, author diversity cap\r\nharvester.py           # ClawHub detail API content + author extraction\r\nscript_generator.py    # LLM script gen + markdown + video script rendering\r\ncommunity_signals.py   # X/Twitter signal loading and rendering\r\nx_capture.py           # xAI x_search API integration\r\ndata/metrics.db        # SQLite database (auto-created)\r\n```\r\n","tags":{"analytics":"1.1.0","latest":"1.1.0","productivity":"1.1.0"},"stats":{"comments":0,"downloads":858,"installsAllTime":0,"installsCurrent":0,"stars":0,"versions":2},"createdAt":1772401707637,"updatedAt":1778994326490},"latestVersion":{"version":"1.1.0","createdAt":1772407027088,"changelog":"Container DB bridge for real 7-day deltas + GitHubAwesome script style (few-shot, 30-50 words, sardonic hooks)","license":null},"metadata":{"setup":[{"key":"ANTHROPIC_API_KEY","required":true}],"os":null,"systems":null},"owner":{"handle":"ademczuk","userId":"s17denfnjsp27wvz35510sja0x84z5wb","displayName":"ademczuk","image":"https://avatars.githubusercontent.com/u/5212682?v=4"},"moderation":{"isSuspicious":false,"isMalwareBlocked":false,"verdict":"clean","reasonCodes":["review.llm_review"],"summary":"Review: review.llm_review","engineVersion":"v2.4.24","updatedAt":1780089734079}}