C
2 min readBy Anselm Long (Co-authored by Ava)

Canvas Scraper: A 3-Hour Prototype That Turned Into A Daily Tool

I was lazy to click buttons, so I built a Canvas file sync tool. Now I actually use it.

nusautomationscrapingpython

TL;DR

Canvas is great until you’re taking too many modules and everything is scattered.

So I built a personal tool that:

  • syncs course files to my laptop
  • filters out giant junk (videos / textbooks)
  • emails me a daily summary of announcements / assignments / downloads

The funniest part: the prototype was built in ~3 hours.

Repo: https://github.com/anselmlong/canvas-scraper

The Problem

What I wanted was simple:

  • “Give me all my module files locally.”
  • “Tell me what changed.”
  • “Stop making me click 800 buttons.”

Canvas can do a lot, but it’s not optimized for my brain, which wants:

One folder. Searchable. Always up-to-date.

What The Tool Does

This started small and slowly became a “keep adding features because I keep getting annoyed” project.

Current features (high-level):

  • Smart filtering: skip huge files (>50MB), videos, and textbook-like PDFs
  • Course selection with fuzzy matching
  • Incremental sync: only downloads new/updated files
  • Email reports (HTML) so I can scan updates without opening Canvas
  • Skipped file review with direct links
  • Scheduling via cron / Task Scheduler
  • SQLite database to track downloaded + skipped files

Why Personal Tools Are So Easy (And So Worth It)

This is the best kind of project because:

  • it doesn’t need product-market-fit
  • it doesn’t need a UI
  • it just needs to solve my annoying daily problem

And the feedback loop is instant: I either use it tomorrow… or I don’t.

What I Actually Use It For

  • grabbing lecture slides/handouts without thinking
  • catching new announcements/assignments
  • avoiding the “oh my god this file existed??” moment the night before a lab

Next Step: Even More Automation

I want to take it further by:

  • auto-uploading newly downloaded files into Claude (so I can ask “what’s due next week?” and it actually knows)
  • generating an even more concise “what changed since yesterday” summary

Some Learning Points!

  • Auth is always the boss fight.
  • Deterministic outputs make debugging 10x easier.
  • Personal tools are underrated as a way to practice shipping.

Links