OpenClaw/clawhub-security-signals huggingface dataset:
Skill: lolaopenclaw/vps-bootstrap (version 1.0.0)

--- name: vps-bootstrap description: Bootstrap a fresh VPS from zero to a fully operational OpenClaw deployment, with backup/restore and post-recovery verification. Use when setting up OpenClaw on a new VPS, recovering from a failed server, migrating between machines, or automating disaster recovery. Covers system dependencies, Node.js, Chrome, OpenClaw install, security hardening, backup to Google Drive, restore from backup, and full verification suite. --- # VPS Bootstrap Full deployment and disaster recovery framework for OpenClaw on Ubuntu VPS. ## Overview Three scripts handle the complete lifecycle: 1. **`bootstrap.sh`** — Fresh VPS → fully operational OpenClaw (15-20 min) 2. **`restore.sh`** — Restore workspace, config, secrets, and crons from backup 3. **`verify.sh`** — Post-deployment verification (all-green = ready) ## Quick Start ### New VPS setup ```bash # On fresh Ubuntu 24.04 VPS bash scripts/bootstrap.sh ``` ### Restore from backup ```bash bash scripts/restore.sh ~/openclaw-backup-*.tar.gz ``` ### Verify everything works ```bash bash scripts/verify.sh ``` ## What bootstrap.sh does Sequential installation with error handling at each step: 1. **System packages** — build-essential, curl, git, jq, unzip, etc. 2. **Node.js** — Latest LTS via NodeSource 3. **Google Chrome** — Stable channel + headless shim for browser tools 4. **OpenClaw** — Global npm install + gateway service setup 5. **Security baseline** — UFW firewall, fail2ban, SSH key-only auth 6. **Service setup** — systemd user service with auto-restart + linger Each step is idempotent — safe to re-run if interrupted. ## What restore.sh does Extracts a backup tarball and restores: - Workspace files (SOUL.md, MEMORY.md, AGENTS.md, memory/, scripts/) - OpenClaw config (openclaw.json, .env) - Cron database - GPG keys + password store (encrypted secrets) - OAuth credentials (GOG, rclone) - System config snapshot ## What verify.sh does Runs 10+ checks and reports pass/fail: - OpenClaw gateway running and healthy - Telegram/Discord providers connected - Browser tools functional - Backup system operational - Cron jobs loaded - SSH security baseline - Disk space and memory ## Backup Script (Optional) For automated daily backups, see `references/backup-guide.md`. ## Customization Edit `scripts/bootstrap.sh` variables at the top: ```bash OPENCLAW_PORT=18789 # Gateway port ENABLE_FIREWALL=true # UFW setup ENABLE_FAIL2BAN=true # SSH protection INSTALL_CHROME=true # Browser tools support ``` ## Requirements - Ubuntu 22.04+ or Debian 12+ - Root or sudo access - 2GB+ RAM recommended - SSH key access configured ## Security Notes - Scripts never store secrets in plaintext in the skill itself - GPG keys are backed up encrypted - SSH is hardened to key-only authentication - Gateway binds to localhost by default


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (CRITICAL)
Skill: jtil4201/openclaw-advanced-memory (version 1.0.0)

# OpenClaw Advanced Memory Three-tier AI agent memory system — real-time capture, vector search, and LLM-curated long-term recall. ## What It Does Gives your OpenClaw agent persistent, searchable memory that survives across sessions: - **HOT tier** — Redis buffer captures conversation turns in real-time (every 30s) - **WARM tier** — Qdrant vector store with chunked, embedded conversations (searchable, 7-day retention) - **COLD tier** — LLM-curated "gems" extracted nightly (decisions, lessons, milestones — stored forever) ## Requirements - **Qdrant** — vector database (Docker recommended) - **Redis** — buffer queue (Docker recommended) - **Ollama** — local embeddings (`snowflake-arctic-embed2`) + curation LLM (`qwen2.5:7b`) - **Python 3.10+** with `qdrant-client`, `redis`, `requests` No cloud APIs. No subscriptions. Runs entirely on your own hardware. ## Setup ```bash # 1. Start Qdrant + Redis (Docker) docker compose up -d # 2. Pull Ollama models ollama pull snowflake-arctic-embed2 ollama pull qwen2.5:7b # 3. Run the installer bash scripts/install.sh ``` The installer sets up Qdrant collections, installs a systemd capture service, and configures cron jobs. Edit connection hosts at the top of each script if your infra isn't on localhost. ## Usage ```bash # Search your memory ./recall "what did we decide about pricing" ./recall "deployment" --project myproject --tier cold -v # Check system status ./mem-status # Force a warm flush or curation run ./warm-now ./curate-now 2026-03-01 ``` ## Schedules | Component | Schedule | What It Does | |-----------|----------|-------------| | `mem-capture` | Always running (systemd) | Watches transcripts → Redis | | `mem-warm` | Every 30 min (cron) | Redis → Qdrant warm | | `mem-curate` | Nightly 2 AM (cron) | Warm → LLM curation → Qdrant cold | ## How Curation Works Every night, a local LLM (`qwen2.5:7b` via Ollama) reads the day's conversations and extracts structured gems: ```json { "gem": "Chose DistilBERT over TinyBERT — 99.69% F1, zero false positives", "context": "A/B tested both architectures on red team suite", "categories": ["decision", "technical"], "project": "guardian", "importance": "high" } ``` Only decisions, milestones, lessons, and people info make the cut. Casual banter and debugging noise get filtered out. ## Links - **GitHub:** https://github.com/jtil4201/openclaw-advanced-memory - **Full docs:** See README.md in the repo for architecture diagrams, tuning guide, and adaptation notes


Security scan verdicts — ClawScan: suspicious | static analysis:  | VirusTotal: clean | SkillSpector: suspicious (CRITICAL)
Skill: tran-quang-tien/wellcome (version 1.0.0)

--- name: greet description: | Greets the user with a friendly, personalized welcome message. USE WHEN user says "hello", "hi", "hey", "greet me", "good morning", "good afternoon", "good evening", or any greeting phrase. --- # Greet ## When to Activate This Skill - User sends a greeting ("hello", "hi", "hey", "what's up", etc.) - User says "greet me" - User says "good morning", "good afternoon", "good evening" - Session start greeting is requested ## Greeting Behavior When triggered, respond with a warm, friendly greeting that: 1. **Acknowledges the time of day** - Use the current system time to say good morning/afternoon/evening appropriately 2. **Is concise and natural** - Keep it brief and conversational 3. **Offers to help** - End with a short offer to assist ## Time-of-Day Rules | System Time | Greeting | |--------------------|-----------------| | 5:00 AM - 11:59 AM | Good morning | | 12:00 PM - 4:59 PM | Good afternoon | | 5:00 PM - 8:59 PM | Good evening | | 9:00 PM - 4:59 AM | Hey, night owl | ## Example Output > Good morning! Hope your day is off to a great start. What can I help you with? > Good evening! What are we working on tonight? > Hey, night owl! Burning the midnight oil? What can I help with?


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: jiansiting/fortigate-config (version 1.0.0)

--- name: fortigate-config description: 自动配置 FortiGate 防火墙，支持基础策略管理及工控协议（Modbus、IEC104、S7等）的安全配置。 author: jiansiting version: 2.0.0 tags: [fortigate, firewall, industrial, security, automation] --- # FortiGate 自动配置技能（工控增强版） ## 功能说明 本技能通过 FortiGate REST API 实现防火墙的自动化配置，特别增加了对工业控制系统（ICS）协议的支持。您可以： - 管理防火墙策略（增、删、改、查） - 管理地址对象 - 配置 Industrial Connectivity（协议转换，仅 Rugged 系列） - 创建基于工控协议的服务对象（Modbus TCP、IEC104 等） - 创建针对工控协议的 IPS 配置文件 - 添加工控协议策略并关联安全配置文件 ## 许可证要求 使用工控协议签名功能需要以下许可证之一： - FortiGuard 工业安全服务 - ATP（高级威胁防护）套装 - UTP（统一威胁防护）套装 ## 配置项 在使用本技能前，需要在 OpenClaw 的环境变量或配置文件中设置以下项： | 配置项 | 说明 | 必填 | 默认值 | | :--- | :--- | :--- | :--- | | `FORTIGATE_HOST` | FortiGate 设备的 IP 地址或域名 | 是 | 无 | | `FORTIGATE_TOKEN` | API 访问令牌 | 是 | 无 | | `FORTIGATE_PORT` | API 端口 | 否 | 443 | | `FORTIGATE_VERIFY_SSL` | 是否验证 SSL 证书 | 否 | false | ## 使用方法 @openclaw fortigate-config <操作> <参数（JSON 格式）> ### 基础操作 | 操作 | 说明 | 参数示例 | |------|------|----------| | `list-policies` | 列出所有防火墙策略 | `{}` | | `add-address` | 添加地址对象 | `{"name": "web-server", "subnet": "192.168.1.10/32"}` | | `delete-address` | 删除地址对象 | `{"name": "web-server"}` | | `add-policy` | 添加防火墙策略 | `{"name": "allow-web", "srcintf": "port1", "dstintf": "port2", "srcaddr": "all", "dstaddr": "all", "action": "accept"}` | | `update-policy` | 更新防火墙策略 | `{"policyid": 1, "action": "deny", "name": "new-name"}` | ### 工控协议操作 | 操作 | 说明 | 参数示例 | |------|------|----------| | `configure-icond` | 配置 Industrial Connectivity 服务（协议转换） | `{"interface": "internal1", "protocol_type": "modbus-serial-tcp", "tty_device": "serial0"}` | | `create-industrial-service` | 创建工控协议服务对象 | `{"name": "modbus-tcp", "protocol": "TCP", "port": 502}` | | `create-industrial-ips` | 创建工控 IPS 配置文件 | `{"name": "plc-protection", "protocols": ["Modbus", "IEC104"], "action": "monitor"}` | | `add-industrial-policy` | 添加工控协议策略（带安全防护） | `{"name": "hmi-to-plc", "srcintf": "port1", "dstintf": "port2", "srcaddr": "hmi-net", "dstaddr": "plc-net", "service": "modbus-tcp", "ips_profile": "plc-protection"}` | ## 常见工控协议端口 | 协议 | 端口 | 描述 | |------|------|------| | Modbus TCP | TCP 502 | 工业自动化常用协议 | | IEC 104 | TCP 2404 | 电力系统远程控制协议 | | S7 Plus | TCP 102 | 西门子 PLC 协议 | | Ethernet/IP | TCP 44818 | Rockwell/ODVA 工业协议 | | DNP3 | TCP 20000 | 电力/水务自动化协议 | ## 注意事项 - 所有写操作（添加、删除、更新）均会先检查对象是否存在，避免重复创建或误删。 - 输出格式优先使用表格（需安装 `tabulate`），否则使用简单文本对齐。 - 生产环境请将 `FORTIGATE_VERIFY_SSL` 设为 `true` 并使用有效证书。 ## 反馈与支持 如有问题，请联系 [REDACTED_SECRET]


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (HIGH)
Skill: ntriq-gh/ntriq-x402-content-generate-batch (version 1.0.0)

--- name: ntriq-x402-content-generate-batch description: "Batch AI content generation for up to 500 prompts. Flat $6.00 USDC via x402." version: 1.0.0 metadata: openclaw: primaryTag: data-intelligence tags: [content, writing, batch, nlp, generation, x402] author: ntriq homepage: https://x402.ntriq.co.kr --- # Content Generate Batch (x402) Generate content for up to 500 prompts in a single call. Flat $6.00 USDC. 100% local inference on Mac Mini. ## How to Call ```bash POST https://x402.ntriq.co.kr/content-generate-batch Content-Type: application/json X-PAYMENT: <x402-payment-header> { "prompts": [ "benefits of standing desks", "best practices for remote meetings", "how to improve team productivity" ], "style": "blog", "tone": "professional", "max_words": 300 } ``` ## Parameters | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `prompts` | array | ✅ | Content topics (max 500) | | `style` | string | ❌ | `blog` \| `email` \| `social` \| `product` \| `report` \| `ad` | | `tone` | string | ❌ | `professional` \| `casual` \| `persuasive` \| `friendly` | | `language` | string | ❌ | Output language (default: `en`) | | `max_words` | integer | ❌ | Max words per item (default: 500) | ## Payment - **Price**: $6.00 USDC flat (up to 500 prompts) - **Network**: Base mainnet (EIP-3009 gasless) - **Protocol**: [x402](https://x402.org) ```bash curl https://x402.ntriq.co.kr/services ```


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: wingchiu/nano-banana-2-fal (version 1.0.0)

--- name: nano-banana-pro description: Generate or edit images via Gemini 3 Pro Image (Nano Banana Pro). homepage: https://ai.google.dev/ metadata: { "openclaw": { "emoji": "🍌", "requires": { "bins": ["uv"], "env": ["GEMINI_API_KEY"] }, "primaryEnv": "GEMINI_API_KEY", "install": [ { "id": "uv-brew", "kind": "brew", "formula": "uv", "bins": ["uv"], "label": "Install uv (brew)", }, ], }, } --- # Nano Banana Pro (Gemini 3 Pro Image) Use the bundled script to generate or edit images. Generate ```bash uv run {baseDir}/scripts/generate_image.py --prompt "your image description" --filename "output.png" --resolution 1K ``` Edit (single image) ```bash uv run {baseDir}/scripts/generate_image.py --prompt "edit instructions" --filename "output.png" -i "/path/in.png" --resolution 2K ``` Multi-image composition (up to 14 images) ```bash uv run {baseDir}/scripts/generate_image.py --prompt "combine these into one scene" --filename "output.png" -i img1.png -i img2.png -i img3.png ``` API key - `GEMINI_API_KEY` env var - Or set `skills."nano-banana-pro".apiKey` / `skills."nano-banana-pro".env.GEMINI_API_KEY` in `~/.openclaw/openclaw.json` Notes - Resolutions: `1K` (default), `2K`, `4K`. - Use timestamps in filenames: `yyyy-mm-dd-hh-mm-ss-name.png`. - The script prints a `MEDIA:` line for OpenClaw to auto-attach on supported chat providers. - Do not read the image back; report the saved path only.


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: tz826/feishu-recall-message (version 1.0.0)

--- name: feishu-recall-message description: 撤回飞书群消息。以用户身份撤回（recall）飞书群聊或单聊中的消息。群主/管理员可撤回任意成员消息，普通成员只能撤回自己的消息。支持单条撤回、批量撤回、按时间范围撤回。触发词：撤回消息、recall message、删除群消息、recall、撤回。 --- # 飞书群消息撤回 使用 `feishu_im_user_message` 工具的 `delete` action 以用户身份撤回消息。 ## 前置条件 - 已完成飞书用户 OAuth 授权（撤回操作需要用户身份） - 应用已开通 `im:message` scope - 群主/管理员可撤回群内任意消息；普通成员只能撤回自己的消息 ## 撤回单条消息 ``` feishu_im_user_message(action="delete", message_id="om_xxx") ``` 可选参数 `need_notification`：设为 `true` 则群内显示"xxx 撤回了一条消息"通知。默认 `false`（静默撤回）。 ## 撤回引用的消息 当用户引用某条消息说"撤回"时，从引用上下文获取 `message_id`，直接调用 delete。 ## 批量撤回 1. 用 `feishu_im_user_get_messages` 获取目标消息列表（支持 `start_time`/`end_time` 时间范围过滤，`chat_id` 指定群） 2. 过滤掉 `deleted: true` 的消息 3. 逐条调用 `feishu_im_user_message(action="delete", message_id="om_xxx")` 4. 汇报结果：成功数 / 失败数 ## 按时间范围撤回 ``` # 获取指定时间范围的消息 feishu_im_user_get_messages( chat_id="oc_xxx", start_time="2026-03-27T00:00:00+08:00", end_time="2026-03-27T23:59:59+08:00", page_size=50 ) # 逐条撤回未删除的消息 for msg in messages: if not msg.deleted: feishu_im_user_message(action="delete", message_id=msg.message_id) ``` 注意：单次 `get_messages` 最多返回 50 条。如消息量大，需分页（用 `page_token`）。 ## 注意事项 - 飞书限制：不支持撤回发出时间超过 1 天的消息 - 已删除的消息返回 `deleted: true`，跳过即可 - 撤回机器人消息也可用 `message` 系统工具的 `delete` action（无需用户授权） - 撤回用户消息必须用 `feishu_im_user_message` 的 `delete`（需要用户 OAuth token）


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: sonnenberglauramarie-afk/larry-tiktok-agent (version 1.0.0)

# Larry — Autonomous TikTok Slideshow Agent > Automatically generates and posts TikTok slideshows for affiliate content sites. > Inspired by the "Larry" viral slideshow format (8M views in one week). ## What this skill does 1. **Research** — Identifies viral hooks and trending topics in your niche 2. **Ideation** — Creates 6-slide concepts linked to your affiliate articles 3. **Image Generation** — Generates 6 consistent images via NVIDIA FLUX (free tier) 4. **Text Overlay** — Adds hook text (Slide 1) + subtitles to each image 5. **Posting** — Uploads as draft/scheduled post to TikTok via Postiz (self-hosted) 6. **Learning** — Logs performance data, adapts hook formulas over time ## Requirements - [Postiz](https://github.com/gitroomhq/postiz-app) self-hosted (free) or Postiz cloud - NVIDIA API key (free tier at build.nvidia.com — includes FLUX image generation) - TikTok account(s) connected via Postiz ## Setup ```bash # 1. Copy and fill config cp ~/.openclaw/skills/larry/config.example.json ~/.openclaw/skills/larry/config.json # Edit config.json with your API keys and portal details # 2. Install Python dependencies pip3 install pillow requests # 3. Smoke test (no API calls) python3 ~/.openclaw/skills/larry/scripts/larry.py --portal my-portal --dry-run ``` ## Config ```json { "nvidia_api_key": "nvapi-...", "postiz_api_key": "...", "postiz_base_url": "http://localhost:4007/api", "image_model": "flux.1-schnell", "slides_per_post": 6, "posts_per_day": 2, "post_times": ["09:00", "18:00"], "portals": { "my-portal": { "tiktok_account_id": "POSTIZ_INTEGRATION_ID", "niche": "Your Niche (e.g. Sauna & Wellness)", "site_url": "https://yoursite.com", "amazon_tag": "yourtag-21", "style": "brief visual style description for image generation", "hashtags": ["#tag1", "#tag2", "#tag3"] } } } ``` ## Usage ``` # Manual single post: "Larry, create a TikTok post for [portal] about [topic]" # Autonomous mode (via cron): python3 ~/.openclaw/skills/larry/scripts/larry.py --portal my-portal --auto # Dry run (generate slides, don't post): python3 ~/.openclaw/skills/larry/scripts/larry.py --portal my-portal --dry-run ``` ## Slide Format (TikTok sweet spot) - **6 slides** exactly - Slide 1: Large hook text + background image - Slides 2–5: Tips / facts / content - Slide 6: CTA → "Link in Bio" → article on your site - Caption: Story-style, natural mention of site, max 5 hashtags - Image style: realistic lifestyle photography look ## Cost - Image generation: **€0** (NVIDIA free tier, FLUX.1-schnell) - Postiz self-hosted: **€0** (Docker, runs locally) - 2 posts/day × 30 days = **€0/month** running cost ## Performance Tracking All posts logged to `~/.openclaw/skills/larry/logs/performance.json`. Larry adapts: high-performing hook formulas → more of those, poor ones → phased out.


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: suspicious | SkillSpector: suspicious (HIGH)
Skill: canonxu/my-stock-report-mgnt-skill (version 1.0.0)

--- name: my_stock_report_mgnt_skill description: 当且仅当用户明确提到“分析报告多维表”或“my_stock_report_mgnt_skill”时触发。专门用于美股分析报告结论在钉钉多维表（dingtalk-ai-table）中的结构化归档（新增）与检索（查询）。 --- # my_stock_report_mgnt_skill (股票分析报告管理) ## 核心定位 此技能是分析报告归档与检索的调度中枢。它不直接操作钉钉 API，而是通过调用底层的 `dingtalk-ai-table` 技能来完成多维表的读写操作。 ## 触发条件 - 只有当用户明确提到“**分析报告多维表**”或技能名称“**my_stock_report_mgnt_skill**”时，才使用此技能。 ## 目标数据源 - **Base ID**: [REDACTED_SECRET] - **Sheet ID**: `Shule1J` ## 表格字段规范 (Schema) 在执行“新增记录”前，必须严格校验以下 6 个字段是否全部收集完毕且符合格式要求： 1. **标的**: 美股标的简码（必须自动转为大写，如 AAPL）。 2. **分析时间**: 时间格式必须为 `YYYYMMDD_HHMMSS`（年月是_时分秒，如 20260325_123000）。 3. **分析结论**: 报告核心结论（如 BUY、SELL、HOLD 等）。 4. **分析摘要**: 总结内容的纯文本，**必须限制在 300 字以内**。如超出，须先由 AI 浓缩提炼。 5. **结论文档**: 上传到钉钉的分析报告结论文档 URL 链接。 6. **完整文档**: 上传到钉钉的分析报告完整文档 URL 链接。 ## 核心能力与工作流 ### 1. 新增记录 (Insert) - **拦截校验**：检查上述 6 个字段是否缺失或格式不符。如果有缺失，挂起操作并询问用户要求补充。绝不能插入“脏数据”。 - **执行新增**：在尾部追加新记录。构建形如 `{"标的": "AAPL", "分析时间": "20260325_123000", ...}` 的 `fields` 结构，并交由 `dingtalk-ai-table` 提供的脚本执行 API 新增。 ### 2. 精细查询 (Query) - **多条件过滤**：解析用户的自然语言（例如“查询特斯拉的BUY报告”），提取出查询维度（如标的=TSLA，结论=BUY）。 - **执行查询**：通过 `dingtalk-ai-table` 获取该表的所有记录，并在本地按提取的条件进行精确或模糊匹配过滤。 - **展示结果**：将过滤后的结果以清晰的 Markdown 表格形式展示给用户。


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: xejrax/email-send (version 1.0.0)

--- name: email-send description: "Send a quick email via SMTP using `msmtp` without opening a full mail client." metadata: { "openclaw": { "emoji": "📧", "requires": { "bins": ["msmtp"] }, "install": [ { "id": "dnf", "kind": "dnf", "package": "msmtp", "bins": ["msmtp"], "label": "Install msmtp (dnf)", }, ], }, } --- # Email Send Skill Send a quick email via SMTP without opening the full himalaya client. Requires `SMTP_HOST`, `SMTP_PORT`, `SMTP_USER`, `SMTP_PASS` env vars. ## Sending Email Send a basic email: ```bash echo "Meeting at 3pm tomorrow." | msmtp [REDACTED_SECRET] ``` Send with subject and headers: ```bash printf "To: [REDACTED_SECRET]\nSubject: Quick update\n\nHey, the deploy is done." | msmtp [REDACTED_SECRET] ``` ## Options - `--cc` -- carbon copy recipients - `--bcc` -- blind carbon copy recipients - `--attach <file>` -- attach a file ## Install ```bash sudo dnf install msmtp ```

path: CLAUDE.md
content: <claude-mem-context>
# Recent Activity

<!-- This section is auto-generated by claude-mem. Edit content outside the tags. -->

### Feb 3, 2026

| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #51050 | 8:16 AM | 🟣 | Added skill skeletons for OpenClaw | ~258 |
</claude-mem-context>

Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: suspicious | SkillSpector: clean (LOW)
Skill: kawummuwe-stack/vision-analyzer (version 1.0.1)

--- name: vision-analyzer description: | Analyze images using Ollama Cloud's Kimi K2.5 vision capabilities. Use when user wants to describe, understand, or get information about an image. Works with local image files, screenshots, or downloaded images. Supports JPG, PNG, GIF, WebP formats. metadata: author: clawdia version: "1.0.1" --- # Vision Analyzer Analyze images using Kimi K2.5 multimodal vision capabilities through Ollama Cloud API. ## When to Use - User wants to know what's in an image - Describing screenshots or photos - Understanding UI elements, text in images - Analyzing memes, charts, diagrams ## Quick Start ```bash python3 ~/.openclaw/workspace/skills/vision-analyzer/scripts/vision_analyze.py <image_path> [prompt] ``` ## Examples Describe an image: ```bash python3 ~/.openclaw/workspace/skills/vision-analyzer/scripts/vision_analyze.py photo.jpg ``` Ask specific question: ```bash python3 ~/.openclaw/workspace/skills/vision-analyzer/scripts/vision_analyze.py screenshot.png "What UI elements do you see?" ``` ## Common Image Locations - Downloads: [REDACTED_SECRET] - Screenshots: [REDACTED_SECRET] - Home directory: `~/` ## Configuration Set your Ollama API key as environment variable: ```bash export OLLAMA_API_KEY="your-api-key-here" ``` Get your API key from [ollama.com/settings](https://ollama.com/settings) ## API Configuration The skill uses Ollama Cloud API with Kimi K2.5 model. API key is read from `OLLAMA_API_KEY` environment variable. ## Supported Formats - JPG/JPEG - PNG - GIF - WebP ## Output Returns a natural language description of the image content.


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