{
  "$schema": "https://kiri.atulpatare.in/schema/v1/sites.schema.json",
  "schemaVersion": 1,
  "configVersion": "2026.11.08-11",
  "sites": [
    {
      "id": "weebcentral",
      "name": "Weeb Central",
      "type": "manga",
      "language": "en",
      "baseUrl": "https://weebcentral.com/",
      "iconUrl": "https://weebcentral.com/static/images/apple-touch-icon.png",
      "urlPatterns": {
        "series": "^https://weebcentral\\.com/series/[A-Z0-9]+(/[^/?#]*)?/?$",
        "chapter": "^https://weebcentral\\.com/chapters/[A-Z0-9]+"
      },
      "selectors": {
        "title": {
          "css": "h1"
        },
        "cover": {
          "css": "meta[property=\"og:image\"]",
          "attr": "content"
        },
        "author": {
          "css": "a[href*=\"search?author=\"]"
        },
        "totalChapters": {
          "css": "#chapter-list span.grow > span",
          "regex": "([0-9]+(?:\\.[0-9]+)?)"
        },
        "lastChapterUpdated": {
          "css": "#chapter-list time",
          "attr": "datetime"
        },
        "status": {
          "css": "a[href*=\"included_status=\"]"
        },
        "description": {
          "css": "p.whitespace-pre-wrap"
        },
        "genres": {
          "css": "a[href*=\"included_tag=\"]",
          "mode": "list"
        }
      },
      "statusValues": {
        "ongoing": [
          "ongoing"
        ],
        "completed": [
          "complete"
        ]
      },
      "chapters": {
        "numberRegex": "Chapter ([0-9]+(?:\\.[0-9]+)?)",
        "seriesLink": {
          "css": "a.btn-secondary[href*=\"/series/\"]",
          "attr": "href"
        }
      }
    },
    {
      "id": "royalroad",
      "name": "Royal Road",
      "type": "novel",
      "language": "en",
      "baseUrl": "https://www.royalroad.com/",
      "iconUrl": "https://www.royalroad.com/icons/android-chrome-192x192.png?v=20200125",
      "render": "webview",
      "urlPatterns": {
        "series": "^https://www\\.royalroad\\.com/fiction/\\d+(/[^/?#]+)?/?$",
        "chapter": "^https://www\\.royalroad\\.com/fiction/\\d+/[^/?#]+/chapter/\\d+"
      },
      "selectors": {
        "title": {
          "css": "h1"
        },
        "cover": {
          "css": "meta[property=\"og:image\"]",
          "attr": "content"
        },
        "author": {
          "css": ".fic-header a[href^=\"/profile/\"]"
        },
        "totalChapters": {
          "css": "span.label.pull-right",
          "regex": "([0-9,]+)\\s+Chapters"
        },
        "rating": {
          "css": "meta[property=\"books:rating:value\"]",
          "attr": "content"
        },
        "status": {
          "css": ".fiction-info div.margin-bottom-10",
          "regex": "(ONGOING|COMPLETED|HIATUS|STUB|DROPPED)"
        },
        "description": {
          "css": ".description"
        },
        "genres": {
          "css": "span.tags a",
          "mode": "list"
        },
        "views": {
          "css": ".stats-content > div:nth-child(2) li:nth-child(2)"
        },
        "followers": {
          "css": ".stats-content > div:nth-child(2) li:nth-child(6)"
        },
        "ratingCount": {
          "css": ".stats-content > div:nth-child(2) li:nth-child(10)"
        },
        "length": {
          "css": ".stats-content > div:nth-child(2) li:nth-child(12)",
          "suffix": " pages"
        }
      },
      "statusValues": {
        "ongoing": [
          "ongoing"
        ],
        "completed": [
          "completed"
        ]
      },
      "chapters": {
        "numberRegex": "/chapter/\\d+/(\\d+)-",
        "seriesLink": {
          "css": "a.btn-block[href^=\"/fiction/\"]",
          "attr": "href"
        }
      }
    },
    {
      "id": "atsumaru",
      "name": "Atsumaru",
      "type": "manga",
      "language": "en",
      "baseUrl": "https://atsu.moe/",
      "iconUrl": "https://atsu.moe/favicon/apple-touch-icon.png",
      "render": "webview",
      "urlPatterns": {
        "series": "^https://atsu\\.moe/(manga|novel)/[A-Za-z0-9]+/?$",
        "chapter": "^https://atsu\\.moe/read/[A-Za-z0-9]+/[A-Za-z0-9]+"
      },
      "selectors": {
        "title": {
          "css": "h1"
        },
        "cover": {
          "css": "meta[property=\"og:image\"]",
          "attr": "content"
        },
        "author": {
          "css": "a[href*=\"type=Author\"]"
        },
        "totalChapters": {
          "css": "svg[data-icon=\"book\"] + span"
        },
        "rating": {
          "css": "svg[data-icon=\"star\"] + span"
        },
        "status": {
          "css": "a[href*=\"explore?status=\"]"
        },
        "description": {
          "css": "meta[property=\"og:description\"]",
          "attr": "content"
        },
        "genres": {
          "css": "a[href*=\"explore?genres=\"], a[href*=\"explore?tags=\"]",
          "mode": "list"
        }
      },
      "statusValues": {
        "ongoing": [
          "ongoing"
        ],
        "completed": [
          "completed"
        ]
      },
      "chapters": {
        "seriesLink": {
          "css": "a[href^=\"/manga/\"], a[href^=\"/novel/\"]",
          "attr": "href"
        }
      }
    },
    {
      "id": "mangaball",
      "name": "MangaBall",
      "type": "manga",
      "language": "en",
      "baseUrl": "https://mangaball.com/",
      "iconUrl": "https://mangaball.com/images/favicon.png",
      "render": "webview",
      "urlPatterns": {
        "series": "^https://mangaball\\.com/title-detail/[^/?#]+/?$",
        "chapter": "^https://mangaball\\.com/chapter-detail/"
      },
      "selectors": {
        "title": {
          "css": "h1"
        },
        "cover": {
          "css": "meta[property=\"og:image\"]",
          "attr": "content"
        },
        "totalChapters": {
          "css": "a[href*=\"chapter-detail\"]",
          "attr": "href",
          "regex": "[?&]chapter=([0-9.]+)"
        },
        "rating": {
          "css": "button[title^=\"Click to view rating\"] span"
        },
        "status": {
          "css": "strong.capitalize"
        },
        "description": {
          "css": "meta[property=\"og:description\"]",
          "attr": "content"
        },
        "genres": {
          "css": "a[href*=\"included_tags\"]",
          "mode": "list"
        }
      },
      "statusValues": {
        "ongoing": [
          "ongoing"
        ],
        "completed": [
          "completed"
        ]
      },
      "chapters": {
        "numberRegex": "[?&]chapter=([0-9.]+)",
        "seriesLink": {
          "css": "a[href*=\"/title-detail/\"]",
          "attr": "href"
        }
      }
    },
    {
      "id": "webnovel",
      "name": "Webnovel",
      "type": "novel",
      "language": "en",
      "baseUrl": "https://www.webnovel.com/",
      "iconUrl": "https://www.yueimg.com/en/favicon/favicon.d3f6a.ico",
      "render": "webview",
      "urlPatterns": {
        "series": "^https://(www|m)\\.webnovel\\.com/book/[^/?#]+/?$",
        "chapter": "^https://(www|m)\\.webnovel\\.com/book/[^/?#]+/\\d+"
      },
      "selectors": {
        "title": {
          "css": "h1"
        },
        "cover": {
          "css": "img[src*=\"/bookcover/\"]",
          "attr": "src",
          "regex": "^([^|]+)"
        },
        "author": {
          "css": "a[class*=\"NewBookInfo_author\"]",
          "regex": "by\\s+(.+)"
        },
        "totalChapters": {
          "css": "div[class*=\"BookContent_newChapter\"]",
          "regex": "([0-9,]+)\\s*Chapters"
        },
        "lastChapterUpdated": {
          "css": "div[class*=\"BookContent_chapterExtra\"]",
          "regex": "([0-9]+\\s*[a-z]+ ago)"
        },
        "canonicalUrl": {
          "css": "link[rel=\"canonical\"]",
          "attr": "href"
        },
        "description": {
          "css": "meta[property=\"og:description\"]",
          "attr": "content"
        },
        "genres": {
          "css": "a[href*=\"/tags/\"]",
          "mode": "list"
        },
        "views": {
          "css": "div[class*=\"Reward_item\"]",
          "regex": "Views\\s*([0-9.,]+[KkMmBb]?)"
        }
      },
      "chapters": {
        "numberRegex": "Chapter ([0-9]+(?:\\.[0-9]+)?)",
        "seriesUrlRegex": "^(https://[a-z]+\\.webnovel\\.com/book/\\d+)/\\d+"
      }
    },
    {
      "id": "mangadot",
      "name": "MangaDot",
      "type": "manga",
      "language": "en",
      "baseUrl": "https://mangadot.net/",
      "iconUrl": "https://mangadot.net/icon.png?v=2",
      "render": "webview",
      "selectors": {
        "title": {
          "css": "h1"
        },
        "cover": {
          "css": "img[src*=\"/uploads/thumbs/\"]",
          "attr": "src"
        },
        "totalChapters": {
          "css": "header p.flex-wrap",
          "regex": "([0-9,]+)\\s*ch\\b"
        },
        "rating": {
          "css": "header p.flex-wrap",
          "regex": "★\\s*([0-9.]+)"
        },
        "lastChapterUpdated": {
          "css": "header p.flex-wrap",
          "regex": "updated\\s+(\\S+)"
        },
        "status": {
          "css": "header[class*=\"grid-area:head\"]",
          "regex": "(Ongoing|Completed|Hiatus|Cancelled)"
        },
        "description": {
          "css": "meta[property=\"og:description\"]",
          "attr": "content"
        },
        "views": {
          "css": "header p.flex-wrap",
          "regex": "([0-9.,]+[kKmM]?)\\s*views"
        },
        "followers": {
          "css": "header p.flex-wrap",
          "regex": "([0-9.,]+[kKmM]?)\\s*tracked"
        },
        "ratingCount": {
          "css": "header p.flex-wrap",
          "regex": "★\\s*[0-9.]+\\s*\\(([0-9,]+)\\)"
        }
      },
      "urlPatterns": {
        "series": "^https://mangadot\\.net/manga/\\d+/?$",
        "chapter": "^https://mangadot\\.net/chapter/\\d+"
      },
      "statusValues": {
        "ongoing": [
          "ongoing"
        ],
        "completed": [
          "completed"
        ]
      },
      "chapters": {
        "numberRegex": "Ch\\. ([0-9]+(?:\\.[0-9]+)?)",
        "seriesLink": {
          "css": "a[href^=\"/manga/\"]",
          "attr": "href"
        }
      }
    },
    {
      "id": "mangadex",
      "name": "MangaDex",
      "type": "manga",
      "language": "en",
      "baseUrl": "https://mangadex.org/",
      "urlPatterns": {
        "series": "^https://mangadex\\.org/title/[0-9a-f-]{36}",
        "chapter": "^https://mangadex\\.org/chapter/[0-9a-f-]{36}",
        "seriesCanonical": "^(https://mangadex\\.org/title/[0-9a-f-]{36})"
      },
      "selectors": {
        "title": {
          "css": "meta[property=\"og:title\"]",
          "attr": "content",
          "regex": "^(.+?)(?:\\s+-\\s+MangaDex)?$"
        },
        "cover": {
          "css": "img[src*=\"/covers/\"]",
          "attr": "src"
        },
        "author": {
          "css": "a[id^=\"mobile_author\"]"
        },
        "totalChapters": {
          "css": "div.chapter-header span.font-bold",
          "regex": "Chapter ([0-9]+(?:\\.[0-9]+)?)"
        },
        "lastChapterUpdated": {
          "css": "time.whitespace-nowrap"
        },
        "rating": {
          "css": "span[title*=\"Bayesian\"]",
          "attr": "title",
          "regex": "^([0-9.]+)"
        },
        "status": {
          "css": "span.tag.dot",
          "regex": "(Ongoing|Completed|Hiatus|Cancelled)"
        },
        "description": {
          "css": "meta[property=\"og:description\"]",
          "attr": "content"
        },
        "genres": {
          "css": "a[href^=\"/tag/\"]",
          "mode": "list"
        }
      },
      "statusValues": {
        "ongoing": [
          "ongoing"
        ],
        "completed": [
          "completed"
        ]
      },
      "iconUrl": "https://mangadex.org/favicon.ico",
      "render": "webview",
      "chapters": {
        "numberRegex": "Chapter ([0-9]+(?:\\.[0-9]+)?)",
        "seriesLink": {
          "css": "a.reader--header-manga",
          "attr": "href"
        }
      }
    }
  ]
}
