MAL-Updater
by @kklouzal
Multi-provider anime → MyAnimeList sync and recommendations skill with guarded auth, review-queue triage, health checks, bootstrap auditing, and user-systemd...
clawhub install mal-updater📖 About This Skill
name: mal-updater description: Multi-provider anime → MyAnimeList sync and recommendations skill with guarded auth, review-queue triage, health checks, bootstrap auditing, and user-systemd daemon support. Currently supports Crunchyroll and HIDIVE as source providers. Use when installing, auditing, operating, or troubleshooting MAL-Updater on an OpenClaw host. metadata: {"openclaw":{"emoji":"📺","homepage":"https://github.com/kklouzal/mal-updater","os":["linux"],"requires":{"anyBins":["python3","python"]},"primaryEnv":"MAL_UPDATER_MAL_CLIENT_ID"}}
MAL-Updater
Treat {baseDir} as the skill root. This repository is the skill package.
Core model
.MAL-Updater/ unless the operator explicitly overrides paths.~/.openclaw/workspace/skills/.bootstrap-audit before doing any live auth or sync work.Bootstrap / onboarding workflow
1. cd {baseDir}
2. Run PYTHONPATH=src python3 -m mal_updater.cli bootstrap-audit
3. Read {baseDir}/references/bootstrap-onboarding.md
4. Use the audit output to:
- verify required binaries
- check whether provider-specific optional transport/runtime extras are missing
- confirm the external runtime layout under .MAL-Updater/
- identify which user-provided secrets/app settings are still missing for MAL and any enabled source providers
- verify the secrets location is outside version control and suitable for restrictive local permissions
- decide whether the repo-owned user-systemd daemon can be installed on this host
5. If bootstrap is incomplete, guide the user through the missing steps instead of pretending install is finished.
6. Prompt for provider credentials only when the workflow reaches that provider's bootstrap step; do not request Crunchyroll or HIDIVE secrets preemptively if the user has not chosen or enabled that provider yet.
How to access backend data / operator surfaces
For the most common operator/data tasks, use the repo-local CLI from {baseDir}:
Read-only inspection
PYTHONPATH=src python3 -m mal_updater.cli statusPYTHONPATH=src python3 -m mal_updater.cli bootstrap-auditPYTHONPATH=src python3 -m mal_updater.cli service-statusPYTHONPATH=src python3 -m mal_updater.cli service-run-oncePYTHONPATH=src python3 -m mal_updater.cli health-check --format summaryRecommendations / recommendation-related data
PYTHONPATH=src python3 -m mal_updater.cli recommend --limit 20PYTHONPATH=src python3 -m mal_updater.cli recommend --limit 20 --flatPYTHONPATH=src python3 -m mal_updater.cli recommend-refresh-metadataReview queue / mapping triage
PYTHONPATH=src python3 -m mal_updater.cli list-review-queue --summaryPYTHONPATH=src python3 -m mal_updater.cli review-queue-next --issue-type mapping_reviewPYTHONPATH=src python3 -m mal_updater.cli review-queue-worklist --issue-type mapping_review --limit 5PYTHONPATH=src python3 -m mal_updater.cli list-mappingsSync planning / guarded execution
PYTHONPATH=src python3 -m mal_updater.cli dry-run-sync --provider all --limit 20 --approved-mappings-onlyPYTHONPATH=src python3 -m mal_updater.cli apply-sync --limit 0 --exact-approved-only --executePYTHONPATH=src python3 -m mal_updater.cli provider-fetch-snapshot --provider crunchyroll --out .MAL-Updater/cache/live-crunchyroll-snapshot.json --ingestPYTHONPATH=src python3 -m mal_updater.cli provider-fetch-snapshot --provider hidive --out .MAL-Updater/cache/live-hidive-snapshot.json --ingestOperational workflow
Prefer read-only inspection before live writes.
Read-only first:
statusbootstrap-audithealth-checkservice-statusservice-run-oncelist-mappingslist-review-queue --summarydry-run-syncrecommendTreat these as state-changing:
mal-auth-loginmal-refreshprovider-auth-login --provider crunchyrollprovider-auth-login --provider hidiveprovider-fetch-snapshot --provider --ingest apply-sync --executescripts/install_user_systemd_units.shinstall-servicerestart-serviceHigh-value references
{baseDir}/references/bootstrap-onboarding.md for install/onboarding/bootstrap expectations.{baseDir}/references/cli-recipes.md for copy/paste command patterns.{baseDir}/references/data-surfaces.md for a concise map of which backend commands expose recommendations, review-queue state, service/runtime state, and guarded sync surfaces.Guardrails
dry-run-sync before apply-sync --execute unless the task explicitly asks for a live apply.