Access Gumroad store data through managed OAuth: products, sales, subscribers, licenses, and webhook subscriptions.
Coding
Gumroad Admin Publisher
Try itManage Gumroad and batch-publish digital products with the official CLI.
What it does
Manage Gumroad and batch-publish digital products with the official CLI.
The skill document
Gumroad Admin
Use this skill to administer Gumroad stores and publish digital products safely. Prefer the official gumroad CLI for product/file/content workflows because it handles local file upload, local cover images, local thumbnails, and content writes without needing temporary public hosting.
Requirements
gumroadCLI available onPATH.GUMROAD_ACCESS_TOKENset in the environment, or rungumroad auth login.- Optional OAuth app values may exist as
GUMROAD_APP_IDandGUMROAD_APP_SECRET, but do not require them for personal store administration.
Never store credentials in skill files, manifests, logs, examples, or Clawhub metadata.
Safety
Treat Gumroad as a live external commerce system.
- Read-only commands may run when requested.
- Use
--dry-run,--json,--no-input, and--non-interactivefor planning and machine-readable checks. - Ask for explicit confirmation before product creation, publication, unpublication, deletion, file replacement, content replacement, refunding, receipt resending, license disable/rotate, webhook mutation, or bulk changes.
- For any batch publish, run one product first, verify it fully, then continue.
- Keep resumable manifests in a local state folder outside the skill, for example
state/gumroad-admin/. - Do not use public web hosting for local covers/thumbnails when the CLI supports
--cover-imageand--thumbnail. - Do not trust command success until verification confirms product state.
Quick Checks
gumroad auth status --json
gumroad user --json
gumroad products list --json
gumroad products view PRODUCT_ID --json
Product Publishing
For a single local digital product, prefer:
gumroad products create --json --no-input --yes \
--name "Product Name" \
--price 8.00 \
--description "HTML description" \
--custom-summary "Short summary" \
--file "D:\path\product.zip" \
--file-name "Product Name.zip" \
--cover-image "D:\path\cover.jpg" \
--thumbnail "D:\path\cover.jpg" \
--tag "t-shirt mockup" \
--tag "psd mockup"
Then verify:
gumroad products view PRODUCT_ID --json
A complete product should have:
publishedin the expected state.filescontains the downloadable file.coverscontains at least one cover.thumbnail_urlis present.preview_urlis present.rich_contentcontains afileEmbedpointing to a file id. Ifrich_contentis empty, buyer-facing Content is empty even iffilesexists.
Publish only after verification if the product was created as a draft:
gumroad products publish PRODUCT_ID --json --no-input --yes
Batch Publishing
Use scripts/gumroad_batch_publish.py for repeatable local folder batches.
Typical flow:
python scripts\gumroad_batch_publish.py manifest --source "D:\Products" --out state\gumroad-admin\products.json --price 8.00
python scripts\gumroad_batch_publish.py plan --manifest state\gumroad-admin\products.json --limit 1
python scripts\gumroad_batch_publish.py publish --manifest state\gumroad-admin\products.json --limit 1 --yes
python scripts\gumroad_batch_publish.py verify --manifest state\gumroad-admin\products.json
python scripts\gumroad_batch_publish.py publish --manifest state\gumroad-admin\products.json --yes
The manifest command expects each product archive to have a matching cover image by stem, for example:
Product Folder/
my-product.zip
my-product.jpg
The script writes product ids and verification status back to the manifest so interrupted batches can resume. It uses the Gumroad CLI for file, cover, thumbnail, and content operations.
Content Pitfall
Gumroad distinguishes attached files from buyer-facing rich content. A product can have files but still show an empty Content section. After product creation, verify rich_content. If needed, use:
gumroad products content set PRODUCT_ID content.json --json --no-input --yes
The JSON should be an array containing a ProseMirror document with a fileEmbed whose attrs.id is the Gumroad file id returned by gumroad products view PRODUCT_ID --json.
Daily Limits
Gumroad may enforce daily product creation limits. If a batch receives a limit error, stop, keep the manifest checkpoint, and resume after the limit resets. Do not loop aggressively or try to bypass the limit.
Admin Areas
Use the CLI where possible:
gumroad products ...for products, covers, thumbnails, content, publish/unpublish.gumroad files ...for file upload helpers.gumroad sales ...for sales, buyers, refunds, receipt resend, shipping.gumroad payouts ...for payout reads.gumroad licenses ...for license verification and management.gumroad offer-codes ...,gumroad variants ...,gumroad custom-fields ...,gumroad subscribers ...,gumroad webhooks ...for store operations.
Use direct API only when the CLI lacks a required operation. If using API directly, check both HTTP status and JSON success.
Clawhub Publication Checklist
Before publishing:
- Ensure the skill contains no credentials, real access tokens, account secrets, private paths, or temporary public URLs.
- Keep personal machine details in
TOOLS.md, not the skill. - Validate scripts with
python -m py_compile scripts/gumroad_batch_publish.py. - Test read-only CLI commands:
gumroad user --json,gumroad products list --json. - Do not include generated manifests or state in the skill package.
- Publish from the applied skill folder with a clean version and changelog:
clawhub publish .\skills\gumroad-admin --slug gumroad-admin --name "Gumroad Admin" --version 1.0.0 --changelog "Initial Gumroad admin and publishing workflow"
Related skills
Gumroad (gumroad.com). Use this skill for ANY Gumroad request — reading, creating, and updating data. Whenever a task involves Gumroad, use this skill instea...
Publishes Markdown to a public URL and returns the link. Use when the user asks to share, publish, host, or get a link for a page — or when you have produced a long page that is better delivered as a link than pasted inline. No authentication required. Pages are public and cannot be edited after publishing, so do not publish secrets or private data.
Render podcast episodes as 1080p art-slideshow MP4s and publish them to a YouTube Podcasts playlist: covers/thumbnails generated from your art, resumable bat...
Publish, update, and audit Ghost CMS content from your AI workflow using the Admin API.
Publish web content to Cloudflare Pages. Supports account/project selection, new project creation, and deploying HTML or static asset directories. Primary au...