A downloadable tool for Windows, macOS, and Linux

Buy Now$2.00 USD or more

For people who sell digital products online

Listing Lint checks your product files before you publish — for the mistakes that get a listing rejected, buried in search, or taken down after the fact. It is built for indie sellers on itch.io, Amazon KDP, DLsite, note, and Coconala.

What it prevents (real checks, real failures)

  • A portrait cover that itch.io's landscape browse grid crops automatically
  • Trademarked franchise names in your description — automated rights detection removes listings on sight
  • Missing AI disclosure, which KDP, DLsite, and itch.io each require in their own way
  • Nine keywords entered where KDP accepts seven
  • A hashtag containing a space, which silently splits into two tags
  • A price of zero, or one with an extra digit
  • An affiliate link with no disclosure
  • On adult listings: wording that is a legal line (under-18, non-consent, real people), not a policy one

What the output looks like

FAIL bad_itch_pack   [itch.cover_ratio] cover.png 832x1216 is portrait
                     (itch.io uses 630x500 landscape; portrait covers get cropped in the browse grid)
FAIL bad_kdp_book    [ip_trademark] metadata.md: trademarked name(s) ['Ghibli', 'Zelda']
FAIL bad_adult_novel [adult_forbidden] listing.md: forbidden term(s) ['school', 'student']
WARN bad_itch_pack   [tag_split] README.md:7 tag '#pixel art' contains a space
WARN bad_kdp_book    [kdp.keywords] 9 keywords (KDP accepts 7)
PASS good_kdp_book   [kdp] nothing found

One line per finding, with the file, the rule, and the reason. FAIL blocks your publish; WARN is worth a look.

How to run it

python listing_lint.py --dir ./my_products

No install, no dependencies, no config file, no API key, no account. Python 3.9+, standard library only, fully offline — nothing leaves your machine. Exit code is 1 on FAIL, so it drops into a pre-publish script or a git hook as-is.

The platform is detected from the filenames inside each product folder — nothing to configure.

What it does not do

It does not judge whether your writing is good, your price is competitive, or your thumbnail makes anyone click — those decide whether you sell. This tool only clears the obstacles in front of them.

It also cannot know that a platform changed its rules. rules.md records the date each rule was last confirmed (2026-09-19); that date is the honest limit of what the tool knows. Trademark and adult-content term lists are necessarily incomplete — a clean run means the common cases are clear, not that your listing is.

Included

  • listing_lint.py — the tool, one file
  • README.md — usage, in English and Japanese
  • rules.md — every rule, its reasoning, its source, and its confirmation date
  • examples/ — four deliberately broken products and one clean one, so you can see it work in one command
  • LICENSE — MIT

Disclosure

This tool's code was written with AI assistance. Licensed MIT — use it, change it, ship it inside your own pipeline.

Purchase

Buy Now$2.00 USD or more

In order to download this tool you must purchase it at or above the minimum price of $2 USD. You will get access to the following files:

listing_lint.zip 58 kB

Leave a comment

Log in with itch.io to leave a comment.