Skip to content
msk edited this page Jul 15, 2026 · 6 revisions

Pillbug is composed of 3 tabs: Config, Code, and Review. You can switch between tabs using the navbar on the top right.

Config

Config is where you can log in, install nodepacks, and decide what pages you will edit, either by manually typing out a list, or by using the generator functionality.

Logging in / creating a BotPassword Currently, Pillbug only supports BotPasswords as a login method, however OAuth is planned for future updates. To obtain a BotPassword, visit Special:BotPasswords on the MediaWiki instance you'll use Pillbug on. (Remember to also set the Wiki origin to that). For example, to create a BotPassword on English Wikipedia, I would go to https://en.wikipedia.org/wiki/Special:BotPasswords, type in a name in the "Create a new bot password" prompt, and give it the "High-volume (bot) access," "Edit existing pages," and optionally the "Edit protected pages" grants.

Once you've assigned your grants, you can press the "Create" button at the bottom of the page. You'll be brought to a page, like the one below, that has your BotPassword credentials.

You can then copy-paste those credentials into their respective inputs, and you'll be logged in.

Page queue

The page queue is the queue of pages to "work" on, i.e. the pages that will be processed by the code in the Code tab and be reviewed in the Review tab. It can either be manually created, or generated using the queue generator.

Queue generator

Queue generation relies on the Action API, and as such you need to be logged in. Results are capped at about 5,000 titles per generation; extra matches are truncated.

Pick one source with the radio on the left, fill its fields, optionally set Namespace, then press Generate. That replaces the current queue with the generated titles (you can still edit the textarea afterward and press Set queue).

Category

Members of a category (title like Category:Example; Category: is added if missing).

  • pages - normal pages in the category
  • subcategories - subcategory pages. By default, even when filtered for the Category namespace, subcategories are excluded.
  • files - file pages in the category. By default, even when filtered for the File namespace, files are excluded.

Select at least one of those types.

Links to page

Pages that link to a given title.

  • wikilinks - pages that link to the target, see also Help:Links
  • transclusions - pages that transclude the target
  • file usage - pages that use the file (target is treated as File:... if needed)

There is also redirect filtering.

  • both - redirects and non-redirects
  • redirects - only redirect pages
  • non-redirects - only non-redirects

When using wikilinks, Include links to redirects controls whether to also follow through redirects of the target.

Pages with prefix

Titles starting with a given string.

  • Strict prefix search (on) - uses the all-pages list API for an exact prefix per selected namespace (good for precise searches, like User:Example/).
  • Strict prefix search (off) - uses prefix search (more "search-box" style matching across the selected namespaces).

Links on page

Outgoing wikilinks to existing pages from a page. Namespace filters which linked namespaces are kept.

Wiki search

Full wiki search. See the CirrusSearch help page.

Namespace

The Namespace list filters queue generator results to the namespaces you select. Click to toggle; selected namespaces stay highlighted.

Process ahead?

At the top of the queue generator is the process ahead? toggle. Pillbug will always fetch upcoming pages in the queue and run the skip graph, with process ahead? enabled, it will also run the process graph, meaning that reviewing edits will be slightly faster in some cases.

Nodepacks

Nodepacks are installable bundles of graph nodes (extra building blocks for the Code tab), beyond Pillbug's defaults. Packs are typically installed once per browser; as they persist across reloads. After installing, switch to Code to place the new nodes in the process/skip graphs. If a pack fails to load, the Config column will show an error. A template nodepack is available here.

Code

The Code tab holds two nodish graphs that run on each page from the page queue: the skip graph and the process graph. Both receive the same inputs for a page; they differ in what they return and when they run.

NodeViewer controls

Keyboard

Input Action
Escape Close add-node menu, if open
Escape Go up one composite level, if in a composite
Escape Clear selection, if nodes are selected
Escape Reset pan and zoom to default, if nothing else applies
Ctrl+C / Cmd+C Copy selected nodes (and wires between them) relative to cursor
Ctrl+V / Cmd+V Paste clipboard at cursor, preserving relative layout
Delete / Backspace Delete selected nodes (boundary Input/Output nodes are excluded)

Keyboard shortcuts are ignored while focus is in an input, textarea, or select.

Mouse / pointer (canvas)

Input Action
Scroll wheel Zoom in/out toward cursor (25%–200%)
Middle button + drag Pan the canvas
Left click on empty canvas Clear selection and close add-node menu
Left drag on empty canvas Marquee (box) select nodes
Right click on empty canvas Open add-node menu at cursor
Right drag Slice/cut wires crossed by the drag path

Mouse / pointer (nodes)

Input Action
Left click on node body Select node
Shift + left click on node Add/remove node from selection
Left click on node in a multi-selection Keep group selected (for dragging)
Left drag on node header Move selected node(s)
Double-click composite node header Go into composite
Left drag on port socket Start a wire; release on a compatible port to connect

Add-node menu (right-click)

Input Action
Type in search Filter node types
/ Move highlight in list
Enter Add highlighted node at menu position
Escape Close menu

Group panel (while in a composite)

Input Action
Up button Go up one level (esc also works)

Shared inputs:

Port Type Notes
Title title The page's title - note that this is not a string, and thus may need to be converted to one using the "Title to String" node.
Content string The current page's wikitext.

When reviewing, Pillbug evaluates pages in this order:

  1. Skip graph - if it decides to skip, the process graph is not run for that page.
  2. Process graph - otherwise, transform the wikitext and (if it actually changed) show the edit in Review.

Skip graph

Port Type Notes
Skip boolean Whether to skip or not.
The Skip graph is entirely optional; however with complicated process graphs, it can significantly speed up reviewing. Most of the filtering should already have been done during queue generation, however for hard-to-filter-for edge cases, e.g. if an article uses a template but not the specific parameter needing to be replaced, the skip graph will be useful.

If Skip is true, processing for that page will be aborted, removing it from the queue and logging it as skipped. Errors in the skip graph (node failures, type errors, etc.) are treated as a hard failure for that page: the page is dropped from the queue and an error is surfaced (prefixed like Skip graph: …). They are not shown as a normal "skip."

Process graph

Port Type Notes
ContentAfter string The contents of the page, presumably after modifications.

The process graph is the edit itself, building a new wikitext string from the title and current content. After a run:

Result Behavior
ContentAfter equals Content Page will be skipped.
ContentAfter differs The page is offered in Review as a diff (before = Content, after = ContentAfter) for Save / Skip / etc.
ContentAfter missing or not a string Error: Process graph did not return ContentAfter string - page dropped from the queue in a batch, same class of failure as other graph errors.
Node / runtime errors Prefixed Process graph: ...; page dropped from the queue in a batch.

Wire the graph so a string always reaches ContentAfter on paths you care about. An empty or incomplete graph that never produces ContentAfter will error rather than "do nothing."

Review

The Review tab is where you inspect each proposed edit as a diff, then save, skip, or undo. You need to be logged in to start a review run or to save / undo. You can still open the tab and look at past log entries while logged out.

Review log

Below the controls is a list of recent outcomes (newest first). Each row shows the page title, a status chip, and a timestamp.

Status Meaning
applied Saved to the wiki
skipped You pressed Skip, or the page was automatically skipped
undone A previously applied edit was reverted via Undo
pending Reserved for entries that are neither applied, skipped, nor undone

Click a log row to load that page’s stored before / after into the diff. Selecting an applied entry (not yet undone) switches the primary button to undo.

Clone this wiki locally