OpenClaw/clawhub-security-signals huggingface dataset:
Skill: terrycarter1985/terrycarter-session-log-analyzer (version 1.1.2)

--- name: session-log-analyzer description: Analyze agent session logs, generate PDF reports, and sync to Notion version: 1.1.0 author: ClawdBot tags: [logs, analysis, pdf, notion, sessions] requires_bins: [python3] requires_env: [NOTION_API_KEY, NOTION_REPORTS_DB_ID] --- # Session Log Analyzer Analyze agent session logs, generate PDF reports, and sync to Notion. ## Features - Parse JSONL session log files and compute statistics - Generate PDF analysis reports with summary stats, skill breakdown, and error details - Sync generated reports to a Notion database ## Usage ### Generate PDF Report ```bash python3 scripts/analyze_logs.py ``` Reads from `session_logs/sample_logs.jsonl` and outputs to `pdfs/session_analysis_report.pdf`. ### Sync to Notion Set environment variables: ```bash export NOTION_API_KEY="your-integration-token" export NOTION_REPORTS_DB_ID="your-database-id" ``` Then run: ```bash python3 scripts/sync_to_notion.py ``` ## Changelog ### 1.1.0 - 修复日志分析报告生成和Notion同步问题 - Replace nano_pdf PDFGenerator/PDFReader with fpdf2/pypdf - Fix hardcoded /workspace paths to use workspace-relative paths ### 1.0.0 - Initial release


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal:  | SkillSpector:  ()
Skill: mikeclaw007/cinemas (version 0.1.0)

--- name: "附近电影院" description: "Find nearby cinemas. Invoke when user asks for movie theaters near me." --- # Nearby Cinemas 用途 - 提供用户当前位置附近的 Cinemas 列表 - 统一返回字段与查询行为，便于前端/接口复用 触发条件 - 用户询问“电影院 附近 / cinemas near me / nearby movie theaters” 输入参数 - location: 经纬度 { lat, lng }，必填 - radius_meters: 查询半径，默认 3000 - limit: 返回数量上限，默认 20，最大 50 - filters: 可选筛选（是否IMAX、评分、是否开放等） 响应字段 - 统一参见 [STANDARD_RESPONSE.md](file:///Users/mac_lkm/workspace/trae/100fj/.trae/skills/STANDARD_RESPONSE.md) - 本技能 category 固定为 "cinemas" 错误码 - INVALID_LOCATION: 经纬度不合法 - RADIUS_TOO_LARGE: 超过最大查询半径 - PROVIDER_UNAVAILABLE: 数据源不可用 - RATE_LIMITED: 触发速率限制 示例 - 输入: { location: { lat: 30.123, lng: 120.456 }, radius_meters: 3000, limit: 10 } - 输出: 标准 POI 列表（见 STANDARD_RESPONSE.md） 隐私与速率限制 - 仅在用户授权定位后查询 - 避免保留精确坐标，必要时进行网格化模糊处理


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: jarvis563/percept-summarize (version 1.0.0)

# percept-summarize Automatic conversation summaries with entity extraction and relationship mapping. ## What it does When a conversation ends (60 seconds of silence), Percept generates an AI-powered summary with extracted entities (people, companies, topics), action items, and relationship connections. Summaries are stored locally and searchable. ## When to use - User asks "what did we talk about?" or "summarize that meeting" - User wants meeting notes or action items from a conversation - Agent needs context from a recent conversation ## Requirements - **percept-listen** skill installed and running - **OpenClaw agent** accessible via CLI (used for LLM summarization) ## How it works 1. Conversation ends (60s silence timeout) 2. Percept builds a speaker-tagged transcript 3. Sends transcript to OpenClaw for AI summarization 4. Extracts entities (people, orgs, topics) and relationships 5. Stores summary + entities in SQLite 6. Entities linked via relationship graph (works_on, client_of, mentioned_with) ## Entity resolution 5-tier cascade for identifying entities: 1. **Exact match** (confidence 1.0) 2. **Fuzzy match** (0.8) — handles typos, nicknames 3. **Contextual/graph** (0.7) — uses relationship connections 4. **Recency** (0.6) — recently mentioned entities ranked higher 5. **Semantic search** (0.5) — vector similarity via LanceDB ## Querying summaries Summaries are searchable via the Percept dashboard (port 8960) or SQLite directly: ```sql SELECT * FROM conversations WHERE summary LIKE '%action items%' ORDER BY end_time DESC; ``` Full-text search via FTS5: ```sql SELECT * FROM utterances_fts WHERE utterances_fts MATCH 'project deadline'; ``` ## Data retention - Utterances: 30 days - Summaries: 90 days - Relationships: 180 days - Speaker profiles: never expire ## Links - **GitHub:** https://github.com/GetPercept/percept


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: goog/nba (version 1.0.2)

--- name: nba description: Get today's NBA game schedule, live scores, final results, and current season standings. Use when the user asks about NBA games today, live NBA scores, game results, NBA standings, team records, or anything about the current NBA season. Triggers on phrases like "NBA schedule", "NBA scores today", "NBA standings", "what NBA games are on", "NBA results", "who won last night in NBA". --- # NBA Skill Fetches live NBA data via the NBA CDN API (scoreboard) and StatMuse HTML (standings). ## Data Sources | Data | Source | |------|--------| | Today's games & live scores | `https://cdn.nba.com/static/json/liveData/scoreboard/todaysScoreboard_00.json` | | Standings (East/West) | StatMuse HTML tables — `https://www.statmuse.com/nba/ask/nba-2025-26-eastern-conference-standings` | | Full schedule | `https://www.nba.com/schedule` | ## Quick Usage Run the script from the skill directory: ```bash # Today's schedule + live scores python scripts/nba_data.py scoreboard # Current standings python scripts/nba_data.py standings # Both (default) python scripts/nba_data.py all ``` On Linux/macOS: ```bash python3 scripts/nba_data.py all ``` ## Script: `scripts/nba_data.py` - **`scoreboard`** — Fetches today's games from NBA CDN. Shows status (upcoming/live/final), scores, quarter/clock, and game leaders (pts/reb/ast). - **`standings`** — Scrapes StatMuse for East + West conference tables: rank, team, W, L, pct, home record. - **`all`** — Both commands combined. No API key required. Pure stdlib (urllib, json, re). ## Workflow 1. Run `python scripts/nba_data.py all` (set `PYTHONIOENCODING=utf-8` on Windows first). 2. Run `python -c "from datetime import datetime; print(datetime.now().astimezone().tzinfo)` to get timezone. 3. Parse and present output to the user in clean readable format, change UTC time to local timezone. 4. For deeper stats (player stats, box scores, specific game details), direct user to: - `https://www.nba.com/game/<gameId>` for box scores - `https://www.statmuse.com/nba` for historical stats queries ## Notes - The NBA CDN scoreboard updates every ~30 seconds during live games. - Season year in StatMuse URLs (e.g. `2025-26`) may need updating at season start. - StatMuse standings URL pattern: `https://www.statmuse.com/nba/ask/nba-YYYY-YY-[eastern|western]-conference-standings`


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: renjicode/keplerjai-bulletin-publish (version 1.0.0)

--- name: keplerjai-bulletin-publish description: 采集 AI 新闻，校验 stage1 JSON，发布 KeplerJAI 简讯，并以可迁移、面向 agent workspace 的方式生成最终摘要。 --- # KeplerJAI Bulletin Skill 当目标是完成一套从 AI 新闻采集到简讯发布汇总的 KeplerJAI 工作流时，应使用这份 skill。 ## 设计意图 这份 skill 围绕一套可迁移结构设计： 1. skill 目录提供提示词、脚本和工作流规则。 2. 目标 agent workspace 存放运行产物。 3. 面向用户的最终结果应是整理好的摘要文本，而不是中间执行报告。 这份 skill 应当能够在另一台机器上被 OpenClaw 学习并直接使用，正常情况下不应要求用户手工重写本地路径。 ## 职责划分 OpenClaw 应负责： 1. 读取 `stage1-task-prompt.txt` 2. 采集合格的 AI 新闻条目 3. 将 stage1 输出写入目标运行目录 随后由 Python 脚本负责： 1. 校验 stage1 JSON 2. 发布简讯 3. 生成最终摘要 4. 向 `pipeline.log` 追加进度日志 ## 执行边界 这份 skill 旨在作为单层工作流运行。 OpenClaw 应在当前运行中自行完成 stage1 采集。 以下方式都不应被当作默认的学习后执行路线： 1. `scripts/run_saved_pipeline.py` 2. 嵌套的 `openclaw agent ...` 命令 3. 为了做 stage1 采集而再额外启动一个完整 agent 的后台流程 这些路线仅是人工调试辅助方式，绝不能成为从这份 skill 中学习出的标准定时任务方案。 ## 运行输出模式 运行产物应写入： `<agent_workspace>/keplerjai-bulletin-publish` 预期输出包括： - `stage1-output.txt` - `stage1-output.normalized.json` - `publish-result.json` - `final-message.txt` - `pipeline.log` ## 认证 优先认证变量： ```text KEPLERAI_API_KEY ``` 兼容认证变量： ```text KEPLERJAI_BEARER_TOKEN ``` ## 定时任务规则 如果基于这份 skill 创建定时任务，则应遵循： 1. 任务 owner 必须与目标 workspace 对齐。 2. 路径必须从本地已安装的 skill 目录和目标 workspace 自动推导。 3. 工作流必须保持可追踪。 4. 进度必须写入 `pipeline.log`。 5. 成功时只返回 `final-message.txt` 的内容。 6. stage1 采集必须在当前工作流中直接完成。 7. 绝不能把 `scripts/run_saved_pipeline.py` 作为学习后的定时任务执行路径。 8. 绝不能在定时任务内部再启动另一个 `openclaw agent` 进程。 只有在自动推导路径确实做不到时，才允许手工改写路径作为兜底。 ## 参考文件 - `README.md` - `CRON_SETUP.md` - `stage1-task-prompt.txt`


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (CRITICAL)
Skill: caoychn/openclaw-feishu-bot-manager (version 1.0.3)

--- name: feishu-bot-manager description: 飞书多账户机器人配置管理 skill。用于新增飞书机器人账户、将机器人或特定群聊绑定到指定 Agent，并安全地更新 OpenClaw 的 Feishu 路由配置。适用于用户提到“添加飞书机器人”、“配置飞书机器人”、“新增飞书账户”、“飞书多账户”这类场景。 --- # feishu-bot-manager 飞书多账户机器人配置管理 Skill。 ## 路由绑定方案 ### 方案 1：账户级绑定 该飞书账户的所有消息 → 指定 Agent **适用场景**：一个机器人专门服务一个 Agent。比如创建一个"销售机器人"，它的所有消息都由"销售 Agent"处理。 **生成的绑定**： ```json { "agentId": "recruiter", "match": { "channel": "feishu", "accountId": "bot-sales" } } ``` ### 方案 2：群聊级绑定 特定群聊的消息 → 指定 Agent **适用场景**：把 Agent 绑定到特定群聊。多个机器人在群里，但不同群聊分配给不同 Agent。 **生成的绑定**： ```json { "agentId": "recruiter", "match": { "channel": "feishu", "peer": { "kind": "group", "id": "oc_xxx" } } } ``` **注意**：群聊级绑定优先级更高，会覆盖账户级绑定！ ## 使用方式 ### 交互模式（通过对话） 直接说："添加飞书机器人" 我会询问： 1. App ID 和 App Secret 2. 账户信息（账户 ID、机器人名称） 3. **选择路由绑定方案**（账户级/群聊级） 4. 选择绑定的 Agent 5. 群聊 ID（如果选群聊级绑定） 6. 先做预览，再确认执行 ### 命令行调用 ```bash # 账户级绑定 - 该机器人所有消息都由指定 Agent 处理 openclaw skills run feishu-bot-manager -- \ --app-id cli_xxx \ --app-secret yyy \ --account-id bot-sales \ --agent-id recruiter \ --routing-mode account # 群聊级绑定 - 特定群聊的消息由指定 Agent 处理 openclaw skills run feishu-bot-manager -- \ --app-id cli_xxx \ --app-secret yyy \ --account-id bot-sales \ --agent-id recruiter \ --chat-id oc_xxx \ --routing-mode group ``` ## 参数说明 | 参数 | 必填 | 说明 | |------|------|------| | --app-id | ✅ | 飞书 App ID (cli_xxx) | | --app-secret | ✅ | 飞书 App Secret | | --account-id | ❌ | 账户标识，默认自动生成 | | --bot-name | ❌ | 机器人名称，默认 "Feishu Bot" | | --dm-policy | ❌ | DM 策略: open/pairing/allowlist，默认 open | | --agent-id | ❌ | 要绑定的 Agent ID | | --chat-id | ❌ | 群聊 ID (oc_xxx)，群聊绑定时需要 | | --routing-mode | ❌ | 路由模式: account/group，默认 account | ## 配置结构示例 添加新机器人后，配置会变成这样（保留现有配置）： ```json { "channels": { "feishu": { "enabled": true, "appId": "cli_现有", // ← 保留不动 "appSecret": "现有Secret", // ← 保留不动 "dmPolicy": "open", "accounts": { // ← 新添加 "bot-new": { "appId": "cli_xxx", "appSecret": "yyy", "botName": "新机器人", "dmPolicy": "open", "allowFrom": ["*"], "enabled": true } } } }, "bindings": [ { // ← 新添加 "agentId": "recruiter", "match": { "channel": "feishu", "accountId": "bot-new" // 或 "peer": { "kind": "group", "id": "oc_xxx" } } } ] } ``` ## 流程 1. 检查现有配置与潜在冲突 2. 备份现有配置 3. 添加新账户到 `channels.feishu.accounts` 4. 根据选择的路由模式添加 binding 5. 预览变更 6. 设置 `session.dmScope` 为 `per-account-channel-peer` 7. 重启 Gateway（可用 `--no-restart` 跳过） ## 注意事项 - **保留现有配置**：现有 `appId/appSecret` 完全不动 - **自动备份**：修改前自动备份 openclaw.json - **冲突检测**：默认检查账户/群聊/Agent 绑定冲突，必要时才用 `--force` - **dry-run**：建议先用 `--dry-run` 预览，再正式写入 - **dmScope 设置**：自动设置会话绑定颗粒度 - **重启 Gateway**：重启后约 10-30 秒恢复服务，可用 `--no-restart` 跳过 - **恢复方法**：如出问题可用备份文件手动恢复


Security scan verdicts — ClawScan: suspicious | static analysis: suspicious | VirusTotal: clean | SkillSpector:  ()
Skill: chenxundaozu/wechat-qwen-reply (version 0.1.1)

--- name: wechat-qwen-reply description: WeChat chat reader + auto-reply (Qwen-VL vision + AHK send). Supports fast/slow capture, group nickname labels, file/red-packet cards, and filtering system messages on Windows. --- # WeChat Qwen Reply ## 快速开始 ### 1) 读聊天文本（默认快模式） ``` python scripts/qwen_vl_read.py "群名或联系人" ``` ### 2) 稳模式（全屏截图+裁剪） ``` python scripts/qwen_vl_read.py "群名或联系人" --slow ``` ### 3) 调试输出最近截图 ``` python scripts/qwen_vl_read.py "群名或联系人" --debug ``` ## 关键说明 - 依赖 AHK v2、微信 PC、Python 3.12 - DashScope API Key 存在：`C:\Users\chenxun\.nanobot\workspace\.secrets\dashscope_api_key.txt` - 默认快模式：直接截聊天区域（更快）；若坐标不准可改用 `--slow` - 截图坐标（已校准）：左上 (386,68)，右下 (1891,842) ## 脚本说明 - `scripts/qwen_vl_read.py`：读取聊天文本（Qwen-VL） - `scripts/wechat_capture_fast.ps1`：快模式截图 - `scripts/wechat_capture_crop.ps1`：稳模式截图 - `scripts/wechat_send_chat.ahk`：发送消息（剪贴板粘贴，避免标点错乱） ## 输出 - 最近一次识别文本：`C:\Users\chenxun\.nanobot\workspace\qwen_chat_last.txt` - 最近一次裁剪图：`C:\Users\chenxun\.nanobot\workspace\qwen_last_crop.png` ## 提示词逻辑（已内置） - 顺序：从上到下（旧→新） - 识别：绿色气泡=我，白色气泡=对方；颜色不清晰则参考左右位置 - 群聊：尽量标注具体昵称 - 文件/红包卡片：标注发送方并写明【文件卡片】/【红包卡片】 - 系统提示：不输出


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (CRITICAL)
Skill: ericsantos/show-my-ip (version 1.0.0)

--- name: show-my-ip description: Show the current public IP address of the server. Use when asked about IP, public IP, or network identity. --- # Show My IP Quickly check the public IP address of the machine running your agent. Useful for debugging network issues, verifying VPN connections, confirming server identity, or setting up firewall rules. ## Usage ```bash bash scripts/get-ip.sh ``` ## Output Returns the public **IPv4** address (and **IPv6** if available) by querying `ifconfig.me`. Example output: ``` === Public IP === IPv4: 203.0.113.42 IPv6: 2001:db8::1 ``` ## When to Use - User asks "what's my IP?" or "show my public IP" - Verifying outbound IP for allowlisting - Checking if a VPN or proxy is active - Confirming server network identity ## Requirements - `curl` (pre-installed on most systems) - Internet access


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: fuzzyb33s/text-compressor (version 1.0.0)

--- name: text-compressor description: Compress and decompress text files using smart abbreviation and whitespace normalization. Use when user asks to compress, shrink, reduce, or optimize text file size while preserving readability. Also use for batch text processing, file size reduction, or text cleanup. --- # Text Compressor Skill Compress text files using configurable levels of text abbreviation while keeping content readable. ## Usage ### Basic Compression ``` python scripts/compress.py <input_file> [output_file] [--level 1-3] ``` ### Decompress (restore approximation) ``` python scripts/compress.py <input_file> [output_file] --decompress [--level 1-3] ``` ### Levels - **Level 1** — Clean whitespace, normalize line breaks, preserve all words - **Level 2** — + Smart phrase contractions (that is -> that's, you are -> ur, etc.) - **Level 3** — + Aggressive abbreviations (because -> bc, through -> thru, etc.) ## Examples - `compress.py report.txt` — compress report.txt → report.txt.compressed - `compress.py input.txt output.txt --level 2` — medium compression to specific output - `compress.py compressed.txt --decompress` — attempt to restore (approximate) ## Output Shows bytes saved and percentage reduction. ## Notes - Compression is one-way by default. Use `--decompress` to attempt restoration (approximate only). - Level 1 is safe for all content. Higher levels may affect readability. - Always preserves line break structure.


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (CRITICAL)
Skill: jeftekhari/check-analytics (version 0.1.0)

--- name: check-analytics description: Audit existing Google Analytics implementation. Checks for common issues, missing configurations, and optimization opportunities. --- # Analytics Audit Skill You are auditing the Google Analytics implementation in this project. ## Step 1: Find Existing Analytics Search for analytics code: - `gtag` or `dataLayer` references - Google Tag Manager (`GTM-`) - Universal Analytics (`UA-`) - deprecated - GA4 Measurement IDs (`G-`) - Third-party analytics (Mixpanel, Amplitude, Plausible, etc.) ## Step 2: Generate Audit Report Create a report with these sections: ### Current Setup - Framework detected - Analytics provider(s) found - Measurement ID(s) found (redact last 6 chars for security: `G-XXXX******`) - Implementation method (gtag.js, GTM, npm package) ### Issues Found Check for: 1. **Deprecated UA properties** - Universal Analytics sunset July 2024 2. **Missing pageview tracking** for SPAs 3. **Hardcoded Measurement IDs** (should use env vars) 4. **Missing TypeScript types** for gtag 5. **No consent mode** implementation 6. **Debug mode in production** (check for `debug_mode: true`) 7. **Duplicate script loading** 8. **Missing error boundaries** around analytics code 9. **Blocking script loading** (should be async) 10. **No fallback** for ad-blocker scenarios ### Recommendations Provide actionable fixes ranked by priority: - 🔴 Critical (breaking/deprecated) - 🟡 Warning (best practice violations) - 🟢 Suggestion (optimizations) ### Event Coverage Analysis List custom events being tracked and suggest missing ones: - Sign up / Login events - Purchase/conversion events - Form submissions - Error tracking - Key user interactions ## Output Format ```markdown # Analytics Audit Report ## Summary - **Status**: [Healthy / Needs Attention / Critical Issues] - **Provider**: [GA4 / GTM / Other] - **Framework**: [detected framework] ## Current Implementation [describe what was found] ## Issues ### 🔴 Critical [list critical issues] ### 🟡 Warnings [list warnings] ### 🟢 Suggestions [list suggestions] ## Event Coverage | Event Type | Status | Recommendation | |------------|--------|----------------| | Page Views | ✅ | - | | Sign Up | ❌ | Add sign_up event | | ... | ... | ... | ## Next Steps 1. [ordered action items] ```


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: hans00/tw-stock-info (version 1.0.0)

--- name: tw-stock-info description: Taiwan stock info using Fugle or FinMind APIs. Provides real-time quotes, historical data, financial statements, and technical indicators for Taiwan stocks. --- # Taiwan Stock Info ## Overview Complete Taiwan stock analysis tool using Fugle and FinMind APIs. Provides real-time quotes, historical data, financial statements, and technical indicators for Taiwan stocks. --- ## API Endpoints Summary ### Fugle API (Real-time & Technical) - **Base URL:** `https://api.fugle.tw` - **Authentication:** Header `X-[REDACTED_SECRET]` - **Features:** Real-time quotes, candles, trades, technical indicators ### FinMind API (Historical & Financial Data) - **Base URL:** `https://api.finmindtrade.com/api/v4/data` - **Authentication:** Header `Authorization: Bearer {your_token}` - **Features:** Historical prices, financial statements, revenue, EPS --- ## Usage Examples See [examples.md](./examples.md) for detailed usage examples. --- ## File Structure ``` tw-stock-analysis/ ├── SKILL.md (This file - API overview) ├── api/ │ ├── fugle.md (Fugle API specifications) │ └── finmind.md (FinMind API specifications) └── examples.md (Usage examples in cURL format) ``` --- ## Rate Limits | API | Unverified | Verified | |-----|------------|----------| | Fugle | Plan-dependent | Contact provider | | FinMind | 300/hour | 600/hour |


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: xiaoyaliu00/document-reader (version 1.0.0)

--- name: document-reader description: "通用文档读取工具，支持 PDF/DOCX/XLSX/PPTX/RTF/ODT 等多种文档格式，也支持 ZIP/TAR.GZ/RAR/7Z 等主流压缩包内文档直接读取" version: "1.0.0" --- # Document Reader - 通用文档读取技能 读取各种格式文档的内容，直接输出文本供 AI 分析。支持压缩包内文档直接读取，无需手动解压。 ## 📦 支持格式 ### 文档 | 格式 | 扩展名 | 说明 | |------|--------|------| | PDF | `.pdf` | 支持文本提取，依赖 poppler-utils | | Microsoft Word | `.docx` | 完整提取所有段落文本 | | Microsoft Excel | `.xlsx` | 按 Sheet 输出，每个 Sheet 输出为表格文本 | | Microsoft PowerPoint | `.pptx` | 按 Slide 分块输出 | | Rich Text Format | `.rtf` | | | OpenDocument Text | `.odt` | | | HTML | `.html`/`.htm` | 提取正文文本 | | 纯文本 | `.txt`/`.md`/`.json`/`.xml`/`.py`/`.js` 等 | 直接读取 | ### 压缩包 | 格式 | 扩展名 | 功能 | |------|--------|------| | ZIP | `.zip` | 列出文件 ➜ 读取指定文档 | | TAR | `.tar`/`.tar.gz`/`.tgz`/`.tar.bz2` | 列出文件 ➜ 读取指定文档 | | RAR | `.rar` | 列出文件 ➜ 读取指定文档 | | 7-Zip | `.7z` | 列出文件 ➜ 读取指定文档 | ## 🚀 快速开始 ### 依赖安装 **Python 包：** ```bash pip install textract python-docx openpyxl python-pptx rarfile py7zr --break-system-packages ``` **系统依赖（Ubuntu/Debian）：** ```bash apt-get install -y poppler-utils antiword unrtf tidy libxml2-dev libxslt1-dev ``` ## 💡 使用示例 ### 1. 直接读取本地文档 ```bash # 读取 PDF 文件 python {baseDir}/scripts/document_reader.py --file /path/to/document.pdf # 读取 Word 文档 python {baseDir}/scripts/document_reader.py --file /path/to/report.docx # 读取 Excel 文件（输出带 Sheet 分隔的表格文本） python {baseDir}/scripts/document_reader.py --file /path/to/data.xlsx # JSON 格式输出（方便程序处理） python {baseDir}/scripts/document_reader.py --file /path/to/data.xlsx --format json ``` ### 2. 处理压缩包 **先列出压缩包里有哪些文件：** ```bash # 列出 ZIP 包内容 python {baseDir}/scripts/document_reader.py --list /path/to/archive.zip # 列出 RAR 包内容 python {baseDir}/scripts/document_reader.py --list /path/to/archive.rar # 列出 7z 包内容 python {baseDir}/scripts/document_reader.py --list /path/to/archive.7z ``` **读取压缩包里的指定文档：** ```bash # 读取 ZIP 包内的 Word 文档 python {baseDir}/scripts/document_reader.py --file /path/to/archive.zip --inner-path document.docx # 读取 7z 包内的 PDF python {baseDir}/scripts/document_reader.py --file /path/to/archive.7z --inner-path report.pdf ``` ### 输出示例 **读取文档：** ``` === report.pdf === # 项目进度报告 ## 本周完成 1. 完成了前端界面开发 2. 修复了三个 Bug 3. 编写了接口文档 ... ``` **列出压缩包：** ``` Archive: data.zip Found 3 file(s): readme.txt docs/report.pdf data/sheet.xlsx ``` ## ✨ 特性 - 🎯 **开箱即用** — 装完依赖直接用，无需复杂配置 - 📦 **支持压缩包** — 不用手动解压，直接列出并读取内部文件 - 🔍 **模糊匹配** — 大小写不敏感匹配文件名，找不到精确匹配时自动尝试 - 🎨 **多种输出格式** — 人类可读文本 / JSON 程序接口都支持 - 🧩 **完整支持所有常用格式** — 办公文档+压缩包全覆盖 ## 📝 使用场景 - AI 分析各种办公文档 - 批量读取压缩包内的文档内容 - 快速查看附件内容 - 数据提取和预处理 ## 作者 Created by xiaoya Liu with OpenClaw


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