jscher2000 Moderator

Conversion is a hidden feature of userstyles.org. Let's say you have this URL:


The URL to generate a userscript is:


As a bookmarklet:

javascript:var parts=location.href.split('/styles/'); location.href=parts[0]+'/styles/userjs/'+parts[1]+'.user.js'; void 0;

You can convert a few to see the pattern the site uses. It hink you need to manually generate @include/@match for styles that use a regex with @-moz-document.

This seems to be mostly working.

There are three unusual features of Baidu:

(1) The domain is not coded into the title link. Instead, the script needs to read the green text below the excerpt. Sometimes this text is incomplete and ends with "...". Since there is no convenient way for the script to learn the full domain, the script records the ... and will use that in matching the green text. Sometimes, you end up needing to block two different domains:

  • https://www.long-domain-name.or... => long-domain-name.or...
  • www.long-domain-name.org => long-domain-name.org

(2) Baidu removes the MutationObserver object, which is how scripts normally detect changes to the page, such as new results when you click page 2+. So the script needs to use an older technology that can slow down the site called a DOM mutation listener. There might be a better way to work around this, but this seems to work for now.

(3) When loading new results, Baidu removes the style rules and forms added by the script, so those need to be reinjected. This is why you currently cannot move the Manage Hiding button to the top or bottom on pages 2+ of your results. I will try to fix that later.

Please post feedback on how it works for you.

Sorry, I just realized you were talking about a different script, so never mind on the link in my previous reply.

Thanks. I don't know how I missed that. I found it easier to stop using GM_addStyle() across the board than to figure out function hoisting. New version posted.

Hi Marti, I think having it right there on the script edit page is a good idea, more convenient.

Your block list is stored in a SQLite database. Here's how you can extract it.

(1) Open an online SQLite database viewer such as: https://inloop.github.io/sqlite-viewer/

Keep this tab open because we are going to drag and drop a file onto it

(2) Open your currently active Firefox profile folder. This article has the steps: https://support.mozilla.org/kb/profiles-where-firefox-stores-user-data

Size this window so you can see the SQLite site behind it

(3) Double-click into the gm_scripts folder, then scroll down to the Google_Hit_Hider_byDomain(Search_Filter_Block_Sites).db file (sometimes the .db extension is not visible, but it will have a different icon from the folder of a similar name)

(4) Drag the database file onto the SQLite viewer page and it should immediately extract five data fields. The one you want is hideyhosts -- you can paste it into the Import panel of GHHbD running in Tampermonkey or Violentmonkey.

Oops, never mind. The left side has the info from the script; the Author Tools defaults to MIT regardless.

Hi Marti, the reason for the restriction was people stealing script metadata blocks on userscripts.org and replacing the script contents with FB account hijackers. Without a license violation, it wasn't obvious how to get those taken down. That kind of behavior hopefully is not occurring on this site.

For what it's worth, I use the copy/paste method. For the kind of changes I make, Github would be overkill. (Also, I'm hosting nearly all of the same scripts on Greasyfork, which has version comparison so I can use that for reference.)

One thing that might make this script more convenient for use on FB is a MutationObserver to watch for and modify new newsfeed content as it automatically loads into the page (usually triggered by scrolling). Or perhaps it could be on a timer with setInterval() if the performance is acceptable.

Oh, you use it with www? That's an important detail because line 62 did not allow for that. Please see the updated version, 0.7.1.

You could try this script:


It's a bit rough due to various things Google does with its matching (singular/plural, synonyms, etc.).

If you don't actually want all your matches yellow, edit line 20 to

var yellowonly = false;

I didn't build a whole array of colors, so if you have a lot of query terms, a lot of them will be yellow anyway.

It's a start. Someone can take it over and improve on it.

By the way, the matches in the cite (green URL) and in the snippet below it are bolded by Google, so it's easy to inject a style rule into the page to highlight those bolded terms.

If you use Stylish / userContent.css:

div.g cite b, 
div.g span.st em {
    background-color: #ff0 !important;

If you prefer a userscript:

var r = "div.g cite b, div.g span.st em {background-color: #ff0 !important;}";
var s = document.createElement("style");

But real code would be required to highlight the matching words in the large headline, since Google does not mark those in any way.