OpenClaw/clawhub-security-signals huggingface dataset:
Skill: cmpdchtr/pdf-tools (version 0.1.0)

--- name: pdf-tools description: View, extract, edit, and manipulate PDF files. Supports text extraction, text editing (overlay and replacement), merging, splitting, rotating pages, and getting PDF metadata. Use when working with PDF documents for reading content, adding/editing text, reorganizing pages, combining files, or extracting information. --- # PDF Tools Tools for viewing, extracting, and editing PDF files using Python libraries (pdfplumber and PyPDF2). ## Quick Start All scripts require dependencies: ```bash pip3 install pdfplumber PyPDF2 ``` ## Core Operations ### Extract Text Extract text from PDF (all pages or specific pages): ```bash scripts/extract_text.py document.pdf scripts/extract_text.py document.pdf -p 1 3 5 scripts/extract_text.py document.pdf -o output.txt ``` ### Get PDF Info View metadata and structure: ```bash scripts/pdf_info.py document.pdf scripts/pdf_info.py document.pdf -f json ``` ### Merge PDFs Combine multiple PDFs into one: ```bash scripts/merge_pdfs.py file1.pdf file2.pdf file3.pdf -o merged.pdf ``` ### Split PDF Split into individual pages: ```bash scripts/split_pdf.py document.pdf -o output_dir/ ``` Split by page ranges: ```bash scripts/split_pdf.py document.pdf -o output_dir/ -m ranges -r "1-3,5-7,10-12" ``` ### Rotate Pages Rotate all pages or specific pages: ```bash scripts/rotate_pdf.py document.pdf -o rotated.pdf -r 90 scripts/rotate_pdf.py document.pdf -o rotated.pdf -r 180 -p 1 3 5 ``` ### Edit Text Add text overlay on a page: ```bash scripts/edit_text.py document.pdf -o edited.pdf --overlay "New Text" --page 1 --x 100 --y 700 scripts/edit_text.py document.pdf -o edited.pdf --overlay "Watermark" --page 1 --x 200 --y 400 --font-size 20 ``` Replace text (limited, works best for simple cases): ```bash scripts/edit_text.py document.pdf -o edited.pdf --replace "Old Text" "New Text" ``` **Note:** PDF text editing is complex due to the format. The overlay method is more reliable than replacement. ## Workflow Patterns ### Viewing PDF Content 1. Get basic info: `scripts/pdf_info.py file.pdf` 2. Extract text to preview: `scripts/extract_text.py file.pdf -p 1` 3. Extract full text if needed: `scripts/extract_text.py file.pdf -o content.txt` ### Reorganizing PDFs 1. Split into pages: `scripts/split_pdf.py input.pdf -o pages/` 2. Merge selected pages: `scripts/merge_pdfs.py pages/page_1.pdf pages/page_3.pdf -o reordered.pdf` ### Extracting Sections 1. Get page count: `scripts/pdf_info.py document.pdf` 2. Split by ranges: `scripts/split_pdf.py document.pdf -o sections/ -m ranges -r "1-5,10-15"` ## Advanced Usage For detailed library documentation and advanced patterns, see [references/libraries.md](references/libraries.md). ## Notes - Page numbers are **1-indexed** in all scripts (page 1 = first page) - Text extraction works best with text-based PDFs (not scanned images) - Rotation angles: 90, 180, 270, or -90 (counterclockwise) - All scripts validate file existence before processing


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (HIGH)
Skill: spacesq/s2-elderly-guardian-agent (version 1.0.3)

--- name: s2-elderly-guardian-agent description: "S2 零隐私老人健康哨兵。多模态跌倒监测，向医疗平台或智能家居总线发布健康预警（不包含物理执行裁定）。" version: 1.0.2 author: Space2.world (Miles Xiang) metadata: {"openclaw": {"emoji": "🛡️"}} tags: [Elderly-Care, Fall-Detection, S2-SWM, Sentinel] env: - name: S2_BUS_ENDPOINT description: "URL for the local S2 IPC message bus to broadcast health alerts (e.g., CRITICAL_FALL_DETECTED)." required: false permissions: filesystem: read: true write: true paths: - "s2_bas_governance/elderly_care/*" --- # S2-Elderly-Guardian: 健康哨兵智能体教范 ## 1. 核心定位 (Sentinel Role) 你是一个纯粹的【健康感知哨兵】。执行“零隐私侵犯”原则，仅依赖毫米波与声学多模态进行 14 维空间感知。 ## 2. 职责边界 (Decoupling Sensing from Actuation) - **只预警，不裁定**：当 S2-MSTC 模型确认发生极危跌倒时，你只需生成 `CRITICAL_FALL_DETECTED` 健康事件，并通过 `S2_BUS_ENDPOINT` 广播给上层应用（如专业医疗平台或全屋智能主机）。 - **绝对禁止越权执行**：你无权指令任何物理网关或智能门锁执行“解锁”或“开门”动作。物理救援决策必须由上层 L1 数字人或外部医疗服务裁定。 ## 3. 深时守护数据落盘 在平稳状态下，静默将步态衰减数据记录至本地沙箱 `elderly_care/`，供未来的医疗机构研究。


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (CRITICAL)
Skill: yusaku-0426/health-proactive (version 1.0.0)

--- name: health-proactive description: Proactive health alerts — detect missed meals, low hydration, and overdue tasks. metadata: { "openclaw": { "emoji": "⚠️", "requires": { "scripts": ["scripts/health_proactive.js"] }, }, } --- # health-proactive 健康関連のプロアクティブ通知。食事未記録・水分不足・タスク期限超過を検出。 ## Script ```bash node scripts/health_proactive.js check ``` ## アラート種別 | アラート | 条件 | メッセージ例 | |----------|------|-------------| | missed_lunch | 14時以降で今日の食事記録0件 | 🍴 14時ですが、今日の食事記録がまだないよ！写真を送るだけでOK | | missed_dinner | 20時以降で今日の食事記録2件未満 | 🍴 20時で食事記録1件。夕食を記録してね! | | low_hydration | 18時以降で水分1500ml未満 | 💧 18時で水分500ml。目標1500ml以上！水を飲もう | | overdue_tasks | 期限切れタスクあり（エージェントがタスクデータを提供） | ⚠️ 期限切れタスクが3件あります | ## 重複防止 各アラートは1日1回のみ発火。状態は `state/mention_image_analyzer_state.json` の `proactive` セクションで管理。 ## 投稿先 アラートは `#pj_openclaw` (`C0AHBLQ0P32`) に投稿。 ``` ⚠️ *期限切れタスク（3件）* • タスク名（期限: 2026-02-20） • ... 🤖 OpenClaw プロアクティブ通知 ```


Security scan verdicts — ClawScan: suspicious | static analysis:  | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: codekungfu/skincare (version 0.1.1)

--- name: "Skincare" description: "提供肤质AI测定、成分党严选清单、医美项目科普及个人护理方案定制。" --- # 专业护肤 ## 筛选项 - 地理距离（步行/骑行/驾车范围） - 社交热度（人气榜/点评分/新开业） - 消费档次（实惠/中端/轻奢/体验型） ## 返回字段 - 实时排队情况/预约通道/电子票号 - 营业时间变动/停车信息/导航精准路径 - 社区真实图库/探店笔记/避坑清单汇总 ## 示例请求 - “如何快速使用 专业护肤 处理 [具体场景任务] ？” - “专业护肤 的 [核心功能] 有哪些最新玩法/优惠信息？” ## 更新频率 - 结合地理信息变动 with 点评社区新热度进行灵活调整 ## 注意事项 - 节假日建议提前查询排队状态；到店体验请尊重商家劳动与规则。


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)
Skill: wangjiaocheng/gamebox (version 1.0.1)

--- name: gamebox author: 王教成 Wang Jiaocheng (波动几何) description: > 多人游戏引擎框架 — 5 款游戏共用一套回合/状态/消息系统。 支持文字冒险、狼人杀、小说接龙、夺旗战、文明模拟。 LLM 负责叙事和动态内容生成，脚本负责状态管理和规则执行。 纯 Python 标准库，零外部依赖，跨 Windows/macOS/Linux。 通信基于共享目录，多 Agent 可同时参与。 --- # gamebox — 多人游戏引擎 ## 定位 一个自包含的多人游戏引擎框架，通过共享目录实现多 Agent 对局。LLM 负责叙事和创意内容，脚本负责状态管理和规则执行。 ## 核心规则 1. **共享目录** — 所有玩家必须能访问同一目录 2. **先创建后加入** — 创建者控制游戏生命周期 3. **LLM + 脚本协作** — 脚本管规则，LLM 管叙事 ## 支持的游戏 | 游戏 | 类型 | 人数 | 核心玩法 | |------|------|------|---------| | 文字冒险 (rpg) | 单人/多人 | 1-20 | LLM 当 DM，探索/战斗/对话 | | 狼人杀 (werewolf) | 多人对抗 | 5-18 | 角色推理，白天讨论+夜晚行动 | | 小说接龙 (story_relay) | 多人协作 | 2-10 | 轮流写段落，LLM 调和风格 | | 夺旗战 (ctf) | 竞速 | 1-20 | 解题抢分，支持动态出题 | | 文明模拟 (civilization) | 多人策略 | 2-8 | 资源/科技/外交/战争，回合制 | ## 快速上手 ```bash # 创建游戏 python scripts/manager.py '{"action":"create","game_type":"werewolf","user":"alice"}' # 加入游戏 python scripts/manager.py '{"action":"join","game_id":"abc12345","user":"bob"}' # 启动游戏 python scripts/manager.py '{"action":"start","game_id":"abc12345","user":"alice"}' # 执行动作（通过引擎统一接口） python scripts/action.py '{"game_id":"abc12345","user":"alice","action_name":"vote","params":{"target":"bob"}}' # 发送/接收消息 python scripts/message.py '{"game_id":"abc12345","user":"alice","action":"send","content":"我觉得 bob 很可疑"}' python scripts/message.py '{"game_id":"abc12345","user":"bob","action":"receive"}' # 回合控制 python scripts/turn.py '{"game_id":"abc12345","action":"status"}' python scripts/turn.py '{"game_id":"abc12345","action":"next"}' ``` ## 脚本清单 | 脚本 | 功能 | |------|------| | `common.py` | 公共工具层（JSON 协议、文件操作、时间戳） | | `manager.py` | 游戏管理（创建/加入/启动/结束/列出/详情/退出） | | `turn.py` | 回合控制（推进/阶段切换/超时跳过/状态查询） | | `action.py` | 统一动作接口（执行/历史/撤销） | | `message.py` | 消息系统（发送/接收/频道列表，支持公共/私聊/角色频道） | | `games/__init__.py` | 游戏模块注册表 | | `games/rpg.py` | 文字冒险游戏逻辑 | | `games/werewolf.py` | 狼人杀游戏逻辑 | | `games/story_relay.py` | 小说接龙游戏逻辑 | | `games/ctf.py` | 夺旗战游戏逻辑 | | `games/civilization.py` | 文明模拟游戏逻辑 | ## LLM 提示词 各游戏的 LLM 叙事提示词模板位于 `references/games/`： - `rpg.md` — DM 叙事风格指南 - `werewolf.md` — 主持人播报模板 - `story_relay.md` — 编辑顾问响应模板 - `ctf.md` — 出题人/裁判模板 - `civilization.md` — 历史记录者叙事模板 ## 目录结构 ``` .gamebox/ ← game_dir（共享目录） ├── games/ ← 所有游戏实例 │ └── {game_id}/ │ ├── meta.json ← 游戏元信息 │ ├── state.json ← 游戏状态 │ ├── actions/ ← 动作记录 │ ├── messages/ ← 消息 │ │ ├── public/ ← 公共频道 │ │ ├── private/{user}/ ← 私聊 │ │ ├── role/{role}/ ← 角色频道 │ │ └── system/ ← 系统消息 │ └── logs/ ← 事件日志 ``` ## JSON 协议 - **输入**：JSON 字符串（CLI 第一个参数 或 stdin） - **输出**：`{"status":"ok","data":{...}}` 或 `{"status":"error","code":N,"message":"..."}` - **共享目录**：通过 `game_dir` 参数指定，默认 `.gamebox/`


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)
Skill: emsin44/synth-data (version 1.1.5)

--- name: synth-data description: Query volatility forecasts from Synthdata.co for crypto, commodities, and stocks. Compare assets and run Monte Carlo simulations. metadata: { "openclaw": { "emoji": "📊", "requires": { "bins": ["python3"], "env": ["SYNTHDATA_API_KEY"] } } } --- # Synthdata Volatility Skill Query and analyze volatility forecasts from Synthdata.co for crypto, commodities, and stock indices. ## Setup Set your API key: ```bash export SYNTHDATA_API_KEY=your_key_here ``` ## Quick Start ```bash # Single asset python3 scripts/synth.py BTC # Multiple assets comparison python3 scripts/synth.py BTC ETH SOL --compare # All assets overview python3 scripts/synth.py --all # Monte Carlo simulation (24h max) python3 scripts/synth.py BTC --simulate --hours 12 ``` ## Available Assets | Ticker | Name | Category | |--------|------|----------| | BTC | Bitcoin | Crypto | | ETH | Ethereum | Crypto | | SOL | Solana | Crypto | | XAU | Gold | Commodity | | SPYX | S&P 500 | Index | | NVDAX | NVIDIA | Stock | | GOOGLX | Google | Stock | | TSLAX | Tesla | Stock | | AAPLX | Apple | Stock | ## Output Example ``` ================================================== BTC — Bitcoin ================================================== Price: $77,966 24h Change: 🔴 -0.95% Current Vol: 58.4% 🟠 [Elevated] Avg Realized: 53.3% Forecast Vol: 52.2% ``` ## Volatility Levels | Level | Range | Emoji | |-------|-------|-------| | Low | < 20% | 🟢 | | Moderate | 20-40% | 🟡 | | Elevated | 40-60% | 🟠 | | High | 60-80% | 🔴 | | Extreme | > 80% | 🔴 | ## Use Cases ### 1. Market Overview ```bash python3 scripts/synth.py --all ``` Get a ranked table of all assets by volatility. ### 2. Trading Signals - **High forecast → Current low**: Expect volatility spike - **Low forecast → Current high**: Volatility may decrease - Use for position sizing and options trading ### 3. Monte Carlo Projections ```bash python3 scripts/synth.py BTC --simulate --hours 24 --paths 1000 ``` Generate probabilistic price ranges using forecast volatility (24h max - Synthdata forecast window). ### 4. Scheduled Reports Create a cron job for daily Slack/Telegram forecasts (see examples/use-cases.md). ### 5. Risk Alerts Monitor for assets crossing volatility thresholds and trigger notifications. ## API Reference See `references/api.md` for full API documentation. ## Direct API Usage ```python import requests resp = requests.get( "https://api.synthdata.co/insights/volatility", params={"asset": "BTC"}, headers={"Authorization": f"Apikey {API_KEY}"} ) data = resp.json() # Key fields: price = data["current_price"] realized_vol = data["realized"]["average_volatility"] forecast_vol = data["forecast_future"]["average_volatility"] ``` ## Integration Ideas - **Polymarket**: Use volatility forecasts to inform up/down market bets - **Options**: High forecast vol = consider buying options - **Portfolio**: Rebalance when aggregate volatility spikes - **Alerts**: Notify when forecast differs significantly from realized


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: freeter226/url-toolkit (version 1.0.0)

--- name: url-toolkit description: URL encoding, decoding, parameter parsing, and URL manipulation toolkit for developers. metadata: { "openclaw": { "emoji": "🔗", "requires": { "bins": ["python3"] } } } --- # URL Toolkit A comprehensive URL manipulation tool for developers. ## Features - **Encode** - Encode URL (percent encoding) - **Decode** - Decode URL - **Parse** - Parse URL into components (scheme, host, path, query, etc.) - **Query Parse** - Parse query string into key-value pairs - **Query Build** - Build query string from key-value pairs ## Usage ```bash python3 skills/url-toolkit/scripts/url_toolkit.py <action> [options] ``` ## Actions | Action | Description | |--------|-------------| | `encode` | URL encode a string | | `decode` | URL decode a string | | `parse` | Parse URL into components | | `query-parse` | Parse query string to JSON | | `query-build` | Build query string from JSON | ## Options | Option | Type | Default | Description | |--------|------|---------|-------------| | `--input` | string | - | Input string or URL | | `--full` | bool | false | Full encoding (all chars) vs safe encoding | ## Examples ```bash # URL encode python3 skills/url-toolkit/scripts/url_toolkit.py encode --input "hello world" # Output: {"success": true, "result": "hello%20world"} # URL decode python3 skills/url-toolkit/scripts/url_toolkit.py decode --input "hello%20world" # Output: {"success": true, "result": "hello world"} # Parse URL python3 skills/url-toolkit/scripts/url_toolkit.py parse --input "https://example.com:8080/path?q=test&id=123#section" # Output: {"success": true, "result": {"scheme": "https", "host": "example.com", ...}} # Parse query string python3 skills/url-toolkit/scripts/url_toolkit.py query-parse --input "q=test&id=123&name=hello+world" # Output: {"success": true, "result": {"q": "test", "id": "123", "name": "hello world"}} # Build query string python3 skills/url-toolkit/scripts/url_toolkit.py query-build --input '{"q":"test","id":123,"name":"hello world"}' # Output: {"success": true, "result": "q=test&id=123&name=hello%20world"} ``` ## Use Cases 1. **API development** - Encode/decode URL parameters 2. **Web scraping** - Parse URLs and extract components 3. **Debugging** - Inspect query parameters 4. **URL building** - Construct URLs from components 5. **Data processing** - Clean and normalize URLs ## Current Status Ready for testing.


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: yuyonghao-123/yuyonghao-office-reader (version 0.1.0)

# office-reader 技能 ## 描述 统一的 Office 文档和本地文件读取技能，支持 Word、Excel、PowerPoint、PDF 及多种文本格式。 ## 支持的文件格式 | 类型 | 扩展名 | 读取方式 | |------|--------|----------| | **Markdown** | `.md`, `.markdown` | 原生文本 | | **纯文本** | `.txt` | 原生文本 | | **CSV** | `.csv` | 原生文本 | | **JSON** | `.json` | 原生 JSON 解析 | | **YAML** | `.yaml`, `.yml` | PyYAML | | **HTML** | `.html`, `.htm` | 原生文本 | | **Word** | `.docx`, `.doc` | python-docx | | **Excel** | `.xlsx`, `.xls` | pandas + openpyxl | | **PowerPoint** | `.pptx`, `.ppt` | python-pptx | | **PDF** | `.pdf` | pypdf / summarize | ## 使用方法 ### 方式 1: 直接使用 PowerShell 脚本 ```powershell # 读取 Word 文档 .\skills\office-reader\office-reader.ps1 -FilePath "C:\path\to\document.docx" # 读取 Excel 文件 .\skills\office-reader\office-reader.ps1 -FilePath "C:\path\to\data.xlsx" # 读取 PowerPoint .\skills\office-reader\office-reader.ps1 -FilePath "C:\path\to\presentation.pptx" # 读取 PDF（前 10 页） .\skills\office-reader\office-reader.ps1 -FilePath "C:\path\to\report.pdf" ``` ### 方式 2: 自然语言请求 直接对我说： - "读取 C:\path\to\file.docx" - "看看这个 Excel 文件：C:\path\to\data.xlsx" - "帮我读一下这个 PPT: C:\path\to\slides.pptx" 我会自动调用 office-reader 脚本处理。 ### 方式 3: PDF 使用 summarize 技能 ``` summarize C:\path\to\file.pdf ``` ## 参数 | 参数 | 类型 | 默认值 | 说明 | |------|------|--------|------| | `-FilePath` | string | 必填 | 要读取的文件路径 | | `-OutputFormat` | string | "text" | 输出格式（text/json/markdown） | | `-MaxLines` | int | 1000 | 最大输出行数（防止过长） | ## 示例输出 ### Word 文档 ``` 📄 读取文件：C:\docs\report.docx 📋 文件类型：.docx ✅ 使用 Word 模式读取 (python-docx)... [文档标题] [第一段内容...] [第二段内容...] ✅ 读取完成！ ``` ### Excel 文件 ``` 📄 读取文件：C:\data\sales.xlsx 📋 文件类型：.xlsx ✅ 使用 Excel 模式读取 (pandas + openpyxl)... 📊 工作表数量：3 📋 工作表名称：['一月', '二月', '三月'] === 工作表：一月 === 行数：150, 列数：8 列名：['日期', '产品', '销售额', '利润', ...] 前 20 行数据: 日期 产品 销售额 利润 0 2026-01-01 产品 A 1000 200 1 2026-01-02 产品 B 1500 350 ... ✅ 读取完成！ ``` ### PowerPoint 文件 ``` 📄 读取文件：C:\presentations\demo.pptx 📋 文件类型：.pptx ✅ 使用 PowerPoint 模式读取 (python-pptx)... 📊 幻灯片数量：15 === 幻灯片 1 === 布局：Title Slide Title: 项目演示 Subtitle: 2026 年 Q1 汇报 === 幻灯片 2 === 布局：Title and Content Title: 目录 Content: 1. 项目背景... ✅ 读取完成！ ``` ## 依赖 已安装的 Python 库： - ✅ python-docx (Word) - ✅ python-pptx (PowerPoint) - ✅ pypdf (PDF) - ✅ openpyxl (Excel) - ✅ pandas (数据处理) ## 限制 - Word/Excel/PPT 仅支持 `.docx/.xlsx/.pptx` 格式（Office 2007+） - 旧格式 `.doc/.xls/.ppt` 需要转换 - PDF 文本提取依赖 PDF 质量（扫描件可能无法提取） - 大文件自动限制输出行数（默认 1000 行） ## 故障排除 ### 问题：文件无法读取 **解决**: 检查文件路径是否正确，文件是否被其他程序占用 ### 问题：Excel 读取报错 **解决**: 确保 `.xlsx` 格式（非 `.xls`），或转换为 CSV ### 问题：PDF 提取内容为空 **解决**: 可能是扫描件，需要 OCR（暂不支持） ## 安全说明 - 仅读取本地文件，不上传外部 - 自动限制输出大小，防止内存溢出 - 支持 UTF-8 编码，兼容中文 --- **版本**: v0.1.0 **创建时间**: 2026-03-18 **作者**: 小蒲萄 🦞


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: felixgo2140/market-movers (version 1.0.0)

--- name: market-movers description: 获取 US/HK/CN 三大市场涨幅前十与跌幅前十（代码+名称），输出严格 JSON version: 1.0.0 --- # market-movers 你是一个金融市场扫描器。 任务：抓取当前市场涨跌幅排行榜（US/HK/CN）。 要求： - 必须真实联网访问网页并解析 - 输出 **JSON**，禁止任何解释文字 - 每个列表严格 **10 个** - 每项必须包含 `symbol` 与 `name` 输出格式： { "US": { "gainers":[{"symbol":"","name":""}], "losers":[{"symbol":"","name":""}] }, "HK": { "gainers":[{"symbol":"","name":""}], "losers":[{"symbol":"","name":""}] }, "CN": { "gainers":[{"symbol":"","name":""}], "losers":[{"symbol":"","name":""}] } }


Security scan verdicts — ClawScan: clean | static analysis:  | VirusTotal: clean | SkillSpector:  ()
Skill: yash-kavaiya/gravitational-wave-analyzer (version 1.0.0)

--- name: gravitational-wave-analyzer description: > Fetch real LIGO/Virgo/KAGRA gravitational wave events from the GWOSC (Gravitational Wave Open Science Center) catalog, download detector strain data, run signal processing (whitening, Q-transform, matched filter), classify merger types (BBH/BNS/NSBH), and produce publication-quality plots. Use when asked to: analyze gravitational waves, fetch LIGO data, detect black hole mergers, explore GW events, run strain analysis on GW231123 or GW150914 or any GWTC event, visualize gravitational wave signals. metadata: { "openclaw": { "requires": { "python_packages": ["gwpy", "gwosc", "numpy", "scipy", "matplotlib", "astropy"] }, "install": [ { "id": "python", "kind": "python", "packages": ["gwpy", "gwosc", "numpy", "scipy", "matplotlib", "astropy"], "label": "Install GW analysis stack" } ] } } --- # Gravitational Wave Event Analyzer A skill for fetching and analyzing real gravitational wave events from LIGO/Virgo/KAGRA using public GWOSC data. ## What This Skill Does 1. **Catalog Query** — Fetch events from GWTC (Gravitational-Wave Transient Catalog) via GWOSC API 2. **Strain Download** — Pull real detector strain timeseries data for any event 3. **Signal Processing** — Whiten, bandpass filter, and Q-transform the strain 4. **Merger Classification** — Classify event type: BBH (binary black hole), BNS (binary neutron star), or NSBH 5. **Visualization** — Generate spectrograms, waveform plots, and summary figures ## Usage ### Analyze a specific event ```python from gw_analyzer import GWEventAnalyzer analyzer = GWEventAnalyzer() result = analyzer.analyze_event("GW150914") result.plot() result.summary() ``` ### List recent events ```python events = analyzer.list_events(catalog="GWTC-3", min_far=1e-3) ``` ### Full pipeline ```python python gw_analyzer.py --event GW150914 --detector H1 --output ./output/ python gw_analyzer.py --event GW231123_135430 --detector L1 --output ./output/ python gw_analyzer.py --list-events --catalog GWTC-3 --top 10 ``` ## Key Events to Try | Event | Type | Description | |-------|------|-------------| | GW150914 | BBH | First detection ever (2015) | | GW170817 | BNS | First neutron star merger (multi-messenger) | | GW200105 | NSBH | First neutron star–black hole merger | | GW231123_135430 | BBH | Most massive merger ever detected | ## Output - `{event}_waveform.png` — Raw + whitened + filtered strain timeseries - `{event}_qtransform.png` — Time-frequency Q-transform (chirp signature) - `{event}_summary.json` — Event parameters, classification, SNR estimate - `{event}_report.txt` — Human-readable analysis report ## Data Source All data fetched from [GWOSC](https://gwosc.org/) — publicly released under CC BY 4.0. Catalog: GWTC (Gravitational-Wave Transient Catalog), updated through O4a run. ## Dependencies ``` gwpy>=3.0.0 gwosc>=0.7.0 numpy>=1.24.0 scipy>=1.10.0 matplotlib>=3.7.0 astropy>=5.3.0 ```


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: pengling9405/telegram-multilingual-voice-reply (version 0.1.0)

--- name: telegram-multilingual-voice-reply description: "Smart Telegram reply workflow for OpenClaw: if the user sends text, reply with text; if the user sends a voice note/audio, transcribe locally using the installed mlx_audio (default Qwen3-ASR on Apple Silicon), then generate a meaningful reply in the same language. Send back a Telegram voice note with a caption so the user receives ONE message containing both voice+text (the caption text must match the voice content exactly). Follow the input language (Chinese→Chinese, English→English) unless the user explicitly requests a different language." --- # Telegram Multilingual Voice Reply（多语言语音智能回复） 目标：在 Telegram 跟 OpenClaw 聊天时实现“语音优先 + 多语言跟随”的智能回复： - **你发文字** → 默认只发**文字回复**（不触发 ASR；默认也不触发 TTS）。 - **你发语音** → 本地 STT 转写后理解语义，生成“有意义的回复”。默认用 **一条 Voice Message + caption** 发送（语音+文字同条，且内容一致）。 - **语言跟随**：你用中文我用中文；你用英文我用英文；除非你明确要求指定语言（也支持方言/口吻要求，但 TTS 受模型限制）。 ## Default models - STT 默认：`mlx-community/Qwen3-ASR-0.6B-8bit` - （可选）Forced alignment：`mlx-community/Qwen3-ForcedAligner-0.6B-8bit` > 需要模型清单/更多上游用法：`references/qwen3-asr-notes.md` ## How to use (agent workflow) ### A) 输入是文字（text message） - **永不触发 ASR**。 - 默认只发文字回复。 - 只有当用户明确说“用语音回复/发语音/voice reply”时： - 生成回复文本 `reply_text` - 生成 voice note（见下方“Telegram 单条消息”） - 发送 **一条** Voice Message（caption=`reply_text`，且与语音内容一致） ### B) 输入是语音（voice note / audio） - 默认必走 ASR（否则无法“智能回复”）。 - 然后根据用户意图决定是否触发 TTS： - 用户说“只要文字/文字回复/不要语音” → **ASR + 文字回复**（不 TTS）。 - 否则（默认真实场景） → **ASR + 生成回复 + 单条 voice+caption**（走 TTS）。 #### 语音→转写（本地、Apple Silicon） ```bash python3 scripts/mlx_asr.py --audio /path/to/audio.ogg --language Chinese ``` > 注：Telegram 常见是 ogg/opus。`mlx_asr.py` 已支持 CLI fallback，并会在需要时用 ffmpeg 转 wav。 #### Telegram 单条消息（语音 + 文字在同一条） Telegram 支持给 voice note 附带 caption，使得“语音条 + 下方文字”显示为**同一条消息**（你截图里的效果）。 1) 用 `scripts/mlx_tts_voice.py` 生成 Telegram 友好的 `.ogg/opus`： ```bash python3 scripts/mlx_tts_voice.py --text "<reply_text>" --out /tmp/reply.ogg ``` 2) 用 OpenClaw `message` 工具发送（voice note + caption）： - `asVoice: true` - `path/filePath`: 上一步生成的 `reply.ogg` - `caption`: **同一段 reply_text**（必须与语音内容一致） > 说明：OpenClaw 的 `tts` 工具通常会把语音作为单独消息发送，无法保证 caption 同条承载。 ## Options / overrides - 用户说“只用文字回复/不要语音” → 只发文字。 - 用户说“只用语音回复/不要文字” → 只发语音（仍然保持内容一致）。 - 用户说“用英文/用中文回复” → 覆盖默认语言跟随策略。 ## Troubleshooting - `failed to import mlx_audio`：当前 `python3` 环境里没有安装到 `mlx_audio`。请用安装 `mlx_audio` 的同一个解释器/venv 运行。 - 音频格式问题：Telegram 常见 voice note 是 `ogg/opus`。如转写失败，优先把音频转成 wav 再试（或确保系统具备相应解码能力）。


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