🌐 Supported Languages

δΈ­ζ–‡

English

OtakuWorld

Build Status Build Status Build Status

Discord Link There's a discord now!!! This is something that will probably be changed and modified since it's the first time I've done this.

For the nightly release, go here

A combined version of my MangaWorld and AnimeWorld apps. This was created because there were a ton of shared elements between the two apps so I combined them, allowing two separate apps but a lot of the same base logic.

These apps do not contain ANY sources themselves. In order to pull sources, the apps do contain some default sources.

Right now, we do support cloud syncing via Firebase, however, that will be going away soon. We are making an alternative way that requires some manual configuration. Using OtakuWorld will allow you to setup a manual configuration! A server is required, fortunately, we have made a basic server that will only work on a local network. Help wanted to help set up a more solid solution!

For MangaWorld: Any sources that work with Mihon will work with MangaWorld...After the bridge is installed.

For AnimeWorld: Any sources that work with Aniyomi will work with AnimeWorld...After the bridge is installed.

Contents

Latest Release

Screenshots

MangaWorld

AnimeWorld

AnimeWorldTV

NovelWorld

Otaku Manager

Features

Shared Features

AnimeWorld

AnimeWorldTV

MangaWorld

NovelWorld

Otaku Manager

Instructions to Install/Update AnimeWorldTV

  1. Download animeworldtv-release.apk

If using adb:

adb install animeworldtv-release.apk

If not using adb:

  1. Follow Android Authority's steps

Building Locally

Be sure to change the build variant to a noFirebase variant. Other than that, nothing needs to change to run/build locally!

Issues

If you run into any issues, please create an issue request with the following details:

Pull Requests

If you want to add a new source or have a change that might make the app better

Disclaimer: I am not affiliated with Tachiyomi app or any fork hosted on GitHub.

Custom Web Scraper

Overview

The :kmpuiviews:koogintegration:customscraper module provides an on-demand HTML scraping pipeline that extracts manga image URLs and anime video stream URLs from any public webpage using an on-device LLM agent.

Architecture Flow

WebScraper.scrape(url)
  └─ Ktor HTTP GET β†’ raw HTML
       └─ HtmlSanitizer β†’ stripped HTML (≀ 8,000 chars)
            └─ LlmMediaExtractor (Koog AIAgent)
                 └─ CustomScrapeKmpChapterModel(urls=[...])

Supported Use Cases

Use Case What it extracts
Manga chapter page All <img> src, data-src, data-lazy-src URLs (page images)
Anime episode page All <video>, <source> URLs and .mp4 / .m3u8 JS variables

Limitations

Data Model

@Serializable
data class CustomScrapeKmpChapterModel(
    val urls: List<String>,  // extracted media URLs; empty on failure
)

Usage

// Obtain executor + model from your AgentMaker (or any Koog LLM setup):
val executor = MultiLLMPromptExecutor(agentInfo.llmClient)
val model = agentInfo.model

val scraper = WebScraper(executor = executor, model = model)
val result = scraper.scrape("https://example.com/manga/chapter-1")
result.urls.forEach { println(it) }

Technologies

Technology Role
Kotlin Multiplatform Android + JVM Desktop targets
Ktor HTTP client (OkHttp engine on both platforms)
Koog LLM agent framework for structured JSON extraction
kotlinx.serialization JSON deserialization of CustomScrapeKmpChapterModel