机器人
阅读
2026-04-04更新
最新编辑:亚衣琴
阅读:
更新日期:2026-04-04
最新编辑:亚衣琴
机器人是指通过程序自动操作 Wiki 的脚本或应用。它们可以帮你批量编辑页面、上传文件、整理分类,把你从重复劳动里解放出来。
在 BWiki 上写机器人首选的两条路线:
- 浏览器里的机器人(JavaScript +
mw.Api()):无需安装,控制台直接跑,适合一次性/临时性任务 - 独立的机器人程序(比如 Python、Node.js):需要本地环境,适合复杂的批量操作
一句话说清楚
机器人 = 代码 + API。
BWiki 基于 MediaWiki,提供了完整的 API 接口 https://wiki.biligame.com/要操作的wiki/api.php。
比如对于本Wiki 就是 https://wiki.biligame.com/tools/api.php
直接访问这个URL,就能看到其文档,不过还是推荐用现成的库,而不是按照文档自己拼接HTTP请求。
你只需要:
- 拿到操作权限(浏览器路线自动复用登录态,本地路线需要提供Cookie
SESSDATA) - 调用 API 做你想做的事(读页面、写页面、传文件……)
- 控制好频率,别给服务器造成压力
下面两条路线会分别告诉你具体怎么做,你也可以自行去查看API文档。
API是什么
所有机器人背后都是同一个东西:MediaWiki API。你可以把它理解成 Wiki 的“程序化操作面板”——页面上能做的每一件事(读页面、写页面、上传文件、查分类……),几乎都能通过 API 用代码完成。
比如 tools wiki 的 API 就是 https://wiki.biligame.com/tools/api.php
它能做什么?
打开 api.php 你会看到一长串参数,不用怕——你不需要全看懂。只需要知道几个大方向:
- 读数据(
action=query):获取页面内容、分类成员、图片信息、用户贡献……几乎所有“查”的事情都在这里 - 写数据(
action=edit/upload/move等):编辑页面、上传文件、移动页面、保护页面…… - 元信息(
action=query&meta=):获取站点配置、当前用户信息、令牌(编辑需要它) - 扩展功能:SMW查询(
action=ask)、模板展开(action=expandtemplates)、解析 wikitext(action=parse)……
不用记,知道“有这东西”就行。真要用的时候,去问AI、查官方文档或者抄现成的示例。一般会通过现成的库调用,不需要自己拼接HTTP请求。
接下来的两条路线,就是「怎么在代码里用这些 API」的具体方式。
路线A:浏览器里的机器人
适合场景:临时想批量改点东西、快速查数据、不想折腾编程环境,AI可以快速帮你写。直接在浏览器控制台(F12)里运行,所见即所得。
由于是在浏览器控制台内运行,因此与wiki内不同,可以使用ES6语法。
什么是 mw.Api()
BWiki 基于 MediaWiki,内置了一个非常好用的 API 封装:mw.Api()。它不需要额外安装,也不需要处理登录——因为你已经在浏览器里登录了,它会自动复用当前会话。
使用前需要先加载这个模块:
mw.loader.using('mediawiki.api').then(async () => {
const api = new mw.Api();
// 你的代码写在这里
});
示例:获取当前页面的内容
打开任何一个 BWiki 页面,按 F12 进入控制台,粘贴以下代码试试:
mw.loader.using('mediawiki.api').then(async () => {
const api = new mw.Api();
api.get({
action: 'query',
titles: mw.config.get('wgPageName'),
prop: 'revisions',
rvprop: 'content',
formatversion: '2',
}).then(({ query: { pages: [{ revisions: [{ content }] }] } }) => {
console.log(`页面内容:${content}`);
},
);
});
常用操作
这里列几个最常见的需求。所有示例都可以直接复制到控制台运行。
读取某个页面的内容
mw.loader.using('mediawiki.api').then(async () => {
const api = new mw.Api();
api.get({
action: 'query',
titles: '沙盒', // 把这里改成你要读取的页面标题
prop: 'revisions',
rvprop: 'content',
formatversion: '2',
}).then(({ query: { pages: [{ revisions: [{ content }] }] } }) => {
console.log(`页面内容:${content}`);
},
);
});
编辑一个页面
mw.loader.using('mediawiki.api').then(async () => {
const api = new mw.Api();
api.postWithToken('csrf', {
action: 'edit',
title: '沙盒',
text: '这是机器人写入的新内容', // 新内容
summary: '机器人测试编辑', // 编辑摘要
}).then(console.log('编辑成功')).catch(error => console.log(`编辑失败:${error}`));
});
获取某个分类下的所有页面
mw.loader.using('mediawiki.api').then(async () => {
const api = new mw.Api();
const {
query: { categorymembers },
} = await api.post({
action: 'query',
format: 'json',
list: 'categorymembers',
cmtitle: '分类:文档', // 分类名
cmprop: 'title',
cmlimit: 'max',
});
for (const { title } of categorymembers) {
console.log(title);
}
});
浏览器路线的局限
- 控制台脚本页面刷新即丢,适合一次性任务。可以本地保存脚本方便重复使用。
- 不适合上传文件(浏览器限制)、不适合跑定时任务。
路线B:独立的机器人程序
适合场景:批量处理几百个页面、上传/下载文件、跑定时任务、需要操作数据模块。
在 AI 的辅助下,任何语言都能很方便地通过现成的 Wiki 库来编辑 Wiki。下面重点介绍 Python 和 Node.js 两条主流路径。
通用准备工作:获取 SESSDATA
独立程序不能复用浏览器的登录态,需要手动提供 Cookie 中的 SESSDATA。
- 在浏览器中登录你的 BWiki 账号
- 按 F12 打开开发者工具 → 「Application」/「存储」标签页 → 「Cookies」 → 找到
https://wiki.biligame.com - 复制
SESSDATA的值(一串字母数字组合)
注意:SESSDATA 相当于密码,不要提交到公开代码仓库。
Python 路线
常用库:
mwclient:轻量,适合大多数编辑任务pymediawiki:对语义媒体箱(SMW)支持更好requests:直接调用 API,更灵活
参见:
Node.js 路线
Node.js 同样非常适合编写独立机器人,尤其是当你的团队主要使用 JavaScript/TypeScript 时。
常用库:
mwn:功能最完整的 MediaWiki API 封装,支持 TypeScriptmwbot:轻量级wiki-saikou:与原版new mw.Api()非常相似的 API 请求封装
路线对比
| 对比项 | JS + mw.Api() |
Python + mwclient | Node.js |
|---|---|---|---|
| 环境要求 | 浏览器 | 需要安装 Python | 需要安装 Node.js |
| 登录方式 | 自动复用当前登录态 | 需要手动提供 SESSDATA |
需要手动提供 SESSDATA 或密码
|
| 适合场景 | 一次性脚本、快速验证 | 批量任务、定时任务、文件操作 | 批量任务、TypeScript 项目、与前端同语言 |
| 文件上传 | 不支持(浏览器限制) | 支持 | 支持 |
| 学习曲线 | 低(控制台直接跑) | 中(需安装和配置) | 中(需安装和配置) |
| 典型用途 | 批量改文字、查数据 | 上传图片、维护数据模块、跑定时机器人 | 复杂机器人、全栈项目统一语言 |
机器人礼仪与注意事项
无论你用哪条路线,都请遵守以下规则,做一个负责任的机器人主人:
- 先测试,后批量:先在 1-2 个页面上跑通,确认逻辑正确再扩大到全站。
- 使用批量操作:API 支持一次性获取列表(如
list=categorymembers),不要用循环发几十次单独请求。 - 适当缓存:像分类成员列表、所有页面列表这类数据,可以存下来重复用,不需要每次跑都重新拉。
- 设置身份标识:如果用 Python 或 Node.js,建议设置
User-Agent带上你的联系方式(如编辑群昵称),方便 BWiki 官方或其他人联系你。 - 控制频率:避免短时间内大量并发请求。
延伸阅读
- MediaWiki Action API 官方文档
- MediaWiki Frontend API
- mwclient 官方文档
- mwn (Node.js) GitHub
- MediaWiki API 官方示例(多语言)
- Nemo2011/bilibili-api 用 Python 写的调用B站各种API的库

沪公网安备 31011002002714 号