Goal: Fix 558 duplicate meta descriptions in 15 minutes
Cost: $0.00 (FREE)
Difficulty: Easy
https://makersuite.google.com/app/apikey (FREE, no credit card)
npm install @google/generative-ai gray-matter fs-extra
$env:GEMINI_API_KEY="your-key-here"
node generate-meta-descriptions-gemini.js --test
node generate-meta-descriptions-gemini.js --write
# Test (1 post)
node generate-meta-descriptions-gemini.js --test
# Preview (10 posts, dry run)
node generate-meta-descriptions-gemini.js --limit=10
# Full run (dry run)
node generate-meta-descriptions-gemini.js
# Full run (writes files)
node generate-meta-descriptions-gemini.js --write
# Resume after interruption
node generate-meta-descriptions-gemini.js --resume --write
# Validate results
node validate-meta-descriptions.js
# Check URL duplicates
node check-url-duplicates.js
Edit generate-meta-descriptions-gemini.js:
const CONFIG = {
requestsPerMinute: 12, // Stay under 15 RPM limit
delayBetweenRequests: 5500, // 5.5 seconds
maxRetries: 3, // Retry failed requests
minLength: 120, // Min description length
maxLength: 160, // Max description length
};
| Issue | Solution |
|---|---|
| "Cannot find module" | npm install @google/generative-ai gray-matter fs-extra |
| "API key not set" | $env:GEMINI_API_KEY="key" or edit line 28 |
| Script interrupted | node generate-meta-descriptions-gemini.js --resume --write |
| Want fresh start | del .meta-generation-progress.json |
Validate:
node validate-meta-descriptions.js
# Should show: 0 issues
Fix URLs: Update posts/posts.json:
{
"permalink": "/posts/QUICK-START-GUIDE/"
}
Create _redirects:
/2025/:month/:day/* /posts/2025-:month-:day-:splat 301
/2024/:month/:day/* /posts/2024-:month-:day-:splat 301
/2023/:month/:day/* /posts/2023-:month-:day-:splat 301
Update .eleventy.js:
eleventyConfig.addPassthroughCopy("_redirects");
Rebuild:
npx @11ty/eleventy
Deploy:
git add .
git commit -m "Fix: Unique meta descriptions"
git push
Ready? Run node generate-meta-descriptions-gemini.js --test now! 🚀