Listing Lint
A downloadable tool for Windows, macOS, and Linux
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 fileREADME.md— usage, in English and Japaneserules.md— every rule, its reasoning, its source, and its confirmation dateexamples/— four deliberately broken products and one clean one, so you can see it work in one commandLICENSE— MIT
Disclosure
This tool's code was written with AI assistance. Licensed MIT — use it, change it, ship it inside your own pipeline.
| Published | 6 days ago |
| Status | Released |
| Category | Tool |
| Platforms | Windows, macOS, Linux |
| Author | Rio Works |
| Tags | gamedev-tools, Indie, publishing, python, quality-assurance, utility |
| AI Disclosure | AI Assisted, Code, Graphics |
Purchase
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:

Leave a comment
Log in with itch.io to leave a comment.