Tachiyomi/Mihon extension repository for personal use, based on the Keiyoushi build infrastructure.
| Extension | Language | Site | Status |
|---|---|---|---|
| Comix | All | comix.to | Working (with modern Cloudflare bypass) |
| ManhuaRMTL | English | manhuarmtl.com | Working (with OCR text overlay) |
| Kagane | English | kagane.to | Working (integrity-token flow + CF bypass) |
| Atsumaru | English | atsu.moe | Working (custom JSON API) |
| MKissa | English | mkissa.to | Browse/search/details only (see below) |
MKissa note: MKissa gates chapter images behind a rotating anti-bot token generated by their own JavaScript (explicitly hardened against Tachiyomi-style scraping). Browsing, search, details and the chapter list work; opening a chapter asks you to read on the site for now.
To use this repo in Mihon, add:
https://raw.githubusercontent.com/marbou92/MHRepo/main/repo.json
- Reverse-engineered API with request signing and response decryption
- Modern Cloudflare bypass — browser-grade fingerprint headers (
sec-fetch-*,sec-ch-ua*client hints derived from the WebView user agent), WebView cookie sync (cf_clearance), and smart retry withRetry-Aftersupport on CF block responses - Image descrambling for tile-scrambled pages
- 10 extension settings (content rating, deduplication, score display, etc.)
- Comix-style description format with stars and bold info line
- Madara-based theme with custom MRM selectors
- OCR text overlay — burns English MTL text onto raw images (the site serves raw images; English is a JS overlay fetched from
fetch-ocr.php) - Toggle between English (MTL overlay) and Raw images in settings
- NSFW content filter (hide/show adult content)
- Comix-style description format with stars and bold info line
- Custom filters: genres (include/exclude), status, sort, author, artist, release year
- Komga-fork JSON API (
/api/v2) with the short-lived integrity token flow for chapter manifests - Same modern Cloudflare bypass as Comix (the whole domain is behind a managed challenge)
- Transparent page-token refresh when the CDN answers 401/403/507
- Data saver support
- Comix-style settings (content rating, blocked genres, deduplication, alt names, extra info, tags) and description format
- Custom JSON API:
home2browse endpoints + Typesense search +/api/manga/pagedetails - Genre/status/type/content-rating filters, sort options
- Comix-style settings (content rating, default types, blocked genres, deduplication, alt names, extra info, tags, score position) and description format
- GraphQL persisted queries (
api.mkissa.net) for popular/trending/search/details - Comix-style settings (content rating, blocked genres, alt names, extra info, tags, score position) and description format
- Chapter images are intentionally not fetchable (anti-bot token, see note above)
-
GitHub Secrets (in this repo's Settings → Secrets and variables → Actions):
SIGNING_KEY— base64-encoded.jkskeystore fileKEY_STORE_PASSWORD— keystore passwordALIAS— key alias nameKEY_PASSWORD— key passwordREPO_PAT— GitHub PAT with write access tomarbou92/MHRepoSIGNING_FINGERPRINT_MANUAL— SHA-256 fingerprint of your signing key (for cleanup mode)
-
To get the signing fingerprint:
keytool -list -v \ -keystore signingkey.jks \ -storepass "YOUR_KEYSTORE_PASSWORD" \ -alias "YOUR_ALIAS" \ -keypass "YOUR_KEY_PASSWORD" \ | grep "SHA256:"
- Make your changes to the extension source code
- Bump
versionCodein the extension'sbuild.gradle.kts - Commit and push to
main - Go to Actions → Release & Publish → Run workflow
- Select
publishmode and run
The workflow will:
- Build signed release APKs for all extensions in
settings.gradle.kts - Compute the signing key fingerprint
- Publish APKs, JARs, icons, and protobuf index (
index.pb) to MHRepo - Purge the jsDelivr CDN cache
If you rename or move an extension (e.g., from src/all/ to src/en/), the old entry stays in MHRepo's index. To clean up:
- Go to Actions → Release & Publish → Run workflow
- Select
cleanup-dry-runmode first to preview what will be deleted - If correct, run again with
cleanupmode to actually delete
MHExtensions/
├── .github/
│ ├── scripts/
│ │ ├── publish-repo.py # Publish & cleanup script (protobuf-based)
│ │ ├── index.proto # Protobuf schema for Mihon v2 index
│ │ └── index.min.json # Static legacy marker file
│ └── workflows/
│ └── release_publish.yml # Build + publish + cleanup workflow
├── core/ # Shared library code
├── compiler/ # KSP annotation processor
├── lib/ # Shared libraries (cryptoaes, i18n)
├── lib-multisrc/ # Multisrc themes (madara, etc.)
├── src/
│ ├── all/comixto/ # Comix extension
│ ├── en/manhuarmtl/ # ManhuaRMTL extension
│ ├── en/kagane/ # Kagane extension
│ ├── en/atsumaru/ # Atsumaru extension
│ └── en/mkissa/ # MKissa extension
├── settings.gradle.kts # Extension loading config
└── gradlew # Gradle wrapper
- Create
src/<lang>/<name>/with the extension source - Add
loadIndividualExtension("<lang>", "<name>")tosettings.gradle.kts - Add the icon at
src/<lang>/<name>/res/mipmap-xhdpi/ic_launcher.png - Commit, push, and run the publish workflow
- Build infrastructure: Keiyoushi/extensions-source
- Multisrc themes: Keiyoushi
- App: Mihon
See LICENSE.