Since Render's free tier doesn't support persistent cron jobs, we need to use an external cron service.
- Go to: https://cron-job.org/
- Sign up for a free account
- Create a new cron job:
- Title: AI Blog Automation
- URL:
https://your-render-app.onrender.com/webhook - Schedule: Every 5 minutes (to ensure we catch 9 AM)
- Method: POST
- Headers:
Content-Type: application/json - Body:
{}
- Go to: https://uptimerobot.com/
- Sign up for a free account
- Add a new monitor:
- Monitor Type: HTTP(s)
- URL:
https://your-render-app.onrender.com/webhook - Monitoring Interval: 5 minutes
- Method: POST
Create .github/workflows/cron.yml:
name: Blog Automation Cron
on:
schedule:
- cron: "0 9 * * *" # Every day at 9 AM UTC
jobs:
trigger-blog:
runs-on: ubuntu-latest
steps:
- name: Trigger Blog Generation
run: |
curl -X POST https://your-render-app.onrender.com/webhook \
-H "Content-Type: application/json" \
-d '{}'- External service pings your webhook every 5 minutes
- Webhook checks if it's 9 AM (with 5-minute window)
- If it's 9 AM: Triggers blog generation
- If not 9 AM: Just responds with status
- Health Check:
https://your-render-app.onrender.com/ - Manual Trigger:
POST https://your-render-app.onrender.com/trigger - Keep Alive:
https://your-render-app.onrender.com/keep-alive
✅ Works on Render Free Tier
✅ No server sleep issues
✅ Reliable scheduling
✅ Easy monitoring
✅ Free external service
Replace your-render-app.onrender.com with your actual Render URL in the setup above.