Wikit GraphQL

Wikit GraphQL API:

https://wikit.unitreaty.org/apiv1/graphql

后室中文用 Wikit GraphQL API:
https://wikit.unitreaty.org/backrooms/apiv1/graphql

GraphQL是一种高效且高度可定制的API查询语言与运行时规范,通过单一端点对外提供结构化数据访问能力,即“所输入即所得”。Wikit GraphQL对Wikit从多个站点抓取并索引的数据进行整合与封装。用户可以基于Wikit GraphQL标准SDL文件所定义的规则1进行自由组合排列,Wikit将根据查询结构动态解析并返回对应的JSON结果。你可以自由地在Wikit GraphQL上使用GraphQL Playground并建立自己的项目。如有必要,请联系KakushiKakushi。Discord服务器于此处。下表中会列举一些常用的查询语法。

1.单页基本信息

示例值使用:

 query {
  article(wiki: "ubmh", page: "the-declaration-of-lie-downism") {
    title
    page_id
    rating
    comments
    author
    tags
    created_at
    lastmod
  }
}

返回:
{
  "data": {
    "article": {
      "title": "The declaration of Lie-downism(躺平主义宣言)",
      "page_id": 1437158456,
      "rating": 32,
      "comments": 17,
      "author": "RECQ",
      "tags": [
        "搬运",
        "精品"
      ],
      "created_at": "2022-11-14T23:27:48+00:00",
      "lastmod": "2025-08-14T09:28:14+00:00"
    }
  }
}

2.分页查询(基础)

query {
  articles(page: 1, pageSize: 10) {
    nodes {
      title
      wiki
      rating
    }
    pageInfo {
      total
      page
      pageSize
      hasNextPage
    }
  }
}

按照每页十条的大小,提取所有的页面,此时为第一页

3.按wiki过滤

示例值使用:

query {
  articles(wiki: ["lostmedia"], page: 1, pageSize: 10) {
    nodes {
      title
      rating
    }
    pageInfo {
      total
    }
  }
}

返回:
{
  "data": {
    "articles": {
      "nodes": [
        {
          "title": "地方台五十分钟/地方台三十分钟(部分发现的中央电视台纪录类节目,1989-2000年))",
          "rating": 0
        },
        {
          "title": "“此物出在浙江处州府青田县”(出处未知的画作;1857年之前)",
          "rating": 4
        },
        {
          "title": "点击(部分发现的马鞍山电视台电视节目;2004年)",
          "rating": 1
        },
        {
          "title": "标签申请",
          "rating": 0
        },
        {
          "title": "Bunbunmaru News Network(文文丸新闻网)(部分发现的YouTube频道视频;2021年)",
          "rating": 0
        },
        {
          "title": "Bunbunmaru News Network(文文丸新闻网)(部分发现的YouTube频道视频;2021年)",
          "rating": 0
        },
        {
          "title": "午夜伦敦(丢失的美国电影;1927年)",
          "rating": 0
        },
        {
          "title": "马自达牌汽车中文广告(部分发现的汽车电视广告;1984年)",
          "rating": 1
        },
        {
          "title": "木瓜木瓜(部分发现的国产动画;2010年)",
          "rating": 0
        },
        {
          "title": "“我也要死吗?”(来源确定的网络梗图;2020年)",
          "rating": 12
        }
      ],
      "pageInfo": {
        "total": 1604
      }

4.按作者过滤

示例值使用:

query {
  articles(author: "umou") {
    nodes {
      title
      rating
    }
  }
}

返回(截取):
{
  "data": {
    "articles": {
      "nodes": [
        {
          "wiki": "deep-forest-club",
          "page": "space:7344601",
          "title": "umou的空间页",
          "rating": 0
        },
        {
          "wiki": "deep-forest-club",
          "page": "gongque-0",
          "title": "宫阙-序章",
          "rating": 1
        },
        {
          "wiki": "deep-forest-club",
          "page": "mr-do",
          "title": "和雨宝大do特do",
          "rating": 8
        },
        {
          "wiki": "if-backrooms",
          "page": "author:umou",
          "title": "UMOU的杂鱼工作台",
          "rating": 1
        },
        {
          "wiki": "if-backrooms",
          "page": "level-xxx-n",
          "title": "Level XXX N",
          "rating": 5
        },
        {
          "wiki": "if-backrooms",
          "page": "if500mcmk-1234umouxuziqihaodemingzi",
          "title": "Level IF-500:渊逝遗城",
          "rating": 13
        },
...

5.标签过滤

5.1.包含指定标签(全包含)

示例值使用:

query {
  articles(includeTags: ["原创", "层级"]) {
    nodes {
      title
      tags
    }
  }
}

返回(截取):
{
  "data": {
    "articles": {
      "nodes": [
        {
          "title": "level-AS-604",
          "tags": [
            "原创",
            "反转",
            "层级",
            "层级意识",
            "怀旧",
            "生存难度不适用",
            "计算机"
          ]
        },
        {
          "title": "Level AS-397",
          "tags": [
            "原创",
            "层级",
            "恐怖",
            "悲剧",
            "生存难度待定",
            "神秘",
            "精神危害",
            "精神影响"
          ]
        },
        {
          "title": "Level AS-214",
          "tags": [
            "原创",
            "封闭性",
            "层级",
            "建筑",
            "生存难度其他",
            "神秘",
            "补给可能"
          ]
        },
        {
          "title": "Level AS-212",
          "tags": [
            "原创",
            "层级",
            "开阔性",
            "生存难度其他",
            "神秘",
            "荒漠",
            "返乡可能"
          ]
        },
        {
          "title": "Level As-170",
          "tags": [
            "原创",
            "多元难度",
            "层级",
            "开阔性",
            "生存难度死区"
          ]
        },
...
5.2.排除指定标签

示例值使用:

query {
  articles(excludeTags: ["原创"]) {
    nodes {
      title
      tags
    }
  }
}

返回(截取):
{
  "data": {
    "articles": {
      "nodes": [
        {
          "title": "2026三站新年联赛",
          "tags": [
            "2026新年联竞"
          ]
        },
        {
          "title": "fragment:level-as-397-4",
          "tags": []
        },
        {
          "title": "fragment:level-as-397-3",
          "tags": []
        },
        {
          "title": "fragment:level-as-397-2",
          "tags": []
        },
        {
          "title": "fragment:level-as-397-1",
          "tags": []
        },
        {
          "title": "fragment:level-as-397-0",
          "tags": []
        },
        {
          "title": "Level AS 266 孤寒之星",
          "tags": [
            "层级"
          ]
        },
        {
          "title": "Level AS-213 - "黯淡林地"",
          "tags": []
        },
        {
          "title": "Level AS Xs-49 - “妄乡地”",
          "tags": [
            "切行困难",
            "层级",
            "搬运",
            "新手专区",
            "生存难度死区"
          ]
        },
...

6.时间过滤

6.1创建时间范围

示例值使用:

query {
  articles(
    createdFrom: "2023-01-01"
    createdTo: "2023-12-31"
  ) {
    nodes {
      title
      created_at
    }
  }
}

返回(截取):
{
  "data": {
    "articles": {
      "nodes": [
        {
          "title": "组件:他站同投",
          "created_at": "2023-12-30T15:16:19+00:00"
        },
        {
          "title": "桥莫忘,莫失致你。",
          "created_at": "2023-12-30T06:00:40+00:00"
        },
        {
          "title": "Level AS-359",
          "created_at": "2023-12-29T14:53:17+00:00"
        },
        {
          "title": "Level AS-64 爱丽丝之箱庭",
          "created_at": "2023-12-29T13:32:58+00:00"
        },
        {
          "title": "Phenomenon AS-6",
          "created_at": "2023-12-28T15:17:19+00:00"
        },
...
6.2.更新时间范围

示例值使用:

query {
  articles(
    updatedFrom: "2023-01-01"
    updatedTo: "2023-12-31"
  ) {
    nodes {
      title
      lastmod
    }
  }
}

返回(截取):
{
  "data": {
    "articles": {
      "nodes": [
        {
          "title": "Level AS-64 爱丽丝之箱庭",
          "lastmod": "2023-12-29T15:56:22+00:00"
        },
        {
          "title": "Level AS-2(旧)",
          "lastmod": "2023-12-27T14:23:40+00:00"
        },
        {
          "title": "满天星",
          "lastmod": "2023-12-20T14:10:20+00:00"
        },
        {
          "title": "Level AS-23(旧)",
          "lastmod": "2023-12-18T14:59:41+00:00"
        },
...

7.标题关键词过滤

示例值使用:

query {
  articles(wiki: "lostmedia", titleKeyword: "Scratch", page: 1, pageSize: 10) {
    nodes {
      title
      url
      author
    }
    pageInfo {
      total
      page
      pageSize
      hasNextPage
    }
  }
}

返回:
{
  "data": {
    "articles": {
      "nodes": [
        {
          "title": "beijing97(北京97)(丢失的scratch项目;年份不明)",
          "url": "http://lostmedia.wikidot.com/deleted:beijing97",
          "author": "dead rat"
        },
        {
          "title": "Her Dreams(丢失的Scratch项目;)",
          "url": "http://lostmedia.wikidot.com/deleted:her-dreams",
          "author": "H_W"
        }
      ],
      "pageInfo": {
        "total": 2,
        "page": 1,
        "pageSize": 10,
        "hasNextPage": false
      }
    }
  }
}

8.组合过滤(高级)

示例值使用:

query {
  articles(
    wiki: ["ubmh"]
    includeTags: ["管理"]
    excludeTags: ["原创"]
    createdFrom: "2023-01-01"
    page: 1
    pageSize: 5
  ) {
    nodes {
      title
      rating
      tags
    }
    pageInfo {
      total
      hasNextPage
    }
  }
}

返回:
{
  "data": {
    "articles": {
      "nodes": [
        {
          "title": "黑市市民Rank排行榜",
          "rating": -1,
          "tags": [
            "管理"
          ]
        },
        {
          "title": "网站人数统计",
          "rating": 0,
          "tags": [
            "碎片",
            "管理"
          ]
        },
        {
          "title": "精品档案馆",
          "rating": 1,
          "tags": [
            "中心",
            "管理"
          ]
        },
        {
          "title": "用户信息页",
          "rating": 0,
          "tags": [
            "管理"
          ]
        },
        {
          "title": "精品内容部分",
          "rating": 0,
          "tags": [
            "碎片",
            "管理"
          ]
        }
      ],
      "pageInfo": {
        "total": 19,
        "hasNextPage": true
      }
    }
  }
}

9.指定wiki作者排行榜

9.1.按评分排行

示例值使用:

query {
  authorRanking(wiki: "ubmh", by: RATING) {
    rank
    name
    value
  }
}

返回(截取):
{
  "data": {
    "authorRanking": [
      {
        "rank": 1,
        "name": "Vodka Wells",
        "value": 334
      },
      {
        "rank": 2,
        "name": "HuanYu_BiN",
        "value": 216
      },
      {
        "rank": 3,
        "name": "jan Sino",
        "value": 190
      },
      {
        "rank": 4,
        "name": "Santles Bric",
        "value": 130
      },
      {
        "rank": 5,
        "name": "THEWESTSHELL",
        "value": 124
      },
      {
        "rank": 6,
        "name": "William Wells",
        "value": 121
      },
      {
        "rank": 7,
        "name": "E-Dream",
        "value": 81
      },
...
9.2.按评论数排行

示例值使用:

query {
  authorRanking(wiki: "ubmh", by: COMMENTS) {
    rank
    name
    value
  }
}

返回(截取):
{
  "data": {
    "authorRanking": [
      {
        "rank": 1,
        "name": "Vodka Wells",
        "value": 4926
      },
      {
        "rank": 2,
        "name": "jan Sino",
        "value": 640
      },
      {
        "rank": 3,
        "name": "HuanYu_BiN",
        "value": 389
      },
      {
        "rank": 4,
        "name": "William Wells",
        "value": 304
      },
      {
        "rank": 5,
        "name": "Luoyihua",
        "value": 212
      },
      {
        "rank": 6,
        "name": "Advancer",
        "value": 136
      },
      {
        "rank": 7,
        "name": "Santles Bric",
        "value": 110
      },
...

10.全wiki作者排行榜

10.1.按评分排行

示例值使用:

query {
  authorRanking(by: RATING) {
    rank
    name
    value
  }
}

返回(截取):
{
  "data": {
    "authorRanking": [
      {
        "rank": 1,
        "name": "Capybara13",
        "value": 1042
      },
      {
        "rank": 2,
        "name": "MCMK-1234",
        "value": 931
      },
      {
        "rank": 3,
        "name": "Lin Noel",
        "value": 672
      },
      {
        "rank": 4,
        "name": "Tengurthy Clotsfoot",
        "value": 604
      },
      {
        "rank": 5,
        "name": "JgPz E-100",
        "value": 592
      },
      {
        "rank": 6,
        "name": "severinesun",
        "value": 537
      },
      {
        "rank": 7,
        "name": "Dr Roger_F_XL",
        "value": 514
      },
...
10.2.按评论数排行

示例值使用:

query {
  authorRanking(by: COMMENTS) {
    rank
    name
    value
  }
}

返回(截取):
{
  "data": {
    "authorRanking": [
      {
        "rank": 1,
        "name": "Vodka Wells",
        "value": 5067
      },
      {
        "rank": 2,
        "name": "jan Sino",
        "value": 652
      },
      {
        "rank": 3,
        "name": "Migao_cat",
        "value": 413
      },
      {
        "rank": 4,
        "name": "H_W",
        "value": 411
      },
      {
        "rank": 5,
        "name": "luohaotian",
        "value": 393
      },
      {
        "rank": 6,
        "name": "HuanYu_BiN",
        "value": 389
      },
      {
        "rank": 7,
        "name": "severinesun",
        "value": 378
      },

11.指定wiki页面排行榜

11.1.按评分排行

示例值使用:

query {
  articleRanking(wiki: "ubmh", by: RATING) {
    rank
    wiki
    page
    title
    value
  }
}

返回(截取):
{
  "data": {
    "articleRanking": [
      {
        "rank": 1,
        "wiki": "ubmh",
        "page": "god-fsb",
        "title": "艾斯西皮中分封神榜",
        "value": 80
      },
      {
        "rank": 2,
        "wiki": "ubmh",
        "page": "maze",
        "title": "自定义迷宫生成器",
        "value": 61
      },
      {
        "rank": 3,
        "wiki": "ubmh",
        "page": "start",
        "title": "主页",
        "value": 58
      },
      {
        "rank": 4,
        "wiki": "ubmh",
        "page": "merry-christmas-wells",
        "title": "圣诞快乐,威尔斯先生",
        "value": 57
      },
      {
        "rank": 5,
        "wiki": "ubmh",
        "page": "0score",
        "title": "搬运0分页面参赛的小男孩",
        "value": 52
      },
...
11.2.按评论数排行

示例值使用:

query {
  articleRanking(wiki: "ubmh", by: COMMENTS) {
    rank
    wiki
    page
    title
    value
  }
}

返回(截取):
{
  "data": {
    "articleRanking": [
      {
        "rank": 1,
        "wiki": "ubmh",
        "page": "start",
        "title": "主页",
        "value": 3921
      },
      {
        "rank": 2,
        "wiki": "ubmh",
        "page": "deleted:template:r18",
        "title": "R18",
        "value": 141
      },
      {
        "rank": 3,
        "wiki": "ubmh",
        "page": "what-the-fucking-crazy",
        "title": "帮助手册",
        "value": 135
      },
      {
        "rank": 4,
        "wiki": "ubmh",
        "page": "system:join",
        "title": "加入网站",
        "value": 117
      },
      {
        "rank": 5,
        "wiki": "ubmh",
        "page": "k",
        "title": "查询编辑次数和发帖数量",
        "value": 116
      },
...

12.全wiki页面排行榜

12.1.按评分排行

示例值使用:

query {
  articleRanking(by: RATING) {
    rank
    wiki
    title
    value
  }
}

返回(截取):
{
  "data": {
    "articleRanking": [
      {
        "rank": 1,
        "wiki": "scp-wiki-cloud",
        "title": "林诺的烂梗讲座",
        "value": 359
      },
      {
        "rank": 2,
        "wiki": "scp-wiki-cloud",
        "title": "已归档林诺的烂梗讲座",
        "value": 215
      },
      {
        "rank": 3,
        "wiki": "scp-wiki-cloud",
        "title": "写作指导",
        "value": 210
      },
      {
        "rank": 4,
        "wiki": "backroom-wiki-cn",
        "title": "煮液",
        "value": 181
      },
      {
        "rank": 5,
        "wiki": "scp-wiki-cloud",
        "title": "SCP基金会云国分部改革计划中心页",
        "value": 180
      },
...
12.2.按评论数排行

示例值使用:

query {
  articleRanking(by: COMMENTS) {
    rank
    wiki
    title
    value
  }
}

返回(截取):
{
  "data": {
    "articleRanking": [
      {
        "rank": 1,
        "wiki": "ubmh",
        "title": "主页",
        "value": 3921
      },
      {
        "rank": 2,
        "wiki": "scp-wiki-cloud",
        "title": "",
        "value": 419
      },
      {
        "rank": 3,
        "wiki": "scp-wiki-cloud",
        "title": "非官方水楼",
        "value": 159
      },
      {
        "rank": 4,
        "wiki": "backroom-wiki-cn",
        "title": "煮液",
        "value": 147
      },
      {
        "rank": 5,
        "wiki": "ubmh",
        "title": "R18",
        "value": 141
      },
...

13.指定页面的排名

13.1.指定页面在单wiki排名

示例值使用:

query {
  articleWikiRank(
    wiki: "ubmh"
    page: "scp-001"
    by: RATING
  ) {
    rank
    title
    value
  }
}

返回:
{
  "data": {
    "articleWikiRank": {
      "rank": 1,
      "title": "艾斯西皮中分封神榜",
      "value": 80
    }
  }
}
13.2.指定页面在全wiki排行

示例值使用:

query {
  articleGlobalRank(
    wiki: "scp-wiki-cloud"
    page: "how-to-write-an-scp-cloud"
    by: RATING
  ) {
    rank
    title
    value
  }
}

返回:
{
  "data": {
    "articleWikiRank": {
      "rank": 3,
      "title": "写作指导",
      "value": 210
    }
  }
}

14.用户在指定wiki的排名

示例值使用:

query {
  authorWikiRank(
    wiki: "ubmh"
    name: "Kakushi"
    by: RATING
  ) {
    rank
    name
    value
  }
}

返回:
{
  "data": {
    "authorWikiRank": {
      "rank": 133,
      "name": "Kakushi",
      "value": 0
    }
  }
}

15.用户在全wiki的排名

示例值使用:

query {
  authorGlobalRank(
    name: "Kakushi"
    by: RATING
  ) {
    rank
    name
    value
  }
}

返回:
{
  "data": {
    "authorGlobalRank": {
      "rank": 838,
      "name": "Kakushi",
      "value": 4
    }
  }
}

16.全wiki标签排行榜

示例值使用:

query {
  tagRanking {
    rank
    name
    value
  }
}

返回(截取):
{
  "data": {
    "tagRanking": [
      {
        "rank": 1,
        "name": "原创",
        "value": 6322
      },
      {
        "rank": 2,
        "name": "层级",
        "value": 2311
      },
      {
        "rank": 3,
        "name": "scp",
        "value": 1589
      },
      {
        "rank": 4,
        "name": "故事",
        "value": 1423
      },
      {
        "rank": 5,
        "name": "搬运",
        "value": 791
      },
...

17.指定wiki标签排行榜

示例值使用:

query {
  tagRanking(wiki: "ubmh") {
    rank
    name
    value
  }
}

返回(截取):
{
  "data": {
    "tagRanking": [
      {
        "rank": 1,
        "name": "搬运",
        "value": 479
      },
      {
        "rank": 2,
        "name": "实用性",
        "value": 196
      },
      {
        "rank": 3,
        "name": "娱乐",
        "value": 173
      },
      {
        "rank": 4,
        "name": "原创",
        "value": 136
      },
      {
        "rank": 5,
        "name": "抽象",
        "value": 126
      },
...

18.组合查询(一次请求多个数据)

示例值使用:

query {
  topAuthors: authorRanking(wiki: "ubmh", by: RATING) {
    rank
    name
    value
  }

  topPages: articleRanking(wiki: "ubmh", by: RATING) {
    rank
    title
    value
  }

  tagStats: tagRanking(wiki: "ubmh") {
    rank
    name
    value
  }
}

19.文章当前投票快照

查询某篇文章当前所有投票者及其票值。已注销账号的用户名显示为 null。

示例值使用:

query {
  articleVoteSnapshot(wiki: "scr-wiki", page: "the-outliers-scr-1") {
    uid
    username
    vote
  }
}

返回:
{
  "data": {
    "articleVoteSnapshot": [
      {
        "uid": "5713128",
        "username": "Brella",
        "vote": 1
      },
      {
        "uid": "6449508",
        "username": "Grammar Study",
        "vote": 1
      },
      {
        "uid": "7198635",
        "username": "Oscar168",
        "vote": 1
      },
      {
        "uid": "7865818",
        "username": "stay_in_bed",
        "vote": 1
      },
      {
        "uid": "5933895",
        "username": "Tokyovania",
        "vote": 1
      },
      {
        "uid": "6083676",
        "username": "W Kouki",
        "vote": 1
      },
      {
        "uid": "7307869",
        "username": null,
        "vote": 1
      }
    ]
  }
}

其中 vote 为 1 表示正票,-1 表示负票。username 为 null 表示该账号已注销。

20.按时间范围筛选投票事件

查询某篇文章在指定时间段内发生的投票变化事件,from 和 to 均为 ISO 8601 格式,可只传其中一个。

20.1.指定时间范围

示例值使用:

query {
  articleVoteEvents(
    wiki: "scr-wiki"
    page: "the-outliers-scr-1"
    from: "2026-01-01T00:00:00Z"
    to: "2026-12-31T23:59:59Z"
  ) {
    uid
    username
    old
    new
    type
    time
  }
}

返回(截取):
{
  "data": {
    "articleVoteEvents": [
      {
        "uid": "5713128",
        "username": "Brella",
        "old": null,
        "new": 1,
        "type": "new",
        "time": "2026-05-05T09:52:34.377611+00:00"
      },
      {
        "uid": "6449508",
        "username": "Grammar Study",
        "old": null,
        "new": 1,
        "type": "new",
        "time": "2026-05-05T09:52:34.377611+00:00"
      },
      {
        "uid": "7307869",
        "username": null,
        "old": null,
        "new": 1,
        "type": "new",
        "time": "2026-05-05T09:52:34.377611+00:00"
      }
    ]
  }
}

事件类型说明:

  • type 为 new:首次投票,old 为 null
  • type 为 cancel:撤票,new 为 null
  • type 为 change:改票,old 和 new 均有值
  • type 为 rename:用户改名,old 和 new 均为 null,改名前的用户名记录在 old_name 字段,username 为新用户名
20.2.只指定起始时间

示例值使用:

query {
  articleVoteEvents(
    wiki: "scr-wiki"
    page: "the-outliers-scr-1"
    from: "2026-05-01T00:00:00Z"
  ) {
    uid
    username
    type
    time
  }
}

21.按投票类型筛选投票者

查询某篇文章中持有正票、负票或已撤票的用户列表,同时返回最后一次相关事件的时间。

21.1.正票用户

示例值使用:

query {
  articleVotersByType(
    wiki: "scr-wiki"
    page: "the-outliers-scr-1"
    filter: POSITIVE
  ) {
    uid
    username
    vote
    time
  }
}

返回:
{
  "data": {
    "articleVotersByType": [
      {
        "uid": "5713128",
        "username": "Brella",
        "vote": 1,
        "time": "2026-05-05T09:52:34.377611+00:00"
      },
      {
        "uid": "6449508",
        "username": "Grammar Study",
        "vote": 1,
        "time": "2026-05-05T09:52:34.377611+00:00"
      }
    ]
  }
}
21.2.负票用户

示例值使用:

query {
  articleVotersByType(
    wiki: "scr-wiki"
    page: "the-outliers-scr-1"
    filter: NEGATIVE
  ) {
    uid
    username
    vote
    time
  }
}
21.3.已撤票用户

曾经投过票但当前已不在投票列表中的用户,vote 固定为 0,time 为其最后一次事件时间。

示例值使用:

query {
  articleVotersByType(
    wiki: "scr-wiki"
    page: "the-outliers-scr-1"
    filter: REVOKED
  ) {
    uid
    username
    vote
    time
  }
}

22.某用户投过票的作者榜

查询某用户曾对哪些作者投过票,按正票数从多到少排列。可按wiki筛选,不传则统计全站。

22.1.全站作者榜

示例值使用:

query {
  userVotedAuthorRank(uid: "5713128") {
    rank
    name
    positiveVotes
    negativeVotes
    totalScore
  }
}

返回(截取):
{
  "data": {
    "userVotedAuthorRank": [
      {
        "rank": 1,
        "name": "The Outliers",
        "positiveVotes": 3,
        "negativeVotes": 0,
        "totalScore": 3
      },
      {
        "rank": 2,
        "name": "Vodka Wells",
        "positiveVotes": 2,
        "negativeVotes": 0,
        "totalScore": 2
      },
      {
        "rank": 3,
        "name": "HuanYu_BiN",
        "positiveVotes": 1,
        "negativeVotes": 1,
        "totalScore": 0
      }
    ]
  }
}
22.2.指定wiki作者榜

示例值使用:

query {
  userVotedAuthorRank(uid: "5713128", wiki: "scr-wiki") {
    rank
    name
    positiveVotes
    negativeVotes
    totalScore
  }
}

23.某用户最近的投票记录

查询某用户最近发生的投票事件,按时间倒序排列。可按wiki筛选,可通过limit控制返回条数(默认 20)。

23.1.全站最近投票

示例值使用:

query {
  userRecentVotes(uid: "5713128", limit: 5) {
    wiki
    page
    title
    old
    new
    type
    time
  }
}

返回:
{
  "data": {
    "userRecentVotes": [
      {
        "wiki": "scr-wiki",
        "page": "the-outliers-scr-1",
        "title": "The Outliers的艺术作品-SCR系列1",
        "old": null,
        "new": 1,
        "type": "new",
        "time": "2026-05-05T09:52:34.377611+00:00"
      },
      {
        "wiki": "ubmh",
        "page": "god-fsb",
        "title": "艾斯西皮中分封神榜",
        "old": 1,
        "new": -1,
        "type": "change",
        "time": "2025-12-01T14:22:10.000000+00:00"
      }
    ]
  }
}
23.2.指定wiki最近投票

示例值使用:

query {
  userRecentVotes(uid: "5713128", wiki: "scr-wiki", limit: 10) {
    wiki
    page
    title
    type
    time
  }
}

24.某作者被哪些用户投过票

查询某位作者旗下所有文章的投票者汇总,按正票数从多到少排列,同时列出每位投票者具体投过该作者哪些文章。可按wiki筛选,不传则统计全站。

24.1.全站投票者

示例值使用:

query {
  authorVoters(name: "The Outliers") {
    uid
    username
    positiveVotes
    negativeVotes
    totalScore
    articles {
      wiki
      page
      title
      vote
    }
  }
}

返回(截取):
{
  "data": {
    "authorVoters": [
      {
        "uid": "5713128",
        "username": "Brella",
        "positiveVotes": 1,
        "negativeVotes": 0,
        "totalScore": 1,
        "articles": [
          {
            "wiki": "scr-wiki",
            "page": "the-outliers-scr-1",
            "title": "The Outliers的艺术作品-SCR系列1",
            "vote": 1
          }
        ]
      },
      {
        "uid": "7307869",
        "username": null,
        "positiveVotes": 1,
        "negativeVotes": 0,
        "totalScore": 1,
        "articles": [
          {
            "wiki": "scr-wiki",
            "page": "the-outliers-scr-1",
            "title": "The Outliers的艺术作品-SCR系列1",
            "vote": 1
          }
        ]
      }
    ]
  }
}

username 为 null 表示该账号已注销。

24.2.指定wiki投票者

示例值使用:

query {
  authorVoters(name: "The Outliers", wiki: "scr-wiki") {
    uid
    username
    positiveVotes
    totalScore
  }
}

Wikit GraphQL标准SDL文件

enum RankingField {
  RATING
  COMMENTS
}

enum VoteFilter {
  POSITIVE
  NEGATIVE
  REVOKED
}

type Article {
  wiki: String
  page: String
  page_id: Int
  title: String
  url: String
  rating: Float
  upvotes: Int
  downvotes: Int
  rating_votes: Int
  comments: Int
  author: String
  author_id: Int
  tags: [String]
  created_at: String
  lastmod: String
}

type PageInfo {
  total: Int
  page: Int
  pageSize: Int
  hasNextPage: Boolean
}

type ArticleConnection {
  nodes: [Article]
  pageInfo: PageInfo
}

type RankingEntry {
  rank: Int
  name: String
  wiki: String
  page: String
  title: String
  value: Float
}

type VoteSnapshotEntry {
  uid: String
  username: String
  vote: Int
}

type VoteEvent {
  uid: String
  username: String
  old: Int
  new: Int
  old_name: String
  type: String
  time: String
}

type VoteByTypeEntry {
  uid: String
  username: String
  vote: Int
  time: String
}

type UserAuthorRankEntry {
  rank: Int
  name: String
  positiveVotes: Int
  negativeVotes: Int
  totalScore: Int
}

type UserRecentVote {
  wiki: String
  page: String
  title: String
  url: String
  uid: String
  username: String
  old: Int
  new: Int
  old_name: String
  type: String
  time: String
}

type VoterArticleRef {
  wiki: String
  page: String
  title: String
  vote: Int
}

type AuthorVoterEntry {
  uid: String
  username: String
  positiveVotes: Int
  negativeVotes: Int
  totalScore: Int
  articles: [VoterArticleRef]
}

type Query {
  article(
    wiki: String
    page: String
    page_id: String
  ): Article

  articles(
    wiki: [String]
    titleKeyword: String
    author: String
    includeTags: [String]
    excludeTags: [String]
    createdFrom: String
    createdTo: String
    updatedFrom: String
    updatedTo: String
    page: Int
    pageSize: Int
    page_id: String
  ): ArticleConnection

  authorRanking(
    wiki: String
    by: RankingField!
  ): [RankingEntry]

  articleRanking(
    wiki: String
    by: RankingField!
  ): [RankingEntry]

  authorWikiRank(
    wiki: String!
    name: String!
    by: RankingField!
  ): RankingEntry

  authorGlobalRank(
    name: String!
    by: RankingField!
  ): RankingEntry

  tagRanking(
    wiki: String
  ): [RankingEntry]

  articleWikiRank(
    wiki: String!
    page: String!
    by: RankingField!
  ): RankingEntry

  articleGlobalRank(
    wiki: String!
    page: String!
    by: RankingField!
  ): RankingEntry

  articleVoteSnapshot(
    wiki: String!
    page: String!
  ): [VoteSnapshotEntry]

  articleVoteEvents(
    wiki: String!
    page: String!
    from: String
    to: String
  ): [VoteEvent]

  articleVotersByType(
    wiki: String!
    page: String!
    filter: VoteFilter!
  ): [VoteByTypeEntry]

  userVotedAuthorRank(
    uid: String!
    wiki: String
  ): [UserAuthorRankEntry]

  userRecentVotes(
    uid: String!
    wiki: String
    limit: Int
  ): [UserRecentVote]

  authorVoters(
    name: String!
    wiki: String
  ): [AuthorVoterEntry]
}
api
©️2025 Wikit