{"skill":{"slug":"openclaw-paperbanana","displayName":"Paperbanana","summary":"Generate publication-quality academic diagrams, methodology figures, architecture illustrations, and statistical plots from text descriptions using the Paper...","description":"---\nname: paperbanana\ndescription: >\n  Generate publication-quality academic diagrams, methodology figures, architecture\n  illustrations, and statistical plots from text descriptions using the PaperBanana\n  multi-agent AI pipeline. Also evaluate diagram quality against reference images.\n  Use when: (1) user asks to generate, create, or make a research diagram, methodology\n  figure, system architecture illustration, pipeline diagram, or framework figure,\n  (2) user asks to create a statistical plot, bar chart, or data visualization from\n  CSV/JSON data, (3) user asks to evaluate or score a generated diagram against a\n  reference, (4) user asks to refine or improve a previously generated diagram.\n  NOT for: analyzing existing images, general image generation (non-academic),\n  or chart/graph discussions without explicit generation intent.\nmetadata: {\"openclaw\":{\"emoji\":\"🍌\",\"homepage\":\"https://github.com/GoatInAHat/openclaw-paperbanana\",\"primaryEnv\":\"GOOGLE_API_KEY\",\"requires\":{\"bins\":[\"uv\"]}}}\n---\n\n# PaperBanana — Academic Illustration Generator\n\nGenerate publication-quality academic diagrams and statistical plots from text\ndescriptions. Uses a multi-agent pipeline (Retriever → Planner → Stylist →\nVisualizer → Critic) with iterative refinement.\n\n## Quick Reference\n\n### Generate a Diagram\n\n```bash\nuv run {baseDir}/scripts/generate.py \\\n  --context \"Our framework consists of an encoder module that processes...\" \\\n  --caption \"Overview of the proposed encoder-decoder architecture\"\n```\n\nOr from a file:\n```bash\nuv run {baseDir}/scripts/generate.py \\\n  --input /path/to/method_section.txt \\\n  --caption \"Overview of the proposed method\"\n```\n\nOptions:\n- `--iterations N` — refinement rounds (default: 3)\n- `--auto-refine` — loop until critic is satisfied (use for final quality)\n- `--aspect RATIO` — aspect ratio: `1:1`, `2:3`, `3:2`, `3:4`, `4:3`, `9:16`, `16:9`, `21:9`\n- `--provider gemini|openai|openrouter` — override auto-detected provider\n- `--format png|jpeg|webp` — output format (default: png)\n- `--no-optimize` — disable input optimization (on by default)\n\n### Generate a Plot\n\n```bash\nuv run {baseDir}/scripts/plot.py \\\n  --data '{\"model\":[\"GPT-4\",\"Claude\",\"Gemini\"],\"accuracy\":[92.1,94.3,91.8]}' \\\n  --intent \"Bar chart comparing model accuracy across benchmarks\"\n```\n\nOr from a CSV file:\n```bash\nuv run {baseDir}/scripts/plot.py \\\n  --data-file /path/to/results.csv \\\n  --intent \"Line plot showing training loss over epochs\"\n```\n\n### Evaluate a Diagram\n\n```bash\nuv run {baseDir}/scripts/evaluate.py \\\n  --generated /path/to/generated.png \\\n  --reference /path/to/human_drawn.png \\\n  --context \"The methodology section text...\" \\\n  --caption \"Overview of the framework\"\n```\n\nReturns scores on: Faithfulness, Readability, Conciseness, Aesthetics.\n\n### Refine a Previous Diagram\n\n```bash\nuv run {baseDir}/scripts/generate.py \\\n  --continue \\\n  --feedback \"Make the arrows thicker and use more distinct colors\"\n```\n\nOr continue a specific run:\n```bash\nuv run {baseDir}/scripts/generate.py \\\n  --continue-run run_20260228_143022_a1b2c3 \\\n  --feedback \"Add labels to each component box\"\n```\n\n## Setup\n\nThe skill auto-installs [`paperbanana`](https://pypi.org/project/paperbanana/) on first use via `uv` (isolated, no global install). The package is published on PyPI by the [llmsresearch](https://github.com/llmsresearch/paperbanana) team.\n\n**Required API keys:** This skill requires **at least one** of the following API keys to function. Configure in `~/.openclaw/openclaw.json`:\n\n| Env Variable | Provider | Cost | Notes |\n|---|---|---|---|\n| `GOOGLE_API_KEY` | Google Gemini | Free tier available | Recommended starting point |\n| `OPENAI_API_KEY` | OpenAI | Paid | Best quality (gpt-5.2 + gpt-image-1.5) |\n| `OPENROUTER_API_KEY` | OpenRouter | Paid | Access to any model |\n\n```json5\n{\n  skills: {\n    entries: {\n      \"paperbanana\": {\n        env: {\n          // Option A: Google Gemini (free tier — recommended)\n          GOOGLE_API_KEY: \"AIza...\",\n\n          // Option B: OpenAI (paid, best quality)\n          // OPENAI_API_KEY: \"sk-...\",\n\n          // Option C: OpenRouter (paid, access to any model)\n          // OPENROUTER_API_KEY: \"sk-or-...\",\n        }\n      }\n    }\n  }\n}\n```\n\nAuto-detection priority: Gemini (free) → OpenAI → OpenRouter. The skill will exit with a clear error if no API key is found.\n\n## Provider Details\n\nFor provider comparison, model options, and advanced configuration:\nsee `{baseDir}/references/providers.md`\n\n## Privacy & Data Handling\n\nThis skill sends user-provided data to **external third-party APIs** for diagram generation and evaluation:\n\n- **Text content** (context descriptions, captions, feedback) is sent to the configured LLM provider (Gemini, OpenAI, or OpenRouter) for planning and code generation.\n- **Generated images** may be sent back to the LLM provider for VLM-based evaluation and refinement.\n- **CSV/JSON data** provided for plot generation is sent to the LLM provider for Matplotlib code generation.\n\n**Do not use this skill with sensitive, confidential, or proprietary data** unless your organization's data policies permit sending that data to the configured provider. All API calls go directly to the provider's endpoints — no intermediate servers are involved.\n\nAPI keys are injected by OpenClaw from your local config (`~/.openclaw/openclaw.json`) and are never logged or transmitted beyond the provider's API.\n\n## Dependencies & Provenance\n\n- **PyPI package:** [`paperbanana`](https://pypi.org/project/paperbanana/) (≥0.1.2, installed automatically via `uv`)\n- **Source:** [llmsresearch/paperbanana](https://github.com/llmsresearch/paperbanana) on GitHub\n- **Skill source:** [GoatInAHat/openclaw-paperbanana](https://github.com/GoatInAHat/openclaw-paperbanana) on GitHub\n- **Transitive deps:** `google-genai`, `openai`, `matplotlib`, `Pillow`, and others (installed in an isolated `uv` environment, not globally)\n\n## Behavior Notes\n\n- **Input optimization is ON by default** — enriches context and sharpens captions before generation. Disable with `--no-optimize` for speed.\n- **Generation takes 1-5 minutes** depending on iterations and provider. The script prints progress.\n- **Output is delivered automatically** via the MEDIA: protocol — no manual file handling needed.\n- **Run continuation** is the natural way to iterate: \"make it better\" → `--continue --feedback \"...\"`.\n- **Gemini free tier** has rate limits (~15 RPM). Keep iterations ≤ 3 on free tier.\n","tags":{"latest":"0.1.1"},"stats":{"comments":0,"downloads":635,"installsAllTime":0,"installsCurrent":0,"stars":0,"versions":2},"createdAt":1772335863032,"updatedAt":1778491674555},"latestVersion":{"version":"0.1.1","createdAt":1772336769170,"changelog":"**Expanded documentation and API key instructions**\n\n- Added explicit homepage, PyPI package, and GitHub links to metadata.\n- Added a detailed table listing required API keys, providers, and prerequisites.\n- Included a new Privacy & Data Handling section explaining use of LLM/VLM APIs and cautioning against use with sensitive data.\n- Added Dependencies & Provenance section for transparency on packages and sources.\n- Clarified auto-detection and error behavior if API keys are missing.\n- Previous usage instructions and reference material remain intact.","license":null},"metadata":{"setup":[],"os":null,"systems":null},"owner":{"handle":"goatinahat","userId":"s17bz5zmn0k23m4rgwndp944dd884a1s","displayName":"Bennett","image":"https://avatars.githubusercontent.com/u/55002508?v=4"},"moderation":{"isSuspicious":false,"isMalwareBlocked":false,"verdict":"clean","reasonCodes":["review.llm_review"],"summary":"Review: review.llm_review","engineVersion":"v2.4.24","updatedAt":1779968629694}}