AE Scraper - NeuralIO444/Mograph_Jailed_OSX_CLI GitHub Wiki

AE Scraper

The scraper reads your open After Effects project and writes a single JSON receipt. It cannot modify your project β€” this is proven by an automated guard, not just promised.

Run it

  1. Open your project in After Effects.
  2. File β†’ Scripts β†’ Run Script File…
  3. Navigate to integrations/after-effects/MographJailed_ProjectScraper.jsx in your MographJailed checkout and open it.
  4. Pick the folder where the receipt should be saved.
  5. Done. You'll get a file like MyProject.20260929T150000Z.scrape.json.

No installation, no restart, no preferences changed. Your project is exactly as it was β€” the scraper has no code path that saves, closes, or edits anything.

What's in the receipt

  • Project name, path, After Effects version, scrape timestamp
  • Every comp (up to 200): name, size, frame rate, duration
  • Every layer (up to 500 per comp): name, type
  • Expressions on animated properties (capped at 2,000 characters each)
  • Effects applied per layer
  • Fonts used
  • Footage items (up to 2,000): name, path, missing/unlinked flags
  • Truncation flags if any bound was hit, so you know the receipt is partial

The full field list is in docs/MJ_PROJECT_SCRAPE_1.md in the repo.

Bounds (so it can't run away)

Bound Value
Comps 200
Layers per comp 500
Footage items 2,000
Expression length 2,000 chars
Total receipt ~5 MB

Everything is traversed in deterministic order, so two scrapes of an unchanged project produce identical receipts.

The read-only proof

scripts/check-scraper-readonly.sh in the repo statically scans the scraper for every After Effects DOM mutation pattern β€” save, remove, add, replace, setValue, addKey, duplicate, project close, undo groups, app.executeCommand, and more. If any appear, the build fails. Run it yourself:

bash scripts/check-scraper-readonly.sh
# β†’ SCRAPER_READONLY_OK

What to do with the receipt

Feed it to the CLI:

mj project.ingest path=/path/to/MyProject.20260929T150000Z.scrape.json
mj expression.lint path=/path/to/MyProject.20260929T150000Z.scrape.json

Or point the Dashboard at your receipts folder and watch it light up. Details: Tier 0 Observer.