ITBlogPros Article Dashboard
🎯 What This Does
Complete web-based workflow for generating, validating, previewing, and publishing articles with Amazon affiliate links.
One Interface For Everything:
- ✅ Generate articles from keywords
- ✅ Validate Amazon product links
- ✅ Preview articles before publishing
- ✅ Publish directly to GitHub
- ✅ Real-time progress tracking
- ✅ Quality scoring system
🚀 Quick Start
Option 1: Double-Click (Easiest)
Double-click: START-DASHBOARD.bat
Option 2: Command Line
cd C:\dev\itblogpros\_automation\webapp
npm install
npm start
Dashboard opens automatically at: http://localhost:3000
📋 How To Use
1. Generate New Article
- Enter a keyword/pain point (e.g., "WiFi 7 slower than expected")
- Select product type
- Click "Generate Article"
- Watch real-time progress
- Article appears in the list when complete
2. Preview Article
Start Preview Server:
- Click "Start Preview Server" button
- Preview opens at http://localhost:3001
- Click "Preview" on any article to view
Why Preview?
- See article exactly as it will appear on live site
- Test Amazon affiliate links
- Check mobile responsiveness
- Verify formatting and images
3. Publish Article
- Review article in preview
- Click "Publish" button
- Confirm publication
- Article automatically pushed to GitHub
- Cloudflare Pages deploys within 2-3 minutes
4. Delete Draft
- Click "Delete" on unwanted drafts
- File removed from disk
- Tracking database updated
🔧 Features
Real-Time Progress Tracking
Watch article generation in real-time:
- 🔍 Analyzing keyword (10%)
- 🤖 Generating with Gemini (30%)
- ✅ Validating Amazon links (60%)
- 🏗️ Building preview (80%)
- ✅ Complete! (100%)
Amazon Link Validation
Every article automatically validates:
- ✅ ASIN format (B0 + 8 characters)
- ✅ Product exists on Amazon
- ✅ Affiliate tag correct (itblogpros100-20)
- ✅ Links functional
Quality Scoring
Each article scored on 100-point scale:
- 80-100: Excellent - Ready to publish
- 60-79: Good - Minor improvements needed
- 0-59: Needs work - Review required
Scoring factors:
- Word count (1350±100 words target)
- Amazon links (3+ products)
- FAQ section present
- Affiliate disclosures
- Meta-commentary removed
- Proper front matter
Draft Management
- View all articles (drafts and published)
- Sort by date
- Filter by status
- Quick actions (preview, publish, delete)
📊 Dashboard Interface
Left Panel: Generate
- Keyword input: Main topic/pain point
- Product type: Routers, security, smart home, etc.
- Progress bar: Real-time generation status
- Preview controls: Start/stop preview server
Right Panel: Articles
- Statistics: Total, drafts, published counts
- Article cards: Shows title, status, score
- Actions: Preview, publish, delete buttons
- Auto-refresh: Updates when new articles generated
🔗 Integration Points
Connects To:
- gemini-article-generator.js - AI article generation
- gemini-enhanced.js - Amazon link validation
- indexnow-bing-submit-enhanced.js - Bing submission
- Eleventy - Site building
- Git - Version control and publishing
Automatic Workflows:
- Generate → Validate → Build → Ready
- Publish → Commit → Push → Deploy
- Preview → Start server → View article
⚙️ Configuration
Environment Variables
Create .env file (optional):
DASHBOARD_PORT=3000
PREVIEW_PORT=3001
SITE_URL=https://itblogpros.com
GEMINI_API_KEY=your_key_here
Ports Used
- 3000 - Dashboard interface
- 3001 - Preview server (Eleventy)
If ports conflict, change in .env file.
📁 File Structure
webapp/
├── server.js # Express server
├── article-workflow.js # Workflow orchestration
├── index.html # Dashboard UI
├── package.json # Dependencies
├── START-DASHBOARD.bat # Quick launcher
└── README.md # This file
Generated:
└── article-tracking.json # Article database
🐛 Troubleshooting
Dashboard won't start
# Check if port 3000 is in use
netstat -ano | findstr :3000
# Kill process if needed
taskkill /PID [process_id] /F
# Try again
npm start
Preview server won't start
# Check if port 3001 is in use
netstat -ano | findstr :3001
# Stop preview from dashboard
# Or kill manually:
taskkill /F /IM node.exe
Article generation fails
- Check Gemini API key in
../.env
- Check Bing API key in
../../indexnow-bing-submit-enhanced.js
- View console for detailed errors
- Check article-tracking.json for status
Can't publish to GitHub
# Check git status
cd C:\dev\itblogpros
git status
# Check remote
git remote -v
# Test connection
git fetch
# If authentication fails, update credentials
git config --global user.email "[email protected]"
git config --global user.name "Your Name"
Preview shows old content
- Click "Rebuild Site" button
- Hard refresh browser (Ctrl+Shift+R)
- Clear browser cache
- Restart preview server
🚦 Workflow Comparison
Old Manual Workflow (30-45 minutes)
- Generate article with Gemini script
- Manually validate Amazon ASINs
- Test each Amazon link in browser
- Run Eleventy build manually
- Check localhost preview
- Git add, commit, push manually
- Wait for Cloudflare deploy
- Test live site
New Dashboard Workflow (5-10 minutes)
- Enter keyword
- Click "Generate"
- Wait 3-5 minutes
- Click "Preview" to review
- Click "Publish"
- Done! ✅
Time Saved: 20-35 minutes per article
💡 Tips & Best Practices
Keyword Selection
Good Keywords:
- "WiFi 7 slower than expected"
- "best router for Virgin Media"
- "smart home security cameras 2025"
Bad Keywords:
- Too generic: "router"
- Too broad: "technology"
- No pain point: "WiFi 7 specs"
Preview Before Publishing
Always preview:
- Check Amazon links work
- Verify formatting
- Test on mobile (browser DevTools)
- Read through for errors
- Confirm no meta-commentary
Quality Score Guidelines
- 90-100: Publish immediately
- 80-89: Quick review, then publish
- 70-79: Review and improve
- Below 70: Regenerate or manually edit
Managing Drafts
- Delete failed generations immediately
- Keep only articles you plan to publish
- Review drafts weekly
- Publish or delete stale drafts
📈 Monitoring & Analytics
Article Tracking
Dashboard tracks:
- Generation time
- Quality scores
- Amazon link count
- Word count
- Publish status
- Creation date
View in: article-tracking.json
Success Metrics
Track these manually:
- Articles generated per week
- Publish rate (published/generated)
- Average quality score
- Time from generation to publish
🔒 Security Notes
Local Only
- Dashboard runs locally only
- No external access
- Safe to use on public WiFi
Git Credentials
- Uses your system git configuration
- Credentials stored by git
- Two-factor auth supported
API Keys
- Stored in environment variables
- Never committed to git
- Keep .env file secure
🎓 Advanced Usage
Batch Generation
Generate multiple articles:
// In browser console
const keywords = [
'WiFi 7 slower than expected',
'best router for Virgin Media',
'smart home setup guide'
];
for (const keyword of keywords) {
await fetch('/api/generate', {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({ keyword })
});
await new Promise(r => setTimeout(r, 300000)); // Wait 5 min
}
Custom Validation Rules
Edit article-workflow.js to add custom rules:
async validateCustomRules(article) {
// Your custom validation
if (article.wordCount < 1200) {
throw new Error('Article too short');
}
// More rules...
}
Webhook Integration
Add webhook to notify on publish:
async publishArticle(filename, commitMessage) {
const result = await super.publishArticle(filename, commitMessage);
// Notify external service
await fetch('https://your-webhook.com', {
method: 'POST',
body: JSON.stringify(result)
});
return result;
}
📞 Support
Issues?
- Check troubleshooting section above
- Check console for errors
- Review article-tracking.json
- Test individual components
Contact:
🔄 Updates
Version History
- v1.0.0 - Initial release
- Article generation
- Amazon validation
- Preview server
- Git publishing
- Quality scoring
Planned Features
- [ ] Bulk article generation
- [ ] Custom product database
- [ ] A/B testing for titles
- [ ] SEO analysis
- [ ] Automated image generation
- [ ] Performance analytics
📝 License
Internal tool for ITBlogPros.
Not for public distribution.
Ready to streamline your workflow?
Double-click START-DASHBOARD.bat
Then enter a keyword and watch the magic happen! ✨