SlopScore
00 crowd

Sloppycat

Artists say what is theirs. Everyone else gets to see it.
Open repo on GitHubgithub.com/NTBooks/Sloppycat
TypeScript · ★ 0 · 0 forks · MIT · entirely aiheavy humanalphaextensionautomationmedia⚠ scraping⚠ legal🤖 claude-code🤖 claudeunclaimed
listed 1 hour ago by NTBooks · last checked 41 minutes ago
GitHub says
Artists say which releases are theirs; everyone else sees it. Chrome extension that watches your Spotify, Apple Music, Deezer, Amazon and Goodreads profiles for AI slop uploaded under your name, writes the takedown, and flags known fakes for listeners.
created
2026-09-22 · pushed 2 hours ago · 43 commits · 1 contributor
languages
TypeScript 86%HTML 6%JavaScript 5%CSS 3%
paperwork
licensereadme 42% health
dependencies
no dependency graph (no manifest, or disabled) · OSV.dev, checked 1 hour ago

The pitch

Somebody uploads an AI song under a real artist's name and it lands on that artist's Spotify page, right
next to their actual records. The scammer collects the royalties. It happens with books too: a knockoff
goes up under a real author's name, or a near-copy of a title that just sold well, and the people who buy
it think they bought the real thing.

The platforms could fix this by asking the artist first. Spotify is beta-testing something like that. The
rest aren't, and I got tired of waiting.

So this is the other way round. You snapshot your own profile, untick whatever isn't yours, and publish
that as a markdown file somewhere with a URL. Put the link in your bio, which only you can edit, and that
bio is the proof: the list names the profile, the profile names the list back, and a scammer can't write
the second half. Other people subscribe to your list and the fakes get marked on the page before they press
play or buy.

The file is the whole format. No account, no signup, nothing to trust me with, and it works fine if you
never install the extension at all: it's readable markdown either way.

Should you believe any of it? Only as far as you believe the person who published the list. Nothing here
decides what's real on its own. An unproven claim shows you nothing, which I think is the right default,
and docs/limits.md is an honest list of everything it can't see, including the bits that embarrass me.

tl;dr: your catalog, said once, in a file you own.

README — the repo's own words, folded up so the grading fits on one screen

Sloppycat

Artists say what's theirs. Everyone else gets to see it.

Somebody uploads an AI-generated song under a real artist's name, and it lands on that artist's Spotify page next to their actual records. The scammer gets the royalties. Same trick with books: a knockoff goes up under a real author's name, or a near-copy of a title that just did well, and the fans who buy it think they bought the real thing.

The platforms could fix this by asking the artist first. Spotify is beta-testing exactly that. Amazon, Goodreads, Apple and Deezer aren't doing anything like it, and the wait has been long enough.

So: snapshot your own profile, untick the stuff that isn't yours, publish that as a list. The extension watches your profiles for new junk and hands you the takedown packet. Other people subscribe to your list and see the fakes flagged on the page before they press play or buy.

A fake single on an artist page, outlined in red, with a hover card reading: artist says this is NOT theirs


Contents


Install it

It's submitted to the Chrome Web Store and waiting on review, so there's no install link yet. An extension asking for this many host permissions tends to draw a slower look than a trivial one, so I'd expect this section to be here a while. Until it clears, build it and load the folder.

npm install
npm run build

Then open chrome://extensions, turn on Developer mode, click Load unpacked, and pick the dist folder. npm run watch rebuilds while you work.


For artists and authors

Snapshot your profile

Open your own artist or author page, click the Sloppycat icon, hit Snapshot this profile. It reads the public catalog the same way a fan's browser would.

The extension popup showing a detected Spotify profile and a Snapshot button

Supported: Spotify artist pages, Apple Music artists, Deezer artists, Amazon author pages, Goodreads author pages. You can also paste a URL in Settings if you'd rather not open the page.

Everything starts ticked as yours. You untick what isn't. Nothing is unticked for you, because a guess about your own catalog is worse than no guess.


Untick what isn't yours

The review table grouped by albums, singles and compilations, with a suspicious single carrying warning chips

Releases are grouped by type. "Appears on" starts off, since those are other people's records you play on. Anything odd gets a chip explaining why it caught the extension's eye, like a release that came through a distributor's placeholder label when your whole catalog is on one label. A chip is a reason to look, not an accusation. Plenty of honest releases have one.

Get the takedown packet

The moment you untick something, you get the letter for it: where to send it, what to paste, which form, in the right order, with your profile links and the ASIN or album id already filled in.

A generated Spotify takedown packet with links, numbered steps and a prefilled letter

Each platform gets its own version, because the routes are genuinely different. Spotify wants the report form plus your distributor, and it matters that you don't delete and re-upload your own release while you wait. Amazon splits in two: if the fake is sitting on your author page that's Author Central, and if someone is selling under your name somewhere else that's the infringement form.

Then it watches

After the snapshot it keeps checking on a timer, default every twelve hours, minimum fifteen minutes. Anything new that you haven't already claimed becomes an alert with its packet ready.

The alerts page showing a new release on the profile and a lookalike title found elsewhere

It also searches for near-copies of your titles somewhere else on the platform, which is the other half of this scam and the half a profile check can't see.

Two limits worth knowing. Checks only run while Chrome is open, which is as far as an extension reaches. And Spotify only hands over your ten newest albums and ten newest singles, so a fake uploaded with an old date sits where that view never reaches: the extension pages past it where it can, and watches the release counts to catch it where it cannot. The full list is in what it cannot see.

Following someone else's page

Most of the above is written for the account holder, but the watching half works just as well on a page you don't own. Open an artist or author you follow, hit I follow this artist, and the wizard takes one snapshot as a baseline and stops there. No list to write, no bio to claim, no takedown letters, because none of that is yours to do. You get told when something new turns up, with the same signals attached, and if that artist publishes a list of their own you can subscribe to it from the last step so their answer arrives with the alert.

There is a Testing panel in Settings that plants an alert on a watched profile, so you can walk the whole path without waiting for a real one.


Make your own list

Your list is a Markdown file. That's the whole format. GitHub renders it, people can read it without any tooling, and a pull request against a community list is reviewable by a human.

# Jane Doe — verified catalog
<!-- sloppycat/v1 -->
Title: Jane Doe — verified catalog
Type: creator

## Creator
| platform | profile |
|---|---|
| spotify | https://open.spotify.com/artist/0123456789abcdefghijkl |

## Mine
| platform | id | title | disclosure |
|---|---|---|---|
| spotify | 4aBcdefghijklmnopqrstu | Blue Room | vocals:human; art:ai-generated |

## Not mine
| platform | id | title | first seen | note |
|---|---|---|---|---|
| spotify | 9xYcdefghijklmnopqrstu | Midnight Jazz Vibes | 2026-09-14 | not ours, reported 15 Sep |

The wizard writes this for you at the end of the snapshot. Copy it, or download it, or let it open GitHub with the file already filled in.

Publish it anywhere with a plain https URL. A public Gist is the least work, and it's the one host every copy of the extension can already read; on your own domain, Chrome asks each subscriber once to allow that host when they add your list. The raw URL is what people subscribe to. The file the wizard writes opens with a comment saying what it is, where to get the extension, and how to add the list, because someone following the link from your bio lands on raw Markdown with nothing else to go on. It's a comment, so it stays out of the way of anyone who already knows.

Optionally, prove it's you. Paste that URL into a bio only you can edit: Spotify for Artists, Amazon Author Central, or a claimed Goodreads profile. The extension reads your bio, follows the link, and checks the list names that same profile back, and subscribers' cards say so. No account, no signup, nothing to trust me with.

This is a label, not a requirement. Your list works without it, and it keeps working if you take the link back out. Nobody should have to treat a line of their bio as permanent infrastructure, and two of the five platforms give you nowhere to put one anyway. How the trust works goes through why.

The disclosure column is yours to use or ignore. If you used AI for the cover and not the words, say so and it shows up on the hover card. Music keys are vocals, instruments, postproduction, art, lyrics. Book keys are text, images, cover, translation. Values are human, ai-assisted, ai-generated. Anything else you write still displays.

Labels, managers and lawyers: one list can cover a whole roster. Put every artist's profile in the Creator table and publish once. You already hold this data, it's what your DDEX or ONIX feed says. Nobody publishes it anywhere a browser can read, which is the only reason this scam works as well as it does.

Full spec: docs/list-format.md.


For slopblockers

Subscribe to lists the way you'd subscribe to filter lists in uBlock. Items get a badge on the page, and hovering gives you the card.

A verified album with a green check badge and a card showing vocals: human, instruments: human

green ✓ the artist says this one is theirs
red ✗ the artist says this is not theirs
blue ◷ released before the cutoff, so probably fine, but nobody has confirmed it
grey ○ this artist is enrolled and hasn't said either way yet

No badge at all means no list covers it. Silence, rather than a guess.

Add sources in Settings. One community list ships enabled; any creator's Gist URL works.

Lists are re-fetched every few hours, and each fetch is compared with the last one. What changed goes to List updates, reachable from the popup and from Settings: a release an artist has just confirmed as theirs, a new fake they have flagged, or an accusation they have withdrawn. You get one notification per refresh rather than one per row, the first fetch of a list you just added counts as the starting point rather than news, and removing a list takes its history with it. If you would rather not hear about it, the toggle is next to Notifications in Settings.

Settings showing watched profiles, monitoring options, my list and the list sources table

Already running uBlock Origin and don't want another extension? Export any subscribed list as a cosmetic filter list and the flagged items get hidden instead of badged. You lose the report card, which is most of the point, but it works.


How it gets the data

Platform How Notes
Spotify Reads the artist data the web player itself loads Their public API closed in Feb 2026, and the discography page only keeps two albums in the DOM at a time. Gives the 10 newest albums and singles, which is where a hijack shows up anyway.
Apple Music iTunes lookup API Free, no key.
Deezer Public API Free, no key.
Amazon Books Renders your author store pages in a hidden tab The pages are JavaScript now, so there's nothing to fetch. Runs in your own session, so it looks like you browsing, because it is.
Goodreads Fetches the author list pages Still server-rendered. No API since 2020.
Google Books Volumes API Only used to spot lookalike titles.

Nothing leaves your browser except requests to those platforms and to the list URLs you subscribed to. There is no server, no account, and nowhere for me to see any of it.


What it won't do

It doesn't detect AI. Spotify and Deezer already badge AI-generated music and it doesn't help here: a fake on your page is credited to a human, so nothing flags it. The only person who actually knows whether a release is yours is you, so yours is the word the badges carry.

It doesn't file anything for you. It writes the letter and points at the form. You press send.

It doesn't accuse people on a hunch. The heuristics are there to help you look in the right place. They never end up on anyone's screen as a verdict. A row only reaches the shared community list if the creator confirms it, or two curators check it and sign off: see lists/CONTRIBUTING.md.


Working on it

npm test
npm run typecheck
npm run preview

preview serves the extension pages with a fake browser API so you can poke at the UI in a normal tab; /demo renders the overlay against a mock platform page, which is where these screenshots come from.

Also here: privacy · store submission notes · what it cannot see · who gets to speak for a profile · user reports · research, with sources · the list format · what ships in the default list · how the community list is policed · marketing notes

This needs people whose word carries

An ad blocker is useless without filter lists, and those exist because people commit to maintaining them in public. Same deal here. The code is the easy half. The half that matters is getting lists published by rights holders, labels, and the lawyers and journalists who've been explaining this scam to the people it happens to. If you're one of those people, the format is open and you don't need my permission or an account to publish. See docs/marketing.md for who's being asked and why.

It's a band-aid. The real fix is the platforms asking first, and one of them is finally trying it. Until the rest catch up, this is the part an artist can do without anybody's permission.

Read the rest on GitHub

Scan report · 2026-09-23
  • Prohibited terms or links
  • Repository eligibility
  • slopscore.md paperwork
  • Content policy
  • Risk review

0 comments

log in to comment.

report this listinglog in to report