An automated, implementation-focused developer news engine. Every evening a GitHub Actions pipeline:
Total AI cost: ~$0.003/day (Gemini Flash at $0.075/1M tokens × 50 posts).
├── automation/
│ ├── researcher.py # Gemini 1.5 Pro: grounded discovery
│ ├── writer.py # Gemini 1.5 Flash: blog posts + card data
│ ├── image_gen.py # Playwright: PNG carousel renderer
│ ├── mailer.py # Gmail SMTP: ZIP delivery
│ ├── requirements.txt # Python deps
│ └── templates/
│ └── insta_card.html # Analytics Vidhya-style card template
├── src/
│ ├── content/
│ │ ├── config.ts # Astro content collection schema
│ │ └── blog/ # Generated Markdown posts live here
│ ├── components/
│ │ ├── Header.astro # Search + theme toggle + "maintained by" banner
│ │ ├── NavLeft.astro # Date-based navigation (week/day groups)
│ │ ├── AdsRight.astro # AdSense + portfolio CTA
│ │ └── PostCard.astro # Blog post card for the grid
│ ├── layouts/
│ │ ├── MediumLayout.astro # Article page (prose + sidebars)
│ │ └── BaseLayout.astro # Index/list page
│ ├── pages/
│ │ ├── index.astro # Home + filter grid
│ │ └── blog/[...slug].astro
│ ├── styles/global.css
│ └── site.config.ts # Site name, URLs, AdSense ID, GoatCounter code
├── .github/workflows/
│ └── main.yml # The nightly cron (20:00 UTC)
├── astro.config.mjs
├── tailwind.config.mjs
├── tsconfig.json
└── package.json
Edit src/site.config.ts:
export const SITE = {
name: "The Daily Dev-Value Factory",
author: "Your Name",
portfolio_url: "https://your-site.com",
linkedin_url: "https://linkedin.com/in/you",
adsense_id: "", // leave empty to disable
goat_code: "", // leave empty to disable
};
| Secret | Description |
|---|---|
GEMINI_API_KEY |
Google AI Studio API key |
GMAIL_USER |
Gmail address used to send |
GMAIL_APP_PASS |
Gmail App Password |
ADMIN_EMAIL |
Where the daily ZIP is delivered |
Go to Settings → Pages → Source: set to GitHub Actions.
# Frontend dev server
npm install
npm run dev
# Run the full pipeline locally (needs GEMINI_API_KEY in env)
pip install -r automation/requirements.txt
playwright install chromium
python automation/researcher.py
python automation/writer.py
python automation/image_gen.py
python automation/mailer.py
| Layer | Tool |
|---|---|
| Research AI | Gemini 1.5 Pro (Google Search grounded) |
| Writing AI | Gemini 1.5 Flash |
| Image rendering | Playwright (headless Chromium) |
| Frontend | Astro 4.x + Tailwind CSS |
| Search | Pagefind (fuzzy, client-side) |
| Analytics | GoatCounter (privacy-first) |
| Monetisation | Google AdSense (config-driven) |
| Gmail SMTP TLS | |
| Hosting | GitHub Pages (free) |
All prompts enforce an anti-AI writing style:
MIT