CertStorageError: expected /etc/letsencrypt/live/example.com/cert.pem to be a symlink

That's a great idea to help take a load off of Let's Encrypt, but the "official" recommendation is actually to run it twice a day, at off-standard times (e.g. 03:12 and 17:38 instead of 03:00 and 15:00). Certbot, by default, will only attempt to renew a certificate if it's within 30 days of expiration. Otherwise, certbot will determine there are no certificates in need of renewal and close without communicating with Let's Encrypt. The twice-a-day standard is to give the best chance at evading and sporadic or regularly-time system failures that can break the renewal process. Don't worry, you're not hammering Let's Encrypt with requests, just be sure you don't also use the --force-renewal or --renew-by-default flags!