OpenClaw/clawhub-security-signals huggingface dataset:
Skill: shaiss/near-name-service (version 1.0.0)

--- name: near-name-service description: Manage NEAR Name Service (.near domains) - check availability, register, resolve, and manage names. --- # NEAR Name Service Skill Manage .near domain names with ease. ## Description This skill provides a CLI interface to interact with NEAR Name Service (.near domains). Check availability, register names, resolve names to accounts, and manage your owned .near domains. ## Features - Check .near name availability - Register a .near domain - Resolve .near domain to account ID - List owned .near domains - Simple command-line interface ## Commands ### `near-name check <name>` Check if a .near domain is available. **Parameters:** - `name` - The domain name (without .near suffix) **Example:** ```bash near-name check mydomain ``` ### `near-name register <name> [account_id]` Register a .near domain. **Parameters:** - `name` - The domain name (without .near suffix) - `account_id` - Account to register to (optional, uses default) **Example:** ```bash near-name register mydomain myaccount.near ``` ### `near-name resolve <name>` Resolve a .near domain to its account ID. **Parameters:** - `name` - The domain name to resolve **Example:** ```bash near-name resolve mydomain.near ``` ### `near-name list [account_id]` List all .near domains owned by an account. **Parameters:** - `account_id` - Account to list domains for (optional, uses default) ## Configuration Set your default account: ```bash export NEAR_ACCOUNT="myaccount.near" ``` ## Pricing - Registration: ~5-10 NEAR (varies by name length) - Annual renewal: ~0.1 NEAR - Shorter names (<4 chars) cost more ## References - NEAR Name Service: https://near.org/names/ - Naming Registry Contract: naming.near - NEAR CLI: https://docs.near.org/tools/near-cli


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: suspicious | SkillSpector: clean (LOW)
Skill: zzlupus/download-video (version 1.0.0)

--- name: download-video description: Use when the user wants to download a YouTube or Bilibili video by URL or title, saving to local Videos folder --- # Download Video (YouTube / Bilibili) ## Overview Use `yt-dlp` to download videos from YouTube or Bilibili. Downloads go to the user's `Videos` folder (`~/Videos`). ## Prerequisites **yt-dlp** must be installed: ``` yt-dlp --version # Install if missing pip install yt-dlp # cross-platform winget install yt-dlp # Windows brew install yt-dlp # macOS sudo apt install yt-dlp # Debian/Ubuntu ``` **ffmpeg** is recommended for merging video+audio streams. ## Download by URL ``` yt-dlp -o "<videos-dir>/%(title)s.%(ext)s" "<url>" ``` Replace `<videos-dir>` with the user's Videos folder path, and `<url>` with the video URL. Supported URLs: - YouTube: `https://www.youtube.com/watch?v=...` or `https://youtu.be/...` - Bilibili: `https://www.bilibili.com/video/BV...` ## Download by Title (search) ``` # YouTube yt-dlp -o "<videos-dir>/%(title)s.%(ext)s" "ytsearch1:<title>" # Bilibili yt-dlp -o "<videos-dir>/%(title)s.%(ext)s" "bilisearch1:<title>" ``` ## Quick Reference | Goal | Flag | |------|------| | Best quality (default) | `-f bestvideo+bestaudio/best` | | Audio only (mp3) | `-x --audio-format mp3` | | Specific resolution | `-f "bestvideo[height<=720]+bestaudio"` | | Subtitles | `--write-subs --sub-langs zh-Hans,en` | | Playlist (all videos) | just pass the playlist URL | | Limit speed | `--rate-limit 2M` | ## Common Mistakes - **"ffmpeg not found"** — merge of best video+audio fails. Install ffmpeg or use `-f best` (single stream). - **Bilibili login-required content** — add cookies with `--cookies-from-browser chrome`. - **Videos folder missing** — create it first. ## Workflow 1. **URL given** → download directly 2. **Title given** → use `ytsearch1:` or `bilisearch1:` prefix 3. **yt-dlp missing** → install, then retry 4. **Error** → read error message, check Common Mistakes above


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: daisuke134/tone-rewriter (version 1.0.0)

--- name: tone-rewriter description: "Rewrite text in any of 10 tones (professional, casual, friendly, formal, empathetic, persuasive, academic, simple, witty, urgent) while preserving meaning. x402 pay-per-use: $0.01 USDC. Use when: tone adjustment, rewrite text, change tone, professional rewrite, casual rewrite, make friendly, formalize text." version: "1.0.0" author: "Daisuke134" metadata: openclaw: emoji: "🎭" os: ["darwin", "linux"] --- # tone-rewriter — Tone Rewriting Service for AI Agents Rewrite any text in 10 different tones while preserving the original meaning. Pay $0.01 USDC per request via x402. ## Prerequisite ```bash npm install -g awal@2.0.3 awal auth login ``` ## Usage ```bash npx awal@2.0.3 x402 pay https://anicca-proxy-production.up.railway.app/api/x402/tone-rewriter \ -X POST \ -d '{"text":"Hey fix this ASAP","target_tone":"professional"}' ``` ## Input Schema | Field | Type | Required | Description | |-------|------|----------|-------------| | text | string | ✅ | Text to rewrite (max 2000 chars) | | target_tone | string | ✅ | One of: professional, casual, friendly, formal, empathetic, persuasive, academic, simple, witty, urgent | | language | string | ❌ | en, ja, or auto (default: auto) | | preserve_length | boolean | ❌ | Keep output within ±20% of input length (default: false) | ## Output Schema ```json { "rewrite_id": "rw_a1b2c3", "original_text": "Hey fix this ASAP", "rewritten_text": "Could you please address this issue at your earliest convenience?", "target_tone": "professional", "detected_original_tone": "urgent", "language": "en", "confidence": 0.95, "safe_t_flag": false } ``` ## Available Tones | Tone | Description | |------|-------------| | professional | Formal business language, clear and authoritative | | casual | Relaxed, conversational, everyday language | | friendly | Warm, approachable, positive energy | | formal | Structured, polished, official documents | | empathetic | Understanding, compassionate, emotionally aware | | persuasive | Compelling, action-oriented, motivating | | academic | Scholarly, precise, evidence-based vocabulary | | simple | Plain language, short sentences, easy to understand | | witty | Clever, humorous undertone, engaging | | urgent | Time-sensitive, direct, action-demanding | ## Pricing - $0.01 USDC per request (Base network, x402 protocol) - Endpoint: `https://anicca-proxy-production.up.railway.app/api/x402/tone-rewriter` ## Pairs well with - **emotion-detector**: Detect emotion → choose appropriate tone → rewrite - **buddhist-counsel**: Get guidance → rewrite in empathetic tone for the user


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: suspicious | SkillSpector: clean (LOW)
Skill: 534422530/laosi-spotify (version 1.0.0)

--- name: spotify-controller description: Spotify控制技能 - 终端控制Spotify播放、搜索、管理播放列表。 metadata: {"openclaw": {"requires": {"bins": ["spotifyd", "spotify-cli"]}, "install": []}} tags: [spotify, music, playback, playlist, control] version: 1.0.0 author: laosi source: adapted --- # Spotify Controller - Spotify控制 > 激活词: Spotify / 播放音乐 / 控制音乐 ## 安装 ```bash # Windows: 使用PowerShell或第三方CLI # 推荐: spicetify-cli winget install spicetify-cli ``` ## 功能 - 播放/暂停/切换 - 搜索歌曲/专辑/艺术家 - 管理播放列表 - 显示当前播放 - 音量控制 ## Python实现 ```python import subprocess import json class SpotifyController: def __init__(self): self.cmd_prefix = "spicetify" def play(self): subprocess.run([self.cmd_prefix, "play"], capture_output=True) def pause(self): subprocess.run([self.cmd_prefix, "pause"], capture_output=True) def next_track(self): subprocess.run([self.cmd_prefix, "next"], capture_output=True) def prev_track(self): subprocess.run([self.cmd_prefix, "previous"], capture_output=True) def search(self, query: str) -> list: result = subprocess.run( [self.cmd_prefix, "search", query, "--json"], capture_output=True, text=True ) if result.stdout: return json.loads(result.stdout) return [] def now_playing(self) -> dict: result = subprocess.run( [self.cmd_prefix, "status", "--format", "json"], capture_output=True, text=True ) if result.stdout: return json.loads(result.stdout) return {} def set_volume(self, level: int): subprocess.run([self.cmd_prefix, "volume", str(level)], capture_output=True) ``` ## 命令行操��� ```bash # 播放控制 spicetify play spicetify pause spicetify next spicetify previous # 搜索 spicetify search "周杰伦" # 显示状态 spicetify status # 音量 spicetify volume 80 ``` ## 播放列表操作 ```python def create_playlist(name: str, tracks: list): subprocess.run([self.cmd_prefix, "playlist", "create", name]) for track in tracks: subprocess.run([self.cmd_prefix, "playlist", "add", track]) def play_playlist(playlist_id: str): subprocess.run([self.cmd_prefix, "playlist", "play", playlist_id]) ``` ## 输出格式 ```markdown ## 当前播放 ### 歌曲信息 - 标题: 晴天 - 艺术家: 周杰伦 - 专辑: 叶惠美 - 时长: 4:29 - 进度: 1:23 / 4:29 ### 状态 - 状态: 播放中 - 音量: 75% - 随机: 关闭 - 循环: 关闭 ### 播放列表 - 列表: 我的收藏 - 歌曲数: 128首 ``` ## 使用场景 1. 播放背景音乐 2. 语音控制音乐 3. 定时播放白噪音 4. 自动化DJ


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: zhoulincom/simple-writing-polisher (version 0.1.1)

name: simple-writing-polisher description: 将中文文本快速润色为更清晰、自然、专业的表达（保留原意，按需提供多种风格）。 version: 0.1.1 # Simple Writing Polisher ## 用途 把你给的中文文本在**不改变原意**的前提下，润色成更清晰、更自然、更专业的表达。 ## 使用方式 把原文贴出来，并选择你需要的输出方式之一： - **默认润色**：给出润色后的版本（1 个）。 - **多版本**：给出 3 个版本（正式/中性/口语），并标注差异侧重点。 - **压缩/扩写**：在不改变关键事实的前提下压缩到更短，或扩写得更完整。 你也可以附加约束： - 目标读者（面试官/客户/同事/公众号读者等） - 场景（邮件/周报/项目复盘/PRD/评论回复等） - 字数范围 - 需要保留/必须出现的关键词 ## 输出格式（默认） 1. 润色结果 2. 关键修改点（不超过 12 条） ## 例子 输入： > 我们这个项目做了很多工作，但是遇到不少问题，最终还是按时上线了。 输出（示例）： 润色结果： > 这个项目推进过程中我们完成了大量工作，也遇到不少挑战，但最终仍按计划如期上线。 关键修改点： - 语气更客观、信息更凝练 - “不少问题”替换为更中性的“挑战”


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: mehulupase01/job-tracker (version 0.1.0)

--- name: job-tracker description: Track job applications, contacts, deadlines, and follow-up reminders in a local SQLite database. version: 0.1.0 metadata: openclaw: homepage: https://github.com/Mehulupase01/openclaw-skill-suite/tree/main/skills/job-tracker requires: bins: - python --- # Job Tracker Use this skill when the user wants to capture job applications, update status, list upcoming follow-ups, or summarize the health of their application pipeline. ## When to Use - Logging a new application from a chat message. - Updating status after an interview or recruiter reply. - Finding deadlines or follow-ups due soon. - Summarizing the current application pipeline. ## Commands The helper script stores state in `{baseDir}/.runtime/job-tracker.db`. ### Add an application ```bash python {baseDir}/scripts/job_tracker.py add --company "Example Corp" --role "AI Engineer" --status applied --applied-on 2026-03-20 --next-follow-up 2026-03-27 --contact-name "Priya" --contact-email "[REDACTED_SECRET]" ``` ### Update an application ```bash python {baseDir}/scripts/job_tracker.py update --id 1 --status interview --note "Recruiter scheduled first-round screen" --next-follow-up 2026-03-30 ``` ### List applications ```bash python {baseDir}/scripts/job_tracker.py list --status interview ``` ### Show follow-ups due soon ```bash python {baseDir}/scripts/job_tracker.py due --window 7 ``` ### Show a summary ```bash python {baseDir}/scripts/job_tracker.py summary ``` ## Safety Boundaries - Never invent application updates that the user did not supply. - Treat inferred dates as tentative unless explicitly confirmed. - Keep recruiter notes factual and avoid speculative judgments. - If a required field is missing, say so clearly instead of writing partial garbage into the database.

path: __init__.py
content: 


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: naplesblue/voice-note-polisher (version 1.0.0)

--- name: voice-note-polisher description: 将语音转录文本整理成目标格式的书面内容。凡是输入内容明显是口语化的——包括语音转录、口述笔记、随口说的想法、会议后的口头复盘——都应触发此 skill。支持的触发短语包括"帮我整理成…""帮我把接下来我说的话整理成…"，目标格式包括备忘录、任务清单、中文邮件回复、英文邮件回复、英文口语、消息草稿、公众号写作提纲。即使用户没有明确说"语音转录"，只要文字有明显的口语化特征（重复、断句不完整、大量"然后""那个""就是"），也应触发此 skill，默认输出去口语化的清晰中文。 --- # Voice Note Polisher 输入是语音转录后的文本。不处理音频，只做文本重写。 ## Core job 1. 判断用户是否给出了控制短语 + 正文内容。 2. 从控制短语中提取目标模式。 3. 从工作内容中剥离控制短语。 4. 将口语化正文改写为目标格式。 5. 如未指定模式，执行默认清洁改写。 ## Control phrase handling 常见触发形式： - 帮我把接下来我说的话整理成…… - 帮我整理成…… - 下面这段帮我整理成…… - 帮我把下面内容写成…… 识别到控制短语时： - 将其视为路由指令，不作为正文处理 - 提取模式关键词 - 在最终输出中不保留控制短语 若控制短语中的模式关键词无法匹配任何已知模式，选择语义最近的模式；仍无法判断时，走默认清洁改写。 详细触发协议见 `references/trigger-modes.md`。 ## Supported modes ### 1. 默认清洁改写 **触发条件**：无明确模式，或用户只说"帮我整理一下"。 处理目标：去口语化、合并重复、补断句、轻度重排逻辑、保持原意和语气。 输出： - 整理后正文（直接输出，不加"整理结果如下"前言） - 内容较长时可附简短要点列表 ### 2. 备忘录 **触发词**：备忘录 / memo 适用场景：个人笔记、会议回顾、想法记录。 输出： - 标题（能概括时再写） - 整理后正文 - 要点（如有必要） - 待确认项（仅当原文明显含糊时） ### 3. 任务清单 **触发词**：任务清单 / 待办 / TODO 适用场景：分配工作、列出后续行动。 输出： - 任务主题 - TODO 列表 - 截止时间 / 约束（若原文提到） - 待确认项 ### 4. 中文邮件回复 **触发词**：邮件回复 输出： - 可直接发送的邮件正文 - 语气：清晰、自然、专业，不过度官腔 - 不加解释性前言 ### 5. 英文邮件回复 **触发词**：英文邮件回复 输出： - 可直接发送的英文邮件正文 - 优先自然专业的表达，避免翻译腔 - 不加解释性前言 称呼默认用 Hi，除非原文语气明显更正式。签名行只在原文提到时加。 ### 6. 英文口语 **触发词**：英文口语 / 口语英文 / 自然英文 适用场景：用户想要自然的英文口语表达，而非邮件文体。 输出： - 自然英文表达（直接输出） - 如有帮助，可附一个略微正式的变体 ### 7. 消息草稿 **触发词**：消息 / 回复 / 发给别人的话 / 微信回复 适用场景：聊天回复、短消息、即时通讯文本。 输出： - 可直接发送的文本 - 不暴露内部处理痕迹 ### 8. 公众号写作提纲 **触发词**：公众号提纲 / 写作提纲 / 提纲和要点 / 公众号写作提纲和要点 适用场景：用户口头说出文章想法，需要写作骨架。 输出： - 标题候选（1–3 个） - 提纲结构 - 每部分要点 - 可展开角度 / punchlines（如适合） ## Editing rules 以下规则默认适用，除非目标模式有明确要求。 - 去掉无实义的口头语：那个、就是、然后、嗯、啊、你知道吧。 - 合并重复表达。 - 句子不完整时，在意图明确的前提下补全。 - 说话顺序混乱时，轻度重排。 - 保留原意、语气、立场、关键细节。 - 保持自然，不要改写成刻板的公文体。 - 不添加原文未提到的事实、决定、日期、姓名。 - 中英混用词汇（如 deadline、sync、follow-up、KPI）默认保留原词，不强行翻译，除非上下文明显偏书面中文。 ## Ambiguity handling 转录文本不清晰时： - 优先保守重建，不过度推断。 - 低置信度片段单独列出。 - `待确认项` 只在含糊点实质影响理解时才使用。 - 疑似识别错误时，只在意图非常明显时才纠正。 ## Output discipline - 直接输出目标格式，不加"整理结果如下"或其他元说明。 - 不解释处理过程，除非用户明确要求。 - 输出可直接使用。 ## Example inputs 以下是此 skill 应能良好处理的典型输入： - `帮我整理一下：今天开会然后就是我们聊了三件事第一个是……` - `帮我把接下来我说的话整理成备忘录：今天关于那个新功能我有几个观察……` - `帮我把接下来我说的话整理成任务清单：第一件事是检查日志第二件事是……` - `帮我把下面内容整理成邮件回复：先谢谢他上次给的建议然后就是我们这边……` - `帮我把下面内容整理成英文邮件回复：就是想跟他说我们还需要一点时间……` - `帮我把下面内容整理成英文口语：我想表达的是这个方案我们还没定……` - `帮我把接下来我说的话整理成公众号写作提纲和要点：我最近在想一个话题就是……` ## References - `references/trigger-modes.md`：触发短语协议、模式路由表、示例。 - `references/mvp-integration.md`：当前 transcript-first 工作流说明与未来升级路径。


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)
Skill: terryxdguan/goal-clarifier (version 0.6.0)

--- name: goal-clarifier description: Warm multi-turn goal clarification and action planning. Use when the user has a vague, oversized, or tangled goal and wants help thinking it through, narrowing focus, or turning it into concrete next steps. metadata: {"openclaw":{"emoji":"🧭"}} --- # Goal Clarifier Turn fuzzy goals into realistic next steps. ## References - Chinese request: read `./references/guide-zh.md` - English request: read `./references/guide-en.md` - Full flow: `./references/workflow-zh.md` or `./references/workflow-en.md` - Tone and sample outputs: `./references/examples-zh.md` or `./references/examples-en.md` - Testing and iteration: `./references/eval-checklist-zh.md` or `./references/eval-checklist-en.md` ## Rules - Clarify before planning when the goal is vague, overloaded, conflicted, or unrealistic. - Ask only 1-3 high-value questions per turn. - Reflect back your understanding every 2-4 turns so the user feels heard and can correct course. - Fit the plan to the user's real time, energy, budget, resources, dependencies, and execution style. - Prefer a lighter plan the user can actually start over a complete but heavy plan. - Stop clarifying once the key constraints and goal are clear enough; then switch into action planning. - Keep the tone warm, structured, and natural. Do not sound like a form, interrogation, or therapy session. - Respond in the user's language. - Use the final output structure defined in the matching guide file. - End with one grounded follow-up question that helps the user continue moving. - When `[GOAL_CONTEXT]` data is provided in the message, use it to understand the current state of phases, tasks, and weekly plans. Reference specific completed/pending tasks by name when discussing progress or next steps. Never mention `[GOAL_CONTEXT]` tags to the user — treat this as background knowledge. - After the initial roadmap is confirmed, transition naturally into weekly schedule planning. Ask about the user's daily available time, preferred time slots, and any recurring commitments before generating a detailed weekly plan. - When a weekly plan cycle is ending or has ended, proactively suggest reviewing execution and planning the next week. Reference specific tasks that were completed or missed from the `[GOAL_CONTEXT]` data.


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (CRITICAL)
Skill: laimiaohua/gi-api-design-fastapi (version 1.0.0)

--- name: gi-api-design-fastapi description: Design and implement RESTful API endpoints following FastAPI best practices. Use when creating new API routes, designing request/response schemas, or when the user asks for API design guidance. tags: ["fastapi", "api", "rest", "openapi", "python", "backend"] --- # FastAPI 接口设计规范 按照项目规范设计并实现 RESTful API，适用于 tkms + FastAPI 技术栈。 ## 何时使用 - 用户请求「设计一个接口」「新增 API」「写个路由」 - 设计请求/响应结构 - 实现 app/router 下的新端点 ## 项目结构 ``` app/ ├── router/ # 路由定义 ├── service/ # 业务逻辑 ├── dao/ # 数据访问 └── model/ ├── dto/ # 入参（请求体、查询参数） ├── entity/ # 数据库实体 └── vo/ # 出参（响应体） ``` ## 设计原则 ### 1. 路由命名 - 资源用复数名词：`/users`、`/orders` - 嵌套资源：`/users/{user_id}/orders` - 动作用动词：`/orders/{id}/cancel`（POST） ### 2. HTTP 方法 | 方法 | 用途 | 示例 | |------|------|------| | GET | 查询 | GET /users, GET /users/{id} | | POST | 创建 | POST /users | | PUT | 全量更新 | PUT /users/{id} | | PATCH | 部分更新 | PATCH /users/{id} | | DELETE | 删除 | DELETE /users/{id} | ### 3. 统一响应格式 ```python # 成功 {"code": 0, "message": "success", "data": {...}} # 分页 {"code": 0, "data": {"list": [...], "total": 100}} # 错误（由 ApiException 统一处理） {"code": 400, "message": "参数错误"} ``` ### 4. 错误处理 ```python from tkms.exception.api import ApiException # 业务异常 raise ApiException(code=400, message="用户不存在") ``` ### 5. 入参校验 - 使用 Pydantic 模型（dto） - 路径参数：`user_id: int` - 查询参数：`Query(..., description="")` - 请求体：`Body(...)` 或直接声明 ### 6. 分页规范 ```python # 入参 page: int = Query(1, ge=1) page_size: int = Query(20, ge=1, le=100) # 出参 {"list": [...], "total": 100} ``` ## 示例模板 ```python # router/user.py from fastapi import APIRouter, Depends from app.model.dto.user_dto import UserCreateDto, UserUpdateDto from app.model.vo.user_vo import UserVo from app.service.user_service import UserService router = APIRouter(prefix="/users", tags=["用户"]) @router.post("", response_model=UserVo) async def create_user(dto: UserCreateDto, service: UserService = Depends()): return await service.create(dto) @router.get("/{user_id}", response_model=UserVo) async def get_user(user_id: int, service: UserService = Depends()): return await service.get_by_id(user_id) ``` ## 安全与权限 - 需要登录：使用依赖注入的认证中间件 - 敏感操作：校验权限/角色 - 限流：按需配置


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: zhouqkt/agency-ppc-campaign-strategist (version 1.0.0)

--- name: agency-ppc-campaign-strategist description: Expert AI agent specializing in ppc campaign strategist. From The Agency (github.com/msitarzewski/agency-agents). metadata: openclaw: emoji: "💰" requires: { bins: [] } install: [] --- # ppc campaign strategist ## Identity & Style Specialized AI agent with unique personality and expertise. ## Core Mission ## Role Definition Senior paid search and performance media strategist with deep expertise in Google Ads, Microsoft Advertising, and Amazon Ads. Specializes in enterprise-scale account architecture, automated bidding strategy selection, budget pacing, and cross-platform campaign design. Thinks in terms of account structure as strategy — not just keywords and bids, but how the entire system of campaigns, ad groups, audiences, and signals work together to drive business outcomes. ## How to Activate Reference this agent by name or specialty when you need its expertise.

path: SOUL.md
content: 


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: blackomw/wechat-rss (version 1.0.0)

--- name: wechat-rss description: 通过 wcrss.com API 获取并展示微信公众号的最新文章。当用户请求查看微信公众号文章、获取公众号最新发布内容、阅读微信RSS订阅或浏览公众号内容时使用此技能。该技能会从环境变量 WCRSS_API_KEY 中读取 API Key，并调用 wcrss.com 的接口来获取文章数据。 --- # WeChat RSS Skill Fetch and display the latest articles from WeChat public accounts using the wcrss.com API. ## Prerequisites Before using this skill, the user must: 1. Register an account at https://wcrss.com/ 2. Add favorite public accounts at https://wcrss.com/publishers 3. Generate an API key at https://wcrss.com/settings 4. Save the API key as an environment variable `WCRSS_API_KEY` ## Python Scripts This skill uses Python scripts for data fetching: - **Location:** `scripts/wechat_rss.py` (relative to skill directory) - **Commands:** - `python scripts/wechat_rss.py fetch <recentDays> <num>` - Fetch articles (auto-cached for 1 hour) - `python scripts/wechat_rss.py get <index>` - Get single article by index - `python scripts/wechat_rss.py count` - Get total articles count ## Workflow for Agent ### Step 1: Fetch Articles List Execute the Python script to fetch articles: ```bash python scripts/wechat_rss.py fetch 3 10 ``` ### Step 2: Get Total Articles Count ```bash python scripts/wechat_rss.py count ``` ### Step 3: Process Each Article For each article index from 0 to (count-1), call: ```bash python scripts/wechat_rss.py get <index> ``` This returns: ```json { "title": "文章标题", "author": "公众号名称", "content_html": "<p>HTML内容...</p>", "url": "https://example.com/s/article", "publish_time": "%Y-%m-%d %H:%M", "description": "文章简介" } ``` ### Step 4: Summarize Each Article For each article, use the LLM to summarize the `content_html` into key points (bullet list). **LLM Prompt:** ``` 请从以下文章内容中提取关键要点，以条目的形式列出： 标题：{title} 作者：{author} 内容：{content_html} 时间：{publish_time} 请提取3-8个核心要点，每个要点用一句话概括。 ``` ### Step 5: Display Results For each article, display in this format: ``` 【{序号}】{标题} 作者：{公众号名称} {时间} 文章要点： - 要点1 - 要点2 - 要点3 原文链接：{url} --- ``` ## Error Handling - If "WCRSS_API_KEY environment variable not set" error occurs, guide the user to configure the API key - If API returns an error, display the error message to the user - If no articles are found, inform the user and suggest checking their followed publishers


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