ScotsBot is a maintenance bot designed to support content quality and language integrity on the Scots Wikipedia (sco.wiki). The bot focuses ontagging, reporting, and light normalization and doesnot delete pages, revert edits, or take administrative actions.
Its primary goal is to reduce the maintenance burden on human editors and sysops by automating routine, low-risk tasks.
ScotsBot operates only within clearly defined limits and avoids any disruptive or irreversible actions.
| Task category | Description | Type |
|---|---|---|
| Language tagging | Tags new articles as English-only or English-heavy based on lexical analysis | |
| New article tagging | Adds{{Stub}} and{{Unsoorced}} templates where appropriate | |
| New user welcoming | Welcomes new users after their first content edit | |
| Language reports | Generates language reports | |
| Reporting | Generates periodic maintenance reports (e.g. Wikidata, unsourced) | |
| Maintenance tagging | Adds{{Unsoorced}} based on theunsourced report | |
| Lexical normalization | Applies approved header replacements from anon-wiki whitelist | |
| Lexical normalization | Applies approved word replacements from anon-wiki whitelist | |
| User notifications | Sends user warnings for non-Scots content creators (new articles only) |
This section documents the bot’s current operational configuration.
SKIP_GROUPS = ["sysop", "bot", "autopatrolled"]SKIP_USERS = [] STUB_SIZE_LIMIT = 380 UNSOURCED_MIN_SIZE = 300 VANDALISM_MIN_SIZE = 200
LANG_THRESHOLDS = { "english": 0.90, "english_heavy": 0.75, "scots": 0.25 }VETERAN_EDITS = 3VETERAN_MONTHS = 4
TEMPLATES = { "english_only": "No Scots", "english_heavy": "Fix Scots", "stub": "Stub", "unsourced": "Unsoorced", "disambiguation": "Disambiguation", "welcome": f"Uiser:BZPN/Walcome",}EN_ONLY_WARNING_TEMPLATES = { 1: "Uw-naescots-en", 2: "", 3: "", 4: "", 5: "",}EN_HEAVY_WARNING_TEMPLATES = { 1: "Uw-naescots-en", 2: "", 3: "", 4: "", 5: "",}SUMMARIES = { "tag_en": "Markin article as [[WP:DICT|english-only]] ([[Wikipedia:Spellin an grammar|WP:SAG]])", "tag_mixed": "Markin article as [[WP:DICT|english-heavy]] ([[Wikipedia:Spellin an grammar|WP:SAG]])", "cleanup": "Lexical cleanup an header normalization (per [[User:BZPN/Whitelist.json|whitelist]])", "stub": "Markin article as [[WP:STUB|stub]]", "unsourced": "Markin article as [[WP:Verifiability|unsoorced]]", "stub_and_unsourced": "Markin article as [[WP:Verifiability|unsoorced]] and [[WP:STUB|stub]]", "warning": "User warning: non-Scots content", "welcome_warning": "Walcome til Wikipedie! (non-Scots content in first edit)", "welcome": "Walcome, til the Wikipedie!", "language_report": "Updatin language report (remove fixed, add new)", "wikidata_report": "Updatin Wikidata report (remove fixed, add new)", "unsourced_report": "Updatin unsoorced report (remove fixed, add new)", "uncategorized_report": "Updatin uncategorised report (remove fixed, add new)",}REPORTS_ENABLED = TrueWIKIDATA_REPORTS_ENABLED = False UNCATEGORIZED_REPORTS_ENABLED = False UNSOURCED_REPORTS_ENABLED = TrueREPORTS_PAGE_WIKIDATA = f"User:{BOT_USERNAME}/Wikidata_report"REPORTS_PAGE_UNSOURCED = f"User:{BOT_USERNAME}/Unsourced_report"REPORTS_PAGE_UNCATEGORIZED = f"User:{BOT_USERNAME}/Uncategorized_report"REPORTS_COUNT_LIMIT = 100REPORTS_ARCHIVE_LIMIT = 700REPORTS_INTERVAL_HOURS = 12LANGUAGE_REPORTS_ENABLED = TrueLANGUAGE_REPORTS_PAGE = f"User:{BOT_USERNAME}/Language_report"LANGUAGE_REPORTS_COUNT_LIMIT = 100LANGUAGE_REPORTS_ARCHIVE_LIMIT = 400LANGUAGE_REPORTS_INTERVAL_HOURS = 24MAINTENANCE_TAGGING_ENABLED = TrueMAINTENANCE_TAGGING_INTERVAL_HOURS = 6MAINTENANCE_TAGGING_LIMIT = 10
ScotsBotdoes not create language content of any kind.It does not generate Scots, translate text, rewrite sentences, correct grammar, or “Scotsify” articles. The bot willonly replace words or headers if, and only if, a specific replacement has been explicitly authorised on-wiki inUser:BZPN/Whitelist.json.If a replacement is not listed and approved, the bot willnever modify the text.
The bot classifies article language using dictionary-based lexical comparison. The system does not attempt to judge dialects or stylistic variation and is intended only as a maintenance aid.
| Classification | Threshold | Action |
|---|---|---|
| English-only | ≥ 90% English | {{No Scots}} |
| English-heavy | 75-90% English | {{Fix Scots}} |
| English-mixed | 50% English | language reports mode only |
| Scots | ≥ 25% Scots | Eligible for normalization |
Thresholds are configurable but conservative by default.
All lexical replacements and header normalizations are controlled via an on-wiki JSON file:
This ensures full transparency and community oversight.
{ "lexical_replacements": [ { "find": "old_word", "replace": "new_word" } ], "header_replacements": { "See also": "See forbye" }, "allowed_templates": { "Infobox": ["name"] }, "features": { "replace_in_captions": false }}The ScotsBot generates a set of automated maintenance reports at regular intervals. These reports are intended to assist editors in identifying structural and content-related issues that are not handled automatically by the bot.
Reports are updated cyclically and published on subpages of the bot user space.
User:ScotsBot/Wikidata reportUser:ScotsBot/Unsourced reportUNSOURCED_MIN_SIZE<ref> tags detected{{Unsoorced}}User:ScotsBot/Uncategorized report[[Category:…]] links presentUser:ScotsBot/Language reportArchived report pages follow the naming pattern:User:ScotsBot/<Report_name>/Archive_<number>
The chart illustrates the approximate distribution of ScotsBot’s daily processing time.Language report generation is the most resource-intensive task, as it involves dictionary-based lexical analysis across large numbers of articles and can take up to two hours per cycle.
Approximate daily workload distribution of ScotsBot
The bot uses the following templates:
The bot's source code isavailable on GitHub. The bot runs on Wikimedia Cloud Services.