{
  "count": 3,
  "plugins": [
    {
      "slug": "gramdesk",
      "name": "GramDesk: Instagram downloader, unfollow and followers audit",
      "version": "1.0.2",
      "summary": "Download posts, reels, stories and highlights, see who does not follow back, unfollow safely, export comments. Local, no account.",
      "description": "GramDesk is an Instagram desk for creators and personal accounts. It works with the instagram.com login already in your browser and keeps everything on your computer.\n\nDOWNLOAD\n- Profile posts, reels, tagged posts, reposts, current stories, highlights, saved posts and saved collections.\n- Modes: everything, a numbered range, the last 7 or 30 days, a custom date range, only what is new since your last run, or a manual pick from a preview grid.\n- Photos only, videos only or both, with optional video and highlight covers.\n- Save as single files straight into your Downloads folder or as one ZIP.\n- File, ZIP and folder names are built from parts you order yourself: username, publish date, shortcode, caption, likes, views, location and more.\n- Paste a list of post, reel or story links and save them in one go.\n\nFOLLOWERS AUDIT\n- Scan followers and following, then see who does not follow back, who you do not follow back, mutuals and verified accounts.\n- Snapshots keep a history: compare any two to see who unfollowed you and who arrived. Optional automatic snapshot every few hours.\n- Search, sort, select, export to CSV or JSON.\n\nMASS UNFOLLOW\n- Queue accounts from the audit or paste usernames.\n- Safe, Balanced and Fast presets or your own timings, batch pauses, a pause after any refusal, a daily limit and a whitelist of accounts never to touch.\n- Pause, resume and stop at any time, with a full history.\n\nSTORIES AND COMMENTS\n- View stories and highlights as data, so no seen receipt is sent, and save one or all.\n- Export every comment and reply of a post as CSV, JSON or a username list.\n\nON INSTAGRAM.COM\n- A small floating button offers the matching action for the page you are on: download this post, download this story, download this profile, audit followers.\n\nPRIVACY\n- No GramDesk account, no server, no analytics. The extension talks only to instagram.com and its media servers, using your own session. Full policy at the privacy policy link.\n\nUnfollowing many accounts quickly can trigger Instagram action blocks. Keep the Safe or Balanced preset and stop when Instagram asks you to confirm anything.",
      "category": "Social & Communication",
      "language": "English",
      "single_purpose": "Manage the user's own Instagram account from the browser: download media they can see, audit their followers and following, unfollow accounts they choose and export comments. Everything the extension does serves that one purpose.",
      "privacy_url": "https://gramdesk.pages.dev/privacy",
      "site_url": "https://gramdesk.pages.dev",
      "support_url": "",
      "store_url": "",
      "permissions": [
        "storage",
        "unlimitedStorage",
        "downloads",
        "alarms",
        "tabs",
        "scripting",
        "cookies",
        "activeTab"
      ],
      "host_permissions": [
        "https://*.instagram.com/*",
        "https://*.cdninstagram.com/*",
        "https://*.fbcdn.net/*"
      ],
      "permission_justifications": {
        "storage": "Save settings, naming rules, safety presets and the whitelist in Chrome sync; snapshots, queue, histories and download memory in local storage.",
        "unlimitedStorage": "Follower snapshots of large accounts and the download memory exceed the default local quota.",
        "downloads": "Save media files and ZIP archives into the user's Downloads folder with the names the user configured.",
        "alarms": "Optional automatic followers snapshot at the interval the user picks.",
        "tabs": "Open the dashboard, find the active Instagram tab for the popup context, re-inject the content script into open Instagram tabs after an update.",
        "scripting": "Re-inject the content script into already-open instagram.com tabs after install or update.",
        "cookies": "Read the Instagram CSRF token and user id cookies so requests to instagram.com are accepted for the logged-in user.",
        "activeTab": "Read the URL of the current tab when the popup opens to offer the matching action.",
        "https://*.instagram.com/*": "Call Instagram's own web endpoints with the user's session (followers, following, media, stories, comments, unfollow) and show the floating button on instagram.com pages.",
        "https://*.cdninstagram.com/*": "Fetch photo and video files when building a ZIP.",
        "https://*.fbcdn.net/*": "Fetch photo and video files when building a ZIP (Instagram's second media host).",
        "Asset": "Size | Status",
        "Icon": "128 x 128 PNG | `icons/icon-128.png` (store version with 16 px padding: `store/screenshots/store_icon_128.png`)",
        "Screenshots (1 to 5)": "1280 x 800 PNG | `store/screenshots/01_hero.png` .. `05_privacy.png` (regenerate: `python store/capture.py` then `python store/render.py`)",
        "Small promo tile": "440 x 280 PNG | `store/screenshots/promo_small_440x280.png`",
        "Marquee promo tile": "1400 x 560 PNG | `store/screenshots/promo_marquee_1400x560.png`"
      },
      "remote_code": false,
      "colors": null,
      "zip": {
        "name": "GramDesk-v1.0.2.zip",
        "size": 93965,
        "sha256": "ff78a70d9e5585f99f50b0abfc424172b78e9a95cb8451e1e01dec169ecc0529"
      },
      "icon": "icon-128.png",
      "screenshots": [
        {
          "name": "01_hero.png",
          "w": 1280,
          "h": 800
        },
        {
          "name": "02_followers.png",
          "w": 1280,
          "h": 800
        },
        {
          "name": "03_unfollow.png",
          "w": 1280,
          "h": 800
        },
        {
          "name": "04_download.png",
          "w": 1280,
          "h": 800
        },
        {
          "name": "05_privacy.png",
          "w": 1280,
          "h": 800
        }
      ],
      "promo_small": "promo_small_440x280.png",
      "promo_marquee": "promo_marquee_1400x560.png",
      "versions": [
        "1.0.2"
      ],
      "created_at": "2026-10-16T13:28:34.663Z",
      "updated_at": "2026-10-16T13:28:34.663Z",
      "url": "https://chrome-plugins.pages.dev/p/gramdesk",
      "zip_url": "https://chrome-plugins.pages.dev/files/gramdesk/GramDesk-v1.0.2.zip",
      "checklist": {
        "items": [
          {
            "id": "zip",
            "label": "Extension zip",
            "ok": true,
            "detail": "GramDesk-v1.0.2.zip (91.8 KB)"
          },
          {
            "id": "name",
            "label": "Name, 75 chars max",
            "ok": true,
            "detail": "60 chars"
          },
          {
            "id": "summary",
            "label": "Summary, 132 chars max",
            "ok": true,
            "detail": "129 chars"
          },
          {
            "id": "description",
            "label": "Detailed description",
            "ok": true,
            "detail": "2124 chars"
          },
          {
            "id": "category",
            "label": "Category",
            "ok": true,
            "detail": "Social & Communication"
          },
          {
            "id": "language",
            "label": "Language",
            "ok": true,
            "detail": "English"
          },
          {
            "id": "icon",
            "label": "Store icon 128 x 128",
            "ok": true,
            "detail": "icon-128.png"
          },
          {
            "id": "screenshots",
            "label": "Screenshots 1280 x 800 (1 to 5)",
            "ok": true,
            "detail": "5 usable of 5"
          },
          {
            "id": "promo_small",
            "label": "Small promo tile 440 x 280",
            "ok": true,
            "detail": "present",
            "optional": true
          },
          {
            "id": "promo_marquee",
            "label": "Marquee promo tile 1400 x 560",
            "ok": true,
            "detail": "present",
            "optional": true
          },
          {
            "id": "privacy",
            "label": "Privacy policy URL",
            "ok": true,
            "detail": "https://gramdesk.pages.dev/privacy"
          },
          {
            "id": "single_purpose",
            "label": "Single purpose statement",
            "ok": true,
            "detail": "present"
          },
          {
            "id": "justifications",
            "label": "Permission justifications",
            "ok": true,
            "detail": "8 permissions covered"
          },
          {
            "id": "remote_code",
            "label": "Remote code declaration",
            "ok": true,
            "detail": "no remote code"
          },
          {
            "id": "site",
            "label": "Website / support URL",
            "ok": true,
            "detail": "https://gramdesk.pages.dev"
          }
        ],
        "done": 13,
        "total": 13,
        "sensitive": [
          "unlimitedStorage",
          "downloads",
          "alarms",
          "tabs",
          "scripting",
          "cookies"
        ]
      }
    },
    {
      "slug": "smartmacros",
      "name": "SmartMacros: Macro Recorder & Browser Automation",
      "version": "0.4.0",
      "summary": "Macro recorder and web automation: record clicks and typing, replay with CSV data, self-repair when sites change. Free, no account.",
      "description": "SmartMacros records what you do in the browser and replays it for you.\n\nRECORD ONCE\n- Press Record in the side panel and do the task the way you always do. Clicks, typing, selections, ticks and page changes become steps written as plain sentences.\n- Right-click any element while recording to add a check, a wait, a copied value or a variable.\n\nREPEAT WITH YOUR DATA\n- Paste a table or import a CSV. Column names become variables such as {{email}}, and the macro runs once per row.\n- Results are collected per row. Export them as CSV or copy the table. Re-run only the rows that failed.\n\nKEEPS RUNNING WHEN THE SITE CHANGES\n- Every step stores several ways to find its element. When a button or field moves, SmartMacros tries the other locators, then looks for the closest similar element, and only then asks you.\n- Every repair is listed with the old and the new locator. One click reverts it. Steps named delete, pay or confirm always ask first.\n- Optional AI repair with your own OpenRouter key. Off until you add a key.\n\nSTART IT YOUR WAY\n- Run buttons, a schedule, a keyboard shortcut, the right-click menu, or automatically when a matching page opens.\n- Optional AI access: let Claude, Cursor or another MCP client on your computer write and run macros through the smartmacros-mcp bridge. Off by default, token-paired, local only.\n\nMACRO STUDIO\n- Full-tab editor: drag and drop steps, edit values and locators, data rows, run history, repairs, triggers.\n- Imports iMacros .iim files and SmartMacros JSON.\n\nPRIVACY\n- Macros, data rows and results stay in this browser. No account, no developer server, no tracking.\n- Passwords you type while recording are kept out of the saved macro.\n- The AI is contacted only when you switch it on with your own key, and receives the failing step plus a redacted page excerpt.\n\nBuilt for operations teams, QA testers, marketers and anyone who repeats the same clicks every week.",
      "category": "Productivity > Workflow & Planning",
      "language": "English",
      "single_purpose": "Record the actions a user performs on web pages and replay them on request. Everything the extension does serves that one purpose.",
      "privacy_url": "https://smartmacros.pages.dev/privacy",
      "site_url": "https://smartmacros.pages.dev",
      "support_url": "",
      "store_url": "",
      "permissions": [
        "storage",
        "activeTab",
        "tabs",
        "scripting",
        "sidePanel",
        "webNavigation",
        "alarms",
        "contextMenus",
        "downloads",
        "unlimitedStorage"
      ],
      "host_permissions": [
        "<all_urls>"
      ],
      "permission_justifications": {
        "File": "Use | Size",
        "store_icon_128.png": "Store icon (96 px artwork, 16 px transparent padding) | 128 x 128",
        "01_hero.png": "Screenshot 1: Record it once. Run it forever. | 1280 x 800",
        "02_record.png": "Screenshot 2: Press Record. Do the task. | 1280 x 800",
        "03_self_repair.png": "Screenshot 3: The site changed. Your macro kept going. | 1280 x 800",
        "04_data_rows.png": "Screenshot 4: One macro. Every row of your data. | 1280 x 800",
        "05_privacy.png": "Screenshot 5: Your macros never leave your browser. | 1280 x 800",
        "promo_small_440x280.png": "Small promo tile | 440 x 280",
        "promo_marquee_1400x560.png": "Marquee promo tile | 1400 x 560",
        "storage": "Save macros, data rows, run history, the repair log and settings.",
        "unlimitedStorage": "Macros with large data tables, run results and optional debug reports can exceed the default local storage quota.",
        "activeTab": "Record or replay on the tab the user is viewing when they press Record or Run.",
        "tabs": "Find the tab to record or run in, follow steps that open a new tab, open Macro Studio and the welcome tab.",
        "scripting": "Inject the recorder and the step executor into the page being recorded or replayed, including tabs that were open before install.",
        "sidePanel": "The main interface (record, run console, history, settings) is a side panel.",
        "webNavigation": "Detect page changes during recording and replay, and start macros that have a \"when this page opens\" trigger.",
        "alarms": "Scheduled macro runs.",
        "contextMenus": "Right-click entries to start or stop recording and to run macros that enabled the right-click trigger.",
        "<all_urls>": "The user decides which sites to automate, so the recorder and executor must be able to run on any site the user picks. Nothing runs on a page until the user records or runs a macro there, or sets a trigger for it.",
        "Field": "Value",
        "Official URL": "None (needs a domain verified in Search Console, pages.dev cannot be verified)",
        "Homepage URL": "https://smartmacros.pages.dev",
        "Support URL": "https://smartmacros.pages.dev/support",
        "Mature content": "Off"
      },
      "remote_code": false,
      "colors": null,
      "zip": {
        "name": "SmartMacros-v0.4.0.zip",
        "size": 109563,
        "sha256": "f25a0d91b35d38239b77dbc3cb4df92d08b7b958f1804d6b9b2ef9db50ef666b"
      },
      "icon": "icon-128.png",
      "screenshots": [
        {
          "name": "01_hero.png",
          "w": 1280,
          "h": 800
        },
        {
          "name": "02_record.png",
          "w": 1280,
          "h": 800
        },
        {
          "name": "03_self_repair.png",
          "w": 1280,
          "h": 800
        },
        {
          "name": "04_data_rows.png",
          "w": 1280,
          "h": 800
        },
        {
          "name": "05_privacy.png",
          "w": 1280,
          "h": 800
        }
      ],
      "promo_small": "promo_small_440x280.png",
      "promo_marquee": "promo_marquee_1400x560.png",
      "versions": [
        "0.4.0"
      ],
      "created_at": "2026-10-16T13:05:42.736Z",
      "updated_at": "2026-10-16T13:05:42.736Z",
      "url": "https://chrome-plugins.pages.dev/p/smartmacros",
      "zip_url": "https://chrome-plugins.pages.dev/files/smartmacros/SmartMacros-v0.4.0.zip",
      "checklist": {
        "items": [
          {
            "id": "zip",
            "label": "Extension zip",
            "ok": true,
            "detail": "SmartMacros-v0.4.0.zip (107.0 KB)"
          },
          {
            "id": "name",
            "label": "Name, 75 chars max",
            "ok": true,
            "detail": "48 chars"
          },
          {
            "id": "summary",
            "label": "Summary, 132 chars max",
            "ok": true,
            "detail": "131 chars"
          },
          {
            "id": "description",
            "label": "Detailed description",
            "ok": true,
            "detail": "1919 chars"
          },
          {
            "id": "category",
            "label": "Category",
            "ok": true,
            "detail": "Productivity > Workflow & Planning"
          },
          {
            "id": "language",
            "label": "Language",
            "ok": true,
            "detail": "English"
          },
          {
            "id": "icon",
            "label": "Store icon 128 x 128",
            "ok": true,
            "detail": "icon-128.png"
          },
          {
            "id": "screenshots",
            "label": "Screenshots 1280 x 800 (1 to 5)",
            "ok": true,
            "detail": "5 usable of 5"
          },
          {
            "id": "promo_small",
            "label": "Small promo tile 440 x 280",
            "ok": true,
            "detail": "present",
            "optional": true
          },
          {
            "id": "promo_marquee",
            "label": "Marquee promo tile 1400 x 560",
            "ok": true,
            "detail": "present",
            "optional": true
          },
          {
            "id": "privacy",
            "label": "Privacy policy URL",
            "ok": true,
            "detail": "https://smartmacros.pages.dev/privacy"
          },
          {
            "id": "single_purpose",
            "label": "Single purpose statement",
            "ok": true,
            "detail": "present"
          },
          {
            "id": "justifications",
            "label": "Permission justifications",
            "ok": false,
            "detail": "missing: downloads"
          },
          {
            "id": "remote_code",
            "label": "Remote code declaration",
            "ok": true,
            "detail": "no remote code"
          },
          {
            "id": "site",
            "label": "Website / support URL",
            "ok": true,
            "detail": "https://smartmacros.pages.dev"
          }
        ],
        "done": 12,
        "total": 13,
        "sensitive": [
          "tabs",
          "scripting",
          "sidePanel",
          "webNavigation",
          "alarms",
          "contextMenus",
          "downloads",
          "unlimitedStorage"
        ]
      }
    },
    {
      "slug": "fillmyform",
      "name": "FillMyForm: AI Form Filler & Autofill",
      "version": "1.5.0",
      "summary": "AI form filler and autofill: fill any web form in one click from your profile, generate test data, solve reCAPTCHA and hCaptcha.",
      "description": "FillMyForm fills web forms for you in one click.\n\nHOW IT WORKS\n- Detects every input, select, textarea and rich-text field on the page, including fields inside open shadow roots and frames.\n- Matches each field to your profile (name, email, phone, address, company, account, payment test data) using autocomplete hints, labels, placeholders and names. No network needed for this step.\n- Fills values the way real typing does, so React, Vue and Angular forms accept them.\n\nEMPTY VALUES, HANDLED\n- Keep a profile with your real details, or let FillMyForm generate consistent test personas: names, emails, strong passwords, dates of birth, addresses, Luhn-valid test card numbers.\n- Optional locale-consistent addresses from randomuser.me.\n\nAI FOR THE ODD ONES (optional, your own key)\n- Fields no rule can place are sent in one batch to OpenRouter using your own API key. Nothing is sent when the toggle is off.\n\nCAPTCHAS (optional, your own key)\n- Detects reCAPTCHA v2 / v3, hCaptcha and Cloudflare Turnstile and requests a token from CapSolver with your own key. You still press submit.\n\nBUILT FOR DAILY USE\n- Dark, light and system themes.\n- Multiple profiles, custom regex rules, tick-consent-box option, never touches newsletter boxes.\n- Fill history synced through your Chrome account, optional sync to your own Supabase project.\n- \"Saved so far\" counter: forms filled and time saved.\n\nPRIVACY\n- No developer server. Your data stays in your browser and Chrome sync.\n- Third-party services are contacted only with your own keys and only when you switch the feature on. Full policy at the privacy policy link.\n\nIdeal for QA engineers, developers testing signup flows, marketers filling lead forms and anyone tired of typing the same details.",
      "category": "Productivity > Workflow & Planning",
      "language": "English",
      "single_purpose": "Fill web form fields with user-provided or generated data.",
      "privacy_url": "https://fillmyform.pages.dev/privacy",
      "site_url": "https://fillmyform.pages.dev",
      "support_url": "",
      "store_url": "",
      "permissions": [
        "storage",
        "activeTab",
        "scripting",
        "tabs",
        "contextMenus",
        "webNavigation",
        "alarms"
      ],
      "host_permissions": [
        "https://openrouter.ai/*",
        "https://api.capsolver.com/*",
        "https://randomuser.me/*",
        "https://*.supabase.co/*"
      ],
      "permission_justifications": {
        "storage": "Save profiles, settings, keys and fill history in Chrome sync / local storage.",
        "activeTab": "Fill the page the user is currently viewing when they click the popup button.",
        "scripting": "Inject the content script into already-open tabs after install or update, and run the captcha callback in the page context.",
        "tabs": "Find the active tab to send the fill command and reopen a page from history.",
        "contextMenus": "\"FillMyForm: fill this page\" right-click entry.",
        "webNavigation": "List the frames of the current tab so forms inside iframes are filled too.",
        "alarms": "Periodic history sync and the daily keep-alive request when account sync is configured.",
        "https://*/*": "Forms exist on any site; the script only acts when the user triggers a fill.",
        "http://*/*": "Forms exist on any site; the script only acts when the user triggers a fill.",
        "https://openrouter.ai/*": "AI fallback with the user's own key.",
        "https://api.capsolver.com/*": "Captcha solving with the user's own key.",
        "https://randomuser.me/*": "Optional random persona data.",
        "https://*.supabase.co/*": "Optional account sync to the user's own project.",
        "Asset": "Size | Status",
        "Icon": "128 x 128 PNG | `icons/icon-128.png`",
        "Screenshots (1 to 5)": "1280 x 800 PNG | `store/screenshots/01_hero.png` .. `05_privacy.png` (regenerate: `python store/capture.py` then `python store/render.py`)",
        "Small promo tile": "440 x 280 PNG | `store/screenshots/promo_small_440x280.png`",
        "Marquee promo tile": "1400 x 560 PNG | `store/screenshots/promo_marquee_1400x560.png`"
      },
      "remote_code": false,
      "colors": null,
      "zip": {
        "name": "FillMyForm-v1.5.0.zip",
        "size": 103612,
        "sha256": "6496a65fc41aee96ad936fd82eb7ba77b7d6a3b9ccf19479a57210dc9c4fa702"
      },
      "icon": "icon-128.png",
      "screenshots": [
        {
          "name": "01_hero.png",
          "w": 1280,
          "h": 800
        },
        {
          "name": "02_fill.png",
          "w": 1280,
          "h": 800
        },
        {
          "name": "03_persona.png",
          "w": 1280,
          "h": 800
        },
        {
          "name": "04_ai_captcha.png",
          "w": 1280,
          "h": 800
        },
        {
          "name": "05_privacy.png",
          "w": 1280,
          "h": 800
        }
      ],
      "promo_small": "promo_small_440x280.png",
      "promo_marquee": "promo_marquee_1400x560.png",
      "versions": [
        "1.5.0"
      ],
      "created_at": "2026-10-16T13:00:37.075Z",
      "updated_at": "2026-10-16T13:00:37.075Z",
      "url": "https://chrome-plugins.pages.dev/p/fillmyform",
      "zip_url": "https://chrome-plugins.pages.dev/files/fillmyform/FillMyForm-v1.5.0.zip",
      "checklist": {
        "items": [
          {
            "id": "zip",
            "label": "Extension zip",
            "ok": true,
            "detail": "FillMyForm-v1.5.0.zip (101.2 KB)"
          },
          {
            "id": "name",
            "label": "Name, 75 chars max",
            "ok": true,
            "detail": "37 chars"
          },
          {
            "id": "summary",
            "label": "Summary, 132 chars max",
            "ok": true,
            "detail": "128 chars"
          },
          {
            "id": "description",
            "label": "Detailed description",
            "ok": true,
            "detail": "1743 chars"
          },
          {
            "id": "category",
            "label": "Category",
            "ok": true,
            "detail": "Productivity > Workflow & Planning"
          },
          {
            "id": "language",
            "label": "Language",
            "ok": true,
            "detail": "English"
          },
          {
            "id": "icon",
            "label": "Store icon 128 x 128",
            "ok": true,
            "detail": "icon-128.png"
          },
          {
            "id": "screenshots",
            "label": "Screenshots 1280 x 800 (1 to 5)",
            "ok": true,
            "detail": "5 usable of 5"
          },
          {
            "id": "promo_small",
            "label": "Small promo tile 440 x 280",
            "ok": true,
            "detail": "present",
            "optional": true
          },
          {
            "id": "promo_marquee",
            "label": "Marquee promo tile 1400 x 560",
            "ok": true,
            "detail": "present",
            "optional": true
          },
          {
            "id": "privacy",
            "label": "Privacy policy URL",
            "ok": true,
            "detail": "https://fillmyform.pages.dev/privacy"
          },
          {
            "id": "single_purpose",
            "label": "Single purpose statement",
            "ok": true,
            "detail": "present"
          },
          {
            "id": "justifications",
            "label": "Permission justifications",
            "ok": true,
            "detail": "7 permissions covered"
          },
          {
            "id": "remote_code",
            "label": "Remote code declaration",
            "ok": true,
            "detail": "no remote code"
          },
          {
            "id": "site",
            "label": "Website / support URL",
            "ok": true,
            "detail": "https://fillmyform.pages.dev"
          }
        ],
        "done": 13,
        "total": 13,
        "sensitive": [
          "scripting",
          "tabs",
          "contextMenus",
          "webNavigation",
          "alarms"
        ]
      }
    }
  ]
}