Skip to content

mangadex-to-anilist

Push your MangaDex library into private AniList list entries.

manifold migrate mangadex-to-anilist [flags]

Exports your MangaDex library, matches each title to AniList (external links, title search, Vectorize embeddings), then creates private AniList list entries. Optional chapter progress comes from MangaDex read markers.

Flags

--anilist-token <token>

AniList access token override. Resolve order: flag → MANIFOLD_ANILIST_TOKEN → login anilist keychain.

Example:

manifold login anilist
manifold migrate mangadex-to-anilist

--mangadex-token <token>

MangaDex personal token with the manga.read scope, used to export the library. Falls back to MANIFOLD_MANGADEX_TOKEN. If omitted, the command uses the password-grant flags below.

Example:

manifold migrate mangadex-to-anilist --mangadex-token "$MANIFOLD_MANGADEX_TOKEN"

--apply

Create or update AniList entries. Without this flag, the command runs through export and matching but does not write to AniList.

  • Default: false

Example:

manifold migrate mangadex-to-anilist --apply

--skip-progress

Create list entries without copying chapter progress from MangaDex read markers.

  • Default: false

Example:

manifold migrate mangadex-to-anilist --skip-progress --apply

--use-cache

Reuse the snapshot, match results (including unmatched titles), and read-marker progress stored in .tmp instead of fetching them again.

  • Default: false

Example:

manifold migrate mangadex-to-anilist --phase match --use-cache

--limit <n>

Process only the first n entries after the MangaDex export. Use this for a small canary run before processing the full library.

  • Default: no limit

Example:

manifold migrate mangadex-to-anilist --limit 25

--phase <phase>

Run one stage instead of the complete migration. Accepted values are all, export, match, and push.

  • Default: all

Example:

manifold migrate mangadex-to-anilist --phase export

--mangadex-client-id <id>

OAuth client ID for the password-grant fallback. Falls back to MANIFOLD_MANGADEX_CLIENT_ID.

Example:

manifold migrate mangadex-to-anilist --mangadex-client-id "$MANIFOLD_MANGADEX_CLIENT_ID"

--mangadex-client-secret <secret>

OAuth client secret for the password-grant fallback. Falls back to MANIFOLD_MANGADEX_CLIENT_SECRET.

Example:

manifold migrate mangadex-to-anilist --mangadex-client-secret "$MANIFOLD_MANGADEX_CLIENT_SECRET"

--mangadex-username <username>

MangaDex account username for the password-grant fallback. Falls back to MANIFOLD_MANGADEX_USERNAME.

Example:

manifold migrate mangadex-to-anilist --mangadex-username "$MANIFOLD_MANGADEX_USERNAME"

--mangadex-password <password>

MangaDex account password for the password-grant fallback. Falls back to MANIFOLD_MANGADEX_PASSWORD.

Example:

manifold migrate mangadex-to-anilist --mangadex-password "$MANIFOLD_MANGADEX_PASSWORD"

Matching

Per title, matching prefers:

  1. AniList external link (links.al)
  2. MAL external link (links.mal)
  3. Title search
  4. Vectorize embeddings (Workers AI) when candidates remain ambiguous

Exact title matches can bypass the embedding acceptance bar. AniList writes are spaced (~1.2–2.5 s) with 429 backoff on library-wide passes.

Workflow

  1. Export — MangaDex library + read markers into .tmp
  2. Match — cascade above into AniList candidates
  3. Push — SaveMediaListEntry as private (+ optional progress)

Phases are resumable. Delete the CLI .tmp directory to force a fresh pass. Long MangaDex runs refresh the token about every 15 minutes.

manifold migrate mangadex-to-anilist              # dry-run
manifold migrate mangadex-to-anilist --apply
bun run manifold migrate mangadex-to-anilist --skip-progress --apply
bun run manifold migrate mangadex-to-anilist --phase match --use-cache

MangaDex auth falls back to password-grant credentials in cli/.env, or pass --mangadex-token with a personal token that has manga.read scope.

Navigation

Type to search…

↑↓ navigate↵ selectEsc close