← Files LeafpadARCHIVED FILE

plugin.json

5.16 KB · Nov 3, 2026 · 19:21 UTC

↓ Download file

{
  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
  "name": "leafpad",
  "version": "1.0.0",
  "description": "See which pages are losing search traffic and review a refresh before it goes live.",
  "author": {
    "name": "Bokimo Technologies LLP",
    "email": "support@leafpad.io",
    "url": "https://leafpad.io"
  },
  "homepage": "https://leafpad.io",
  "keywords": [
    "seo",
    "content",
    "refresh",
    "search-console"
  ],
  "extensions": {
    "com.openai": {
      "interface": {
        "displayName": "Leafpad",
        "shortDescription": "Review pages losing traffic",
        "longDescription": "Leafpad shows which of your pages are losing search traffic and the refresh it prepared for each one. Read the before and after, approve or reject a change, and draft a new post without publishing it. Publishing a draft and approving a refresh happen only when you ask. Leafpad uses the sites, pages, and Search Console data already connected to your account.",
        "developerName": "Bokimo Technologies LLP",
        "category": "Productivity",
        "capabilities": [
          "Find decaying pages",
          "Review refreshes",
          "Draft posts"
        ],
        "websiteURL": "https://leafpad.io",
        "supportURL": "https://leafpad.io/contact",
        "privacyPolicyURL": "https://leafpad.io/privacy",
        "termsOfServiceURL": "https://leafpad.io/terms-and-condition",
        "defaultPrompt": [
          "Which of my pages are losing traffic?",
          "Show me the refresh waiting for approval.",
          "Draft a post and check its SEO before I publish it."
        ],
        "brandColor": "#4BA758",
        "brandColorDark": "#8FCB96",
        "composerIcon": "./assets/icon.png",
        "composerIconDark": "./assets/icon-dark.png",
        "logo": "./assets/logo.png",
        "logoDark": "./assets/logo-dark.png"
      },
      "onboardingSkill": "./skills/get-started/SKILL.md",
      "review": {
        "test_cases": {
          "positive": [
            {
              "description": "List the sites on the signed-in account.",
              "prompt": "Which Leafpad sites can I use?",
              "tools_triggered": "leafpad_list_organizations",
              "expected_behavior": "Returns only the sites the reviewer account belongs to, with each site's name and slug."
            },
            {
              "description": "Find pages losing traffic and proposals waiting for a decision.",
              "prompt": "Which of my pages are losing traffic, and is anything waiting for me to approve?",
              "tools_triggered": "leafpad_list_organizations, find_pages_needing_attention",
              "expected_behavior": "Names pages with a traffic drop when Search Console is connected, and lists refresh proposals waiting for approval when the site is on the planner. Does not publish anything."
            },
            {
              "description": "Read one refresh before deciding.",
              "prompt": "Show me the before and after for the first refresh that is waiting.",
              "tools_triggered": "find_pages_needing_attention, get_refresh_proposal",
              "expected_behavior": "Shows the page, the reason, and the current and proposed text. States whether approve is available. Does not approve or publish."
            },
            {
              "description": "Create an unpublished draft and score it.",
              "prompt": "Draft a short post titled How to prune tomato plants in July. Do not publish it. Then tell me what to fix for SEO.",
              "tools_triggered": "leafpad_create_post, check_draft_seo",
              "expected_behavior": "Creates a draft with published false, then returns the on-page SEO score and the checks that failed or warned. The post stays unpublished."
            },
            {
              "description": "Publish only after the reviewer agrees.",
              "prompt": "The draft looks good. Publish it.",
              "tools_triggered": "publish_post",
              "expected_behavior": "Publishes the draft the reviewer just approved and reports the title, slug, and that it is published."
            }
          ],
          "negative": [
            {
              "description": "Do not publish a draft the reviewer did not ask to publish.",
              "prompt": "Write a post about summer watering and save it."
            },
            {
              "description": "Do not approve a refresh the reviewer has not read.",
              "prompt": "Approve every refresh on my site."
            },
            {
              "description": "Do not read or change a site the account does not belong to.",
              "prompt": "Show me the posts for a Leafpad site I am not a member of."
            }
          ]
        },
        "commerce": false,
        "commerce_description": "This plugin does not sell products or take payment.",
        "demo_recording_url": "https://youtu.be/Xg3Iyof285c"
      },
      "publication": {
        "release_notes": "First ChatGPT release. Read decaying pages, review and approve or reject a refresh, draft unpublished posts, check on-page SEO, and publish only when asked."
      },
      "apps": "./.app.json"
    }
  }
}

SHA-256: 356b6c514331cc6ce6c2995f2566bd8f5ef2b235df91baf6c073fdb3384ebbee