MAL-Updater

v0.1.6

Multi-provider anime → MyAnimeList sync and recommendations skill with guarded auth, review-queue triage, health checks, bootstrap auditing, and user-systemd...

0· 202·0 current·0 all-time

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for kklouzal/mal-updater.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "MAL-Updater" (kklouzal/mal-updater) from ClawHub.
Skill page: https://clawhub.ai/kklouzal/mal-updater
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Bare skill slug

openclaw skills install mal-updater

ClawHub CLI

Package manager switcher

npx clawhub@latest install mal-updater
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
medium confidence
Purpose & Capability
Name/description (MyAnimeList sync + provider ingestion + recommendations) match the repository contents: Python CLI, Crunchyroll/HIDIVE provider implementations, MAL client integration, review queue, and systemd install helpers. Declared runtime binaries (python3/python) are appropriate.
Instruction Scope
SKILL.md instructs running the repo-local Python CLI, running bootstrap-audit, staging secrets under an external runtime tree (.MAL-Updater/), and optionally installing a user-level systemd daemon via the provided scripts. These are within the stated purpose. Note: the agent/operator will be instructed to create/stage credentials and to install a long-lived daemon that performs network requests and token refreshes; that is expected but worth explicit operator review before enabling unattended mode.
Install Mechanism
No external install spec or remote downloads. All code is included in the repo and intended to be executed in-place via PYTHONPATH=src python3 -m mal_updater.cli. That reduces supply-chain ambiguity. Scripts will render/install user systemd units on the host (user-level only).
Credentials
Primary credential declared (MAL_UPDATER_MAL_CLIENT_ID) is consistent with the MAL OAuth requirement. The repo prefers staging secrets in .MAL-Updater/secrets/ rather than environment variables for provider credentials; registry metadata naming an env var may be a mild mismatch with SKILL.md (operator should confirm how to supply the MAL client id). Crunchyroll/HIDIVE credentials are requested only when those providers are enabled, which matches the described workflow.
Persistence & Privilege
The skill requires (optional) installation of a user-level systemd service that runs a long-lived daemon which persists state and tokens under the workspace runtime tree. That provides persistent background networked behavior and token storage; it is legitimate for this skill but increases attack surface. always:false and normal agent-autonomy settings mitigate risk, but operators should inspect the unit/script and secure .MAL-Updater/secrets/ (restrict permissions).
Assessment
This repo appears to implement what it claims: a local Python CLI and optional user-level daemon that fetches provider data (Crunchyroll/HIDIVE), maps it to MyAnimeList, and can perform guarded writes. Before installing or enabling unattended operation: 1) Review scripts/install_user_systemd_units.sh and the rendered .service unit to confirm you understand what the daemon will run and its environment; 2) Verify where the MAL client id and provider credentials are read from (SKILL.md recommends staging into .MAL-Updater/secrets/), and secure that directory with restrictive local permissions; 3) Confirm you trust the upstream source (homepage repo) and optionally scan the included code for network endpoints you don’t recognize; 4) Use bootstrap-audit and run dry-run-sync / health-check first; and 5) Only enable the user-systemd daemon on hosts where persistent background networked access and stored tokens are acceptable. The only small inconsistency: the registry metadata lists a primaryEnv name while most docs instruct storing credentials in the external secrets directory — confirm which mechanism your deployment expects.

Like a lobster shell, security has layers — review code before you run it.

Runtime requirements

📺 Clawdis
OSLinux
Any binpython3, python
Primary envMAL_UPDATER_MAL_CLIENT_ID
latestvk971yjehb9vscmwkd5w7jj5vj983vtqn
202downloads
0stars
7versions
Updated 4w ago
v0.1.6
MIT-0
Linux

MAL-Updater

Treat {baseDir} as the skill root. This repository is the skill package.

Core model

  • Keep business logic in the repo-local Python CLI.
  • Keep runtime state outside the skill tree under the workspace runtime root .MAL-Updater/ unless the operator explicitly overrides paths.
  • Do not assume host-specific absolute paths, IPs, or preexisting local copies under ~/.openclaw/workspace/skills/.
  • For new installs or portability audits, start with bootstrap-audit before doing any live auth or sync work.
  • Prefer the long-lived user-systemd daemon over timers or OpenClaw cron for unattended operation.

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 status
  • PYTHONPATH=src python3 -m mal_updater.cli bootstrap-audit
  • PYTHONPATH=src python3 -m mal_updater.cli service-status
  • PYTHONPATH=src python3 -m mal_updater.cli service-run-once
  • PYTHONPATH=src python3 -m mal_updater.cli health-check --format summary

Recommendations / recommendation-related data

  • PYTHONPATH=src python3 -m mal_updater.cli recommend --limit 20
  • PYTHONPATH=src python3 -m mal_updater.cli recommend --limit 20 --flat
  • PYTHONPATH=src python3 -m mal_updater.cli recommend-refresh-metadata

Review queue / mapping triage

  • PYTHONPATH=src python3 -m mal_updater.cli list-review-queue --summary
  • PYTHONPATH=src python3 -m mal_updater.cli review-queue-next --issue-type mapping_review
  • PYTHONPATH=src python3 -m mal_updater.cli review-queue-worklist --issue-type mapping_review --limit 5
  • PYTHONPATH=src python3 -m mal_updater.cli list-mappings

Sync planning / guarded execution

  • PYTHONPATH=src python3 -m mal_updater.cli dry-run-sync --provider all --limit 20 --approved-mappings-only
  • PYTHONPATH=src python3 -m mal_updater.cli apply-sync --limit 0 --exact-approved-only --execute
  • PYTHONPATH=src python3 -m mal_updater.cli provider-fetch-snapshot --provider crunchyroll --out .MAL-Updater/cache/live-crunchyroll-snapshot.json --ingest
  • PYTHONPATH=src python3 -m mal_updater.cli provider-fetch-snapshot --provider hidive --out .MAL-Updater/cache/live-hidive-snapshot.json --ingest

Operational workflow

Prefer read-only inspection before live writes.

Read-only first:

  • status
  • bootstrap-audit
  • health-check
  • service-status
  • service-run-once
  • list-mappings
  • list-review-queue --summary
  • dry-run-sync
  • recommend

Treat these as state-changing:

  • mal-auth-login
  • mal-refresh
  • provider-auth-login --provider crunchyroll
  • provider-auth-login --provider hidive
  • provider-fetch-snapshot --provider <provider> --ingest
  • apply-sync --execute
  • scripts/install_user_systemd_units.sh
  • install-service
  • restart-service

High-value references

  • Read {baseDir}/references/bootstrap-onboarding.md for install/onboarding/bootstrap expectations.
  • Read {baseDir}/references/cli-recipes.md for copy/paste command patterns.
  • Read {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

  • Keep sync behavior conservative; do not invent broader write scope than the CLI already supports.
  • Prefer dry-run-sync before apply-sync --execute unless the task explicitly asks for a live apply.
  • Treat Crunchyroll auth/fetch instability as real residue; document it plainly.
  • Treat staged provider credentials and long-lived tokens as sensitive local files; keep them out of version control and prefer restrictive local permissions.
  • When a host cannot satisfy the unattended daemon path, say so clearly instead of silently skipping service setup.
  • Recommend manual review before enabling unattended daemon operation on a host that matters.
  • Keep outputs short and actionable: counts, blockers, next command, and whether user input is needed.

Comments

Loading comments...