{
  "schemaVersion": "1.0",
  "item": {
    "slug": "openclaw-paperbanana",
    "name": "Paperbanana",
    "source": "tencent",
    "type": "skill",
    "category": "AI 智能",
    "sourceUrl": "https://clawhub.ai/GoatInAHat/openclaw-paperbanana",
    "canonicalUrl": "https://clawhub.ai/GoatInAHat/openclaw-paperbanana",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/openclaw-paperbanana",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=openclaw-paperbanana",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "README.md",
      "SKILL.md",
      "references/providers.md",
      "scripts/evaluate.py",
      "scripts/generate.py",
      "scripts/plot.py"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/openclaw-paperbanana"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/openclaw-paperbanana",
    "agentPageUrl": "https://openagent3.xyz/skills/openclaw-paperbanana/agent",
    "manifestUrl": "https://openagent3.xyz/skills/openclaw-paperbanana/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/openclaw-paperbanana/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "PaperBanana — Academic Illustration Generator",
        "body": "Generate publication-quality academic diagrams and statistical plots from text\ndescriptions. Uses a multi-agent pipeline (Retriever → Planner → Stylist →\nVisualizer → Critic) with iterative refinement."
      },
      {
        "title": "Generate a Diagram",
        "body": "uv 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\nOr from a file:\n\nuv run {baseDir}/scripts/generate.py \\\n  --input /path/to/method_section.txt \\\n  --caption \"Overview of the proposed method\"\n\nOptions:\n\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)"
      },
      {
        "title": "Generate a Plot",
        "body": "uv 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\nOr from a CSV file:\n\nuv run {baseDir}/scripts/plot.py \\\n  --data-file /path/to/results.csv \\\n  --intent \"Line plot showing training loss over epochs\""
      },
      {
        "title": "Evaluate a Diagram",
        "body": "uv 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\nReturns scores on: Faithfulness, Readability, Conciseness, Aesthetics."
      },
      {
        "title": "Refine a Previous Diagram",
        "body": "uv run {baseDir}/scripts/generate.py \\\n  --continue \\\n  --feedback \"Make the arrows thicker and use more distinct colors\"\n\nOr continue a specific run:\n\nuv run {baseDir}/scripts/generate.py \\\n  --continue-run run_20260228_143022_a1b2c3 \\\n  --feedback \"Add labels to each component box\""
      },
      {
        "title": "Setup",
        "body": "The skill auto-installs paperbanana on first use via uv (isolated, no global install). The package is published on PyPI by the llmsresearch team.\n\nRequired API keys: This skill requires at least one of the following API keys to function. Configure in ~/.openclaw/openclaw.json:\n\nEnv VariableProviderCostNotesGOOGLE_API_KEYGoogle GeminiFree tier availableRecommended starting pointOPENAI_API_KEYOpenAIPaidBest quality (gpt-5.2 + gpt-image-1.5)OPENROUTER_API_KEYOpenRouterPaidAccess to any model\n\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\nAuto-detection priority: Gemini (free) → OpenAI → OpenRouter. The skill will exit with a clear error if no API key is found."
      },
      {
        "title": "Provider Details",
        "body": "For provider comparison, model options, and advanced configuration:\nsee {baseDir}/references/providers.md"
      },
      {
        "title": "Privacy & Data Handling",
        "body": "This skill sends user-provided data to external third-party APIs for diagram generation and evaluation:\n\nText content (context descriptions, captions, feedback) is sent to the configured LLM provider (Gemini, OpenAI, or OpenRouter) for planning and code generation.\nGenerated images may be sent back to the LLM provider for VLM-based evaluation and refinement.\nCSV/JSON data provided for plot generation is sent to the LLM provider for Matplotlib code generation.\n\nDo 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."
      },
      {
        "title": "Dependencies & Provenance",
        "body": "PyPI package: paperbanana (≥0.1.2, installed automatically via uv)\nSource: llmsresearch/paperbanana on GitHub\nSkill source: GoatInAHat/openclaw-paperbanana on GitHub\nTransitive deps: google-genai, openai, matplotlib, Pillow, and others (installed in an isolated uv environment, not globally)"
      },
      {
        "title": "Behavior Notes",
        "body": "Input optimization is ON by default — enriches context and sharpens captions before generation. Disable with --no-optimize for speed.\nGeneration takes 1-5 minutes depending on iterations and provider. The script prints progress.\nOutput is delivered automatically via the MEDIA: protocol — no manual file handling needed.\nRun continuation is the natural way to iterate: \"make it better\" → --continue --feedback \"...\".\nGemini free tier has rate limits (~15 RPM). Keep iterations ≤ 3 on free tier."
      }
    ],
    "body": "PaperBanana — Academic Illustration Generator\n\nGenerate publication-quality academic diagrams and statistical plots from text descriptions. Uses a multi-agent pipeline (Retriever → Planner → Stylist → Visualizer → Critic) with iterative refinement.\n\nQuick Reference\nGenerate a Diagram\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\nuv run {baseDir}/scripts/generate.py \\\n  --input /path/to/method_section.txt \\\n  --caption \"Overview of the proposed method\"\n\n\nOptions:\n\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)\nGenerate a Plot\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\nuv run {baseDir}/scripts/plot.py \\\n  --data-file /path/to/results.csv \\\n  --intent \"Line plot showing training loss over epochs\"\n\nEvaluate a Diagram\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\nRefine a Previous Diagram\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\nuv run {baseDir}/scripts/generate.py \\\n  --continue-run run_20260228_143022_a1b2c3 \\\n  --feedback \"Add labels to each component box\"\n\nSetup\n\nThe skill auto-installs paperbanana on first use via uv (isolated, no global install). The package is published on PyPI by the llmsresearch team.\n\nRequired API keys: This skill requires at least one of the following API keys to function. Configure in ~/.openclaw/openclaw.json:\n\nEnv Variable\tProvider\tCost\tNotes\nGOOGLE_API_KEY\tGoogle Gemini\tFree tier available\tRecommended starting point\nOPENAI_API_KEY\tOpenAI\tPaid\tBest quality (gpt-5.2 + gpt-image-1.5)\nOPENROUTER_API_KEY\tOpenRouter\tPaid\tAccess to any model\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\nProvider Details\n\nFor provider comparison, model options, and advanced configuration: see {baseDir}/references/providers.md\n\nPrivacy & Data Handling\n\nThis skill sends user-provided data to external third-party APIs for diagram generation and evaluation:\n\nText content (context descriptions, captions, feedback) is sent to the configured LLM provider (Gemini, OpenAI, or OpenRouter) for planning and code generation.\nGenerated images may be sent back to the LLM provider for VLM-based evaluation and refinement.\nCSV/JSON data provided for plot generation is sent to the LLM provider for Matplotlib code generation.\n\nDo 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\nDependencies & Provenance\nPyPI package: paperbanana (≥0.1.2, installed automatically via uv)\nSource: llmsresearch/paperbanana on GitHub\nSkill source: GoatInAHat/openclaw-paperbanana on GitHub\nTransitive deps: google-genai, openai, matplotlib, Pillow, and others (installed in an isolated uv environment, not globally)\nBehavior Notes\nInput optimization is ON by default — enriches context and sharpens captions before generation. Disable with --no-optimize for speed.\nGeneration takes 1-5 minutes depending on iterations and provider. The script prints progress.\nOutput is delivered automatically via the MEDIA: protocol — no manual file handling needed.\nRun continuation is the natural way to iterate: \"make it better\" → --continue --feedback \"...\".\nGemini free tier has rate limits (~15 RPM). Keep iterations ≤ 3 on free tier."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/GoatInAHat/openclaw-paperbanana",
    "publisherUrl": "https://clawhub.ai/GoatInAHat/openclaw-paperbanana",
    "owner": "GoatInAHat",
    "version": "0.1.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/openclaw-paperbanana",
    "downloadUrl": "https://openagent3.xyz/downloads/openclaw-paperbanana",
    "agentUrl": "https://openagent3.xyz/skills/openclaw-paperbanana/agent",
    "manifestUrl": "https://openagent3.xyz/skills/openclaw-paperbanana/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/openclaw-paperbanana/agent.md"
  }
}