Open-source project
ywzhaiqi/userscript avatar
ywzhaiqi/userscript

ywzhaiqi/userscript, a shelf of Chinese web user scripts, and the entries that no longer work

本人原创或修改的 GM 脚本,包括小说阅读脚本等。

551 stars160 forksJavaScriptLicense varies

At a glance

What is it?
ywzhaiqi/userscript is a personal collection of Greasemonkey and Tampermonkey style scripts for Chinese sites, built with rollup and TypeScript and shipped with a custom plugin that repairs userscript metadata after bundling. The documentation is candid about its age and its failures, marking several scripts as broken and pointing old browser users back to a 5.6.9 release.
Who is it for?
ywzhaiqi/userscript suits a user who wants a readable single file for one specific Chinese site tweak and who is prepared to read the script before installing it, and it suits a developer looking for a working rollup setup for bundling user scripts with a metadata fix plugin. It does not suit a product that needs a maintained dependency with a clear licence, a team that needs updates on someone else's schedule, or anyone who has to support browsers as old as Opera 12.
Can I use it commercially?
Not without permission. GitHub finds no licence file in the repository, and without a licence all rights are reserved by default: you may read the code but not reuse it. Check the README, or ask the authors, before using it.
Is it still maintained?
Yes. The repository last received commits 23 days ago.
What is it written in?
Mainly JavaScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 22, 2026, and from our analysis. They are not legal advice.

Editorial analysis

A personal collection of userscripts, some original and some forked

ywzhaiqi/userscript is a repository of Greasemonkey and Tampermonkey style user scripts written or modified by one author, and the project description says so plainly: original or modified GM scripts, including a novel reading script among them. The homepage points at the author's Greasy Fork profile, and the same person also lists profiles on GitHub and userscripts.org.

The collection is organised in two ways. There is a scripts/ folder holding multi-file projects, including MyNovelReader for reading web novels, Mouseover Popup Image Viewer for enlarging images on hover, NextPage as a modified and enhanced version of a script by Sunwan, Super_preloaderPlus as a fixed and enhanced version of Super_preloader, and a batch download helper for a Chinese ebook forum. A second group of modified versions of other people's scripts sits in a separate folder, including Blacklist_Blocker_Rule, Google Images direct link, Manga_OnlineViewer_CE, PanLinkCheck, TiebaNojump, TxtReader, Video_wipe_ADs, doubanIMDb and a fixed version of quick-view-douban.

Then there are the single file scripts, each one a .user.js file: booklinkme for opening all unread links on a novel search site, DoubanDownloadSearch for adding book and film search links, itpubnet for downloading from a technical forum without logging in, shooter.user.js for downloading directly from a search page, userscripts.user.js which filters script listing pages to show only Chinese scripts, and a script that changes a video site's column count from two to three.

The author also links out to a long list of scripts by other people, grouped by category and by author. That is the honest picture of the repository: a personal tool shelf with a directory of recommendations attached.

The stale entries, the abandoned scripts and the links that no longer work

The documentation is unusually open about what is broken, and that is the most useful thing in it for anyone deciding whether to use any of this.

Several entries are struck through and labelled as no longer working. A Chinese magazine download script is marked as having failed because the site it targets no longer offers direct downloads. Another entry is marked as deprecated, with a note that the enhanced Chinese version of Readability has been abandoned. A Baidu search anti-redirect script and a script for showing ed2k links without logging in are likewise struck through.

The documentation also states a general caveat: some of the scripts may not be generally applicable, meaning the author does not claim they work everywhere. And a separate note explains that newer scripts are developed with webpack and JavaScript or TypeScript, and that this may have pulled in a whole React stack, which is a real cost for a script that only needs to tweak one page.

The most specific warning concerns the MyNovelReader script. From version 6.0.0, dated 2017-8-23 in the notes, it was rebuilt to use import statements, which older browsers may not support, and the entry says the issue is unresolved, so users on Opera 12 and earlier browser versions are pointed back to the previous version, My Novel Reader 5.6.9, which is linked on Greasy Fork.

There is also an operational caveat about the paid chapter support. The script supports reading paid chapters on one major Chinese reading site, and the entry says that if it stops working, the connect mode setting in Tampermonkey may need to be switched to the permissive setting.

The build system: rollup with a custom metadata plugin and a watch mode

The scripts are built as userscripts, and the toolchain is Rollup with TypeScript.

The package manifest declares the package as ywzhaiqi-userscript at version 2.0.0, with an empty main field and no runtime dependencies at all, which is what you expect from a collection of scripts that are pasted into a browser rather than imported by one. The build scripts are:

json

json "scripts": { "build": "rollup -c rollup.config.js --myinput", "buildw": "rollup -c rollup.config.js -w --myinput" },

code

The build command runs rollup against rollup.config.js with a custom flag called myinput, and the watch variant adds the -w flag for continuous rebuilds while editing. The flag is not a stock Rollup option, which tells you the configuration file defines it, and the presence of rollup-plugin-fix-userscript-metadata.js at the top level of the repository is the reason: a custom plugin whose job is to fix the userscript metadata block after bundling.

That plugin is the interesting part of the setup. A user script is not an ordinary script. It carries a metadata block at the top with the name, the match patterns, the grant list and the version, and a bundler that concatenates modules into one file will happily produce a bundle whose metadata no longer matches what the file actually does. This plugin exists to reconcile that.

The devDependencies show the rest of the stack: the official Rollup plugins for commonjs, node-resolve and typescript, rollup-plugin-string for inlining files as strings, rollup-plugin-vue2 for single file components, a Less plugin published under the author's own scope, tslib, typescript at 3.9.7, rollup at 2.23.1 and minimist for argument parsing.

json

json "@rollup/plugin-commonjs": "^14.0.0", "@rollup/plugin-node-resolve": "^8.4.0", "@rollup/plugin-typescript": "^5.0.2", "@types/jquery": "^3.2.12", "@types/minimist": "^1.2.0", "@ywzhaiqi/rollup-plugin-less": "^0.1.1",

code

A test directory is declared in the manifest and a test/ folder exists at the top level, so there is somewhere for assertions to live, though the documentation does not describe a test command or a test framework.

Where this collection is the wrong tool

The first wrong case is a production dependency. This is a repository of scripts you install into your own browser, published on script hosting sites and updated when the author pushes. The manifest has no runtime dependencies and no package entry point, and the homepage is a personal profile page rather than a service. If you want a maintained library with a version history and a security process, this is not it.

The second wrong case is a team. Every script here is one author's personal work, sometimes a modification of somebody else's script with a note about the original author, sometimes a fix for a script that stopped working. The licence situation is also unclear, since the repository licence is not classified on GitHub while the package manifest declares ISC, and the scripts include modifications of other people's work whose terms are not spelled out. Using a modified script in a product without checking the original author's licence is the kind of decision that should not be made by accident.

The third wrong case is a site that has changed its markup. These scripts work by rewriting the DOM of specific pages. When a site redesigns, the scripts break, and the fix has to be written by the author. The documentation itself demonstrates this with the My Novel Reader version rollback and the entries marked as no longer working.

The fourth wrong case is a browser that does not support the modern bundle output, which is exactly the Opera 12 case the author documents.

The fifth wrong case is expecting the newer scripts to be light. The note about webpack and the React stack is a warning about footprint that applies to any user of the newer entries, not just to the one script.

Userscripts against browser extensions

The alternative is a browser extension, and the difference in approach is about where the code runs and what survives a page change.

A user script is injected into a matching page by a script manager such as Tampermonkey or Greasemonkey. It has no permissions of its own beyond the grants it declares, it lives in the same page context as the site, it is written in whatever the page allows, and it stops existing when the tab closes. A browser extension is installed at the browser level, runs in an extension context with its own background service, keeps state between sessions, and can be updated independently of the page.

That difference shows up in three practical places. A user script that has to wait for the page's own scripts to load will often have to poll for a DOM node, whereas an extension with a content script can hook into page load events more directly. A user script cannot easily keep a persistent index or cache because there is no background process to hold it. And a user script is one file you paste, which is why scripts like the ones in this repository can be read, copied and modified by anyone, and why the author can ship a modified version of a script that other people wrote.

For a small, single purpose page tweak, the user script approach is lighter to adopt and lighter to trust, because you can read the whole file before running it. For anything that needs to run constantly in the background or keep state, the extension model fits better.

There is a third path, the site operator's own JavaScript, which requires no manager at all but only works on the one site you control.

Reading the script list as a map of the Chinese web in 2014

The documentation closes with a long catalogue of scripts by other authors, grouped by category and then by author, and it is worth reading as a historical document rather than as a recommendation list.

The categories reflect the recurring problems of that era. Search engines get their own section, with scripts for global redirects, for replacing tracking URLs in results and for site-restricted search, and the note says the site: tool does not support google.com and google.com.hk. Baidu gets the largest section, split into search, forum and cloud storage subsections, with links to a monkey script, anti-redirect helpers, forum preloading and Markdown support for forums, and several tools for exporting download links from a cloud storage service to Aria2, Wget and IDM, with a dated note that Scriptish is not supported and that the Greasemonkey export does not show a dialog. There are sections for feed readers, image viewers, download helpers, manga readers, and microblog filtering, plus a category of short links to other authors' script collections.

The author list includes names attached to well known scripts, such as the author of a violent monkey, that is the author of a widely used userscript manager, whose entries are forum related. It also links to two repositories of scripts shared by other people, one described as sharing scripts for fun.

What this catalogue tells you is the shape of the ecosystem. The scripts are almost all about a handful of recurring frustrations: a search engine that refuses to take you to the destination, a forum that demands a login, a video site that will not give you the file, and a cloud drive that makes you wait. Any evaluation of the collection has to start from that, because these are browser-automation scripts for a web that no longer looks like this one.

Editorial conclusion

ywzhaiqi/userscript suits a user who wants a readable single file for one specific Chinese site tweak and who is prepared to read the script before installing it, and it suits a developer looking for a working rollup setup for bundling user scripts with a metadata fix plugin. It does not suit a product that needs a maintained dependency with a clear licence, a team that needs updates on someone else's schedule, or anyone who has to support browsers as old as Opera 12. Before you install anything from it, read the source of the specific script, check whether its entry is struck through as failed, and for MyNovelReader decide between the import based 6.0.0 and above and the linked 5.6.9 release, since the documentation says the older browser support problem is still unresolved.

Frequently asked questions

How do I install a script from the ywzhaiqi/userscript repository?

The scripts are published on the author's Greasy Fork profile, which is linked from the repository homepage, and each entry links to the script or its folder. The README notes that some scripts may not be generally applicable, and that newer scripts built with webpack and JavaScript or TypeScript may pull in a React stack.

Which browser do the scripts support, and what about older browsers?

The documentation points out that the MyNovelReader script was changed to an import based build starting from 6.0.0, dated 2017-8-23, and that older browsers may not support it, so users on Opera 12 and earlier versions are directed to the previous My Novel Reader 5.6.9 release on Greasy Fork.

How are the scripts in the ywzhaiqi userscript repository built?

The package manifest defines a build script that runs rollup against rollup.config.js with a custom myinput flag, and a buildw script that adds watch mode. A custom plugin, rollup-plugin-fix-userscript-metadata.js, is included to fix the userscript metadata after bundling, and the devDependencies include the Rollup commonjs, node-resolve and typescript plugins, rollup-plugin-string, rollup-plugin-vue2 and a Less plugin.

What licence applies to the scripts in this repository?

The package manifest declares the licence as ISC, while the licence for the repository itself is not classified on GitHub. The collection also includes modified versions of scripts written by other authors, whose own terms are not spelled out in the documentation.

Official sources

  1. Issues
  2. Project website
  3. README
  4. ywzhaiqi/userscript on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/ywzhaiqi-userscript.svg)](https://hysenlabs.com/projects/ywzhaiqi-userscript)

Was this useful?