Highlighting accounts that are on the spaminator blacklist; I created a Tampermonkey script!

image.png

A couple of days ago I create a blog about an idea I have to create a monitoring dashboard for Hive accounts (link). The idea behind it is to have more than just the reputation of an account.
The original idea was a dashboard, but I also had a phase two in mind where you could have certain indicators next to the username (where you can find the reputation now).
This idea would need someone to develop a dashboard with these stats or someone who can integrate it in the front-ends. But since I'm not a developer I can not make this myself (and I also have no Claude code and knowledge about that).

divider.png

Trying something myself

So I tried something else. I wrote a prompt in Copilot could help me indicate whether an account is listed on the Hivewatchers spaminator blacklist (https://spaminator.me/api/bl/all.json).

Copilot suggested to make a Tampermonkey script. Tampermonkey is a Chrome plugin that can run scripts on websites you visit.
I've asked Copilot to make a script that checks the blacklist and when an account is on the list, it should highlight the account by making the username red and add a warning sign next to it.
I needed to adjustment my prompt a bit, so the script also worked on the snaps page, but after about 20 minutes I had a working script.

I went to the #all stream and scrolled through it. And then I noticed it worked, as you can see in the screenshot below.

screenshot1.png


I was quite excited. In this case I would also been warned by the low reputation and the downvote, but there are other cases where scammers have a higher rep and the posts might not (yet) have been downvoted.

And the cool part is that it also works in Snaps, which is often flooded with spamming/scamming accounts that are trying to harvest rewards and extract it from Hive.


image.png

divider.png

Do you want it too?

If you like the script, then download and install the Tampermonkey extension in your Chrome browser and add the script below.
It probably only works in Chrome in combination with PeakD, but feel free to use the script and adjust it for your browser and favorite front-end.

// ==UserScript==
// @name         PeakD Blacklist Warning
// @namespace    https://peakd.com/
// @version      1.3
// @description  Makes the username red + warning sign when the user is on the Spamminator blacklist
// @match        https://peakd.com/*
// @grant        GM_xmlhttpRequest
// @run-at       document-end
// ==/UserScript==

(function() {
    const BLACKLIST_URL = "https://spaminator.me/api/bl/all.json";
    const ICON = " ⚠️";

    GM_xmlhttpRequest({
        method: "GET",
        url: BLACKLIST_URL,
        onload: function(response) {
            const data = JSON.parse(response.responseText);
            const blacklist = new Set(data.result.map(u => u.toLowerCase()));

            const observer = new MutationObserver(() => checkUsernames());
            observer.observe(document.body, { childList: true, subtree: true });

            checkUsernames();

            function checkUsernames() {

                // ✔️ Alle bekende username-elementen op PeakD
                const selectors = [
                    "a.username",                     // klikbare usernames
                    "span.username",                  // inline usernames
                    "h6.text-semibold.no-margin",     // header usernames
                    "span[data-v-24e8a7fa]"           // jouw ontbrekende variant
                ];

                selectors.forEach(sel => {
                    document.querySelectorAll(sel).forEach(el => {

                        const username = el.textContent.trim().toLowerCase();

                        if (blacklist.has(username)) {
                            if (!el.dataset.blacklisted) {
                                el.dataset.blacklisted = "true";

                                // ✔️ Username rood + bold
                                el.style.color = "red";
                                el.style.fontWeight = "bold";

                                // ✔️ Icoontje toevoegen (Vue-proof)
                                const warn = document.createElement("span");
                                warn.textContent = ICON;
                                warn.style.color = "red";
                                warn.style.fontWeight = "bold";
                                warn.style.marginLeft = "4px";

                                el.appendChild(warn);
                            }
                        }
                    });
                });
            }
        }
    });
})();




This experiment got me excited and I might add some more scripts that gather other data which I find interesting to see when I'm curating.
For the record; I'm not making decisions just on the indicators, but it does give me a warning sign to take a close look at the account before I reward the content.

divider.png

I'd love to hear what you think about this script. Especially if you have tried it yourself.
I don't know if it will work in other front-ends. I haven't tested it yet, but I doubt it. But with a good prompt and 'inspecting' the username fields in your favorite front-end, you might be able to adjust so it also works in there.

divider.png


Friendlymoose

0.49514641 BEE
5 comments

But can it do the opposite? Find people who you might want to interact with based some metric like how long they've been a consistent contributor? Their comment to post rate? That sorta stuff maybe?

0.00152335 BEE

You can do a lot with scripts.
I wanted to have this information, but you can try to make one that shows the info you like.

0.00000000 BEE

hmm now i have to install chrome again to test this ... 😎 !PIMP

0.00152335 BEE

Haha. Or you rebuild it to fit the browser you use.

0.00000000 BEE

Community security improves when users create tools to quickly detect abusive behavior.

0.00151909 BEE

Wow that would be nice for many curators.
You did great job 👏👏

0.00151878 BEE

That is pretty nice it is working well, I only had to organize the identation since copying and pasting didn't work well hehehe maybe it is better to add that in a git repo ?

0.00151833 BEE

Thanks! I never used git before.

0.00000000 BEE

by the way...maybe we should some feedback for peakd team to implement as an option configuration like the KE visualization

0.00000000 BEE