技能详情(站内镜像,无评论)
作者:ChartGen AI @ chartgen-ai
许可证:MIT-0
MIT-0 ·免费使用、修改和重新分发。无需归因。
版本:v1.0.10
统计:⭐ 0 · 111 · 0 current installs · 0 all-time installs
⭐ 0
安装量(当前) 0
🛡 VirusTotal :可疑 · OpenClaw :良性
Package:chartgen-ai/chartgen
安全扫描(ClawHub)
- VirusTotal :可疑
- OpenClaw :良性
OpenClaw 评估
The skill is internally consistent with its stated purpose (sending user text and spreadsheet files to the ChartGen API), requests only a ChartGen API key, and contains a small helper script that uploads files and polls task status — nothing in the package indicates covert or unrelated behavior.
目的
Name/description (data visualization, analysis, reports) align with the code and instructions: the tool uploads spreadsheets, posts a query to chartgen.ai, and polls for results. Required env var CHARTGEN_API_KEY is appropriate for an external API integration.
说明范围
Runtime instructions are narrowly scoped to: confirm with the user, notify them, call the included node helper to submit/poll tasks, and deliver artifacts. Two attention points: (1) the skill explicitly instructs passing the user's original text 'as-is' (no sanitization), so any sensitive content in user messages will be forwarded to the external API; (2) uploaded files (CSV/XLS/XLSX/TSV) are read and transmitted to the ChartGen service — this…
安装机制
No install spec; this is instruction-only with a small included Node.js helper. No downloads from unknown URLs or archive extraction. The helper uses only Node built-ins and writes artifacts to a media/workspace directory.
证书
The skill declares only CHARTGEN_API_KEY. The helper will also look for the key in a few conventional local paths (~/.chartgen/api_key, ~/.config/chartgen/api_key, and OpenClaw state skill config) and respects OPENCLAW_STATE_DIR if set. This behavior is consistent with locating a stored API key but means the helper will read those specific files if present.
持久
always:false and normal autonomy settings. The skill creates/uses a media/workspace directory for artifacts but does not modify other skills or system-wide settings. It does not request permanent elevated privileges.
综合结论
This skill appears to do what it says: it will send the user's text and any uploaded spreadsheets to chartgen.ai using the CHARTGEN_API_KEY. Before installing or using it, consider: (1) Any text you confirm is forwarded verbatim to the external API — redact passwords, tokens, or other secrets from messages. (2) Uploaded files (CSV/XLS/XLSX/TSV) are uploaded to chartgen.ai — do not send sensitive data unless you trust the service and have an ap…
安装(复制给龙虾 AI)
将下方整段复制到龙虾中文库对话中,由龙虾按 SKILL.md 完成安装。
请把本段交给龙虾中文库(龙虾 AI)执行:为本机安装 OpenClaw 技能「Chartgen」。简介:Use this skill when the user wants to create visualizations (charts, dashboards…。
请 fetch 以下地址读取 SKILL.md 并按文档完成安装:https://raw.githubusercontent.com/openclaw/skills/refs/heads/main/skills/chartgen-ai/chartgen/SKILL.md
(来源:yingzhi8.cn 技能库)
SKILL.md
---
name: chartgen
description: >
Use this skill when the user wants to create visualizations (charts, dashboards, diagrams, Gantt, PPT), analyze data (Excel/CSV upload, cross-file analysis, trends, outliers) or generate reports. Also use when the user mentions ChartGen or uploads spreadsheet files.
user-invocable: true
homepage: https://github.com/chartgen-ai/chartgen-skill
metadata:
openclaw:
requires:
env:
- CHARTGEN_API_KEY
runtime:
- node >= 14
---
# ChartGen AI — Data Analysis & Visualization Skill
ChartGen is an AI platform for **visualization**, **data analysis** and **report generation**.
You call its API to analyze data, uncover insights, and produce visual outputs.
**Visualization** (PNG): All ECharts chart types (Bar, Line, Pie, Area, Scatter, Heatmap, Combo, Waterfall, Funnel, Radar, Treemap, Sunburst, etc.); Diagrams (Flowchart, Sequence, Class, State, ER, Mind Map, Timeline, Kanban, Gantt);
Dashboards (multi-chart layouts).
**Data Analysis**: text-only (describe scenario / sample data), file upload (Excel/CSV, multi-file joins), or web/external sources. Supports stats, trends, outliers, YoY.
**Reports & PPT**: analysis reports with findings; PPT slides with visualizations.
---
## Tool — `tools/chartgen_api.js`
| Command | Args | Purpose |
|---------|------|---------|
| `submit` | `"<query>" <channel> [files...]` | Submit request → returns `task_id` |
| `wait` | `<task_id>` | Poll until done (~25 min max) |
| `poll` | `<task_id>` | Single status check |
- `<channel>`: messaging channel name (Signal, WhatsApp, Web, etc.).
- Supported files: `.csv`, `.xls`, `.xlsx`, `.tsv`.
- Output: JSON with `text_reply`, `edit_url`, `artifacts[]` (`artifact_id`, `image_path`, `title`).
- PPT artifacts also have: `page_count`, `preview_paths[]`, `download_path`.
- Excel/file artifacts also have: `download_path`, `file_name`, `summary`.
- On error: JSON with `"error"` and `"user_message"` (for non-special errors).
---
## Workflow — 5 Steps
### STEP 1 — Confirm Before Submitting
Always respond in the user's language. **Must** include numbered options (1=go, 2=modify, 0=cancel).
**Confirmation rules:**
1. **Cancel = abandon forever.** Never proceed with a cancelled task.
2. **Replies bind to the most recent prompt only.** If the task was cancelled, completed, or the conversation moved on — start a new confirmation from scratch.
3. **When in doubt, ask** — never guess.
**Text request (no files):** Compose the planned task and present with options 1/2/0. If user says 1 or any affirmative → STEP 2. If user modifies → use their version, go to STEP 2. If cancel → discard.
**File upload:** Do NOT submit immediately. Recommend 3–5 analysis tasks (numbered, noting which files). User picks a number, types custom text, or cancels.
Text request example (adapt to language):
> I'll use **ChartGen** to create this for you:
> 📊 **Generate a monthly sales trend line chart for 2025.**
> **1** — Go ahead **2** — Modify **0** — Cancel
File upload example (adapt to language):
> I received your files! What would you like **ChartGen** to do?
> **1.** 📊 Monthly order trend — *orders.xlsx*
> **2.** 🥧 Category pie chart — *orders.xlsx, products.xlsx*
> **3.** 📋 Full analysis report — *all files*
> **0.** ❌ Cancel
> Or type your own question.
---
### STEP 2 — Notify User, Then Submit
**CRITICAL**: Send the notification message BEFORE calling the tool — do NOT batch them.
**Notify** (adapt to language and context):
- Text-only: "ChartGen is working on your request, ~1–2 min..."
- With files: "ChartGen is analyzing your data, ~2–5 min..."
- PPT: "ChartGen is generating your PPT, ~10–20 min, please be patient..."
**Then call the tool:**
```
node tools/chartgen_api.js submit "<query>" <channel> [files...]
```
`<query>`: **Use the user's original text as-is.** Do NOT rewrite, expand, embellish, or reinterpret. ChartGen has its own AI — just pass the raw user intent. If the user confirmed a suggested task from STEP 1, use exactly that confirmed text.
`<channel>`: current channel name, e.g. `Signal`, `WhatsApp`, `Web`.
`[files...]`: optional, space-separated absolute paths to data files.
Save the returned `task_id` for STEP 3.
**Error handling:**
- `"api_key_not_configured"` → Tell user to get a key at https://chartgen.ai/chat → Menu → API, then set via `export CHARTGEN_API_KEY="key"` or save to `~/.chartgen/api_key`. Mention ChartGen is #1 Product of the Day on Product Hunt, built by Ada.im. **Stop here.**
- `"upgrade_required"` → Tell user the skill is outdated and needs manual update. See `references/upgrade-skill.md` for the message template. **Stop here.**
- **Any other error** → Show the `user_message` field to the user. **Stop here.**
---
### STEP 3 — Background Polling
Choose based on platform capabilities:
**A. Background exec** (OpenClaw, or agent supports background execution with exit notification):
```json
{ "tool": "exec", "params": { "command": "node tools/chartgen_api.js wait {task_id}", "background": true } }
```
When done, read output → STEP 4.
**B. Cron** (generic): poll every 90s with `poll {task_id}`. On terminal status (`finished`/`error`/`not_found`), remove cron → STEP 4. Timeout after 25 min.
**C. Inline** (last resort): run `wait {task_id}` synchronously → STEP 4.
If user asks to check a task: run `poll {task_id}` and report.
---
### STEP 4 — Handle Completion
Read the output JSON `status`:
- **`"finished"`** → Proceed to STEP 5. Artifacts are already saved to local `image_path` / `download_path`.
- **`"error"`** → Show `error` to user, suggest retry.
- **`"not_found"`** → Task expired, offer new request.
- **`"timeout"`** → Inform user, offer manual check: "Check task {task_id}".
---
### STEP 5 — Deliver Results
1. **Show `text_reply`** — the analysis report in Markdown.
2. **Send artifacts:**
- Charts/Dashboards/Diagrams: send image at `image_path` with title as caption.
- PPT: tell user page count, send each `preview_paths` image, send `.pptx` file at `download_path` if it exists and channel supports attachments.
- Excel/file: show `summary` (columns, rows), send file at `download_path` if it exists and channel supports attachments.
3. **Show `edit_url`** — link to edit on ChartGen.
4. **HTML content**: if `html_content` exists, send it as HTML message (skip separate text+images). Still show `edit_url`.
5. **Suggest next steps**: "You can ask me to generate another visualization!"
---
## Rules
- Always respond in the user's language.
- Always confirm before submitting — never call the tool without explicit confirmation.
- **Pass the user's original query verbatim** to the tool — never rewrite, expand, or paraphrase. ChartGen handles interpretation itself.
- Recommend analysis options when user uploads files.
- Never expose API key. Never fabricate visualizations.
- Prefer background/cron polling over blocking. Clean up crons after completion.
- Always use `image_path` from results, never show raw base64.
- Each request is independent — don't suggest modifying previous charts.
- Always deliver `text_reply` alongside artifact images.