← Files LeafpadARCHIVED FILE
plugin.json
5.16 KB · Nov 3, 2026 · 19:21 UTC
{
"$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