AI Scraping Stack — Development Roadmap
- ✅ Done
- 🔄 In progress / partial
- 📋 Planned
- 💡 Ideas / future
- ✅ 4-layer architecture: Scrapling → Ollama → MCP → OpenRouter
- ✅ FastAPI REST backend (
api.py) - ✅ Dashboard UI (
index.html) — dark terminal aesthetic - ✅ Scrapling v0.4 integration (fast/stealth/dynamic modes)
- ✅ Ollama local LLM (llama3.2/mistral/qwen)
- ✅ OpenRouter SDK (300+ models, free tier routing)
- ✅ MCP server (scrapling mcp — 6 tools for Claude Desktop/Cursor)
- ✅ Bulk scraping with semaphore concurrency control
- ✅
src/config.py— Pydantic Settings (replaces global dict) - ✅
src/models.py— centralized Pydantic schemas - ✅
src/llm.py— LLM routing service (SRP) - ✅
src/scraper.py— scraping service (SRP) - ✅
src/storage.py— SQLite history + JSON model registry - ✅
providers.py— unified adapter: 8 providers, ProviderRouter - ✅
requirements.txt— Python dependencies - ✅
.env.example— all env vars with comments - ✅
stack.py— standalone demo + MCP server - ✅ Tests:
test_llm.py,test_providers.py - ✅ All routes unified in
api.py - ✅
/historyand/statsendpoints wired to Storage - ✅
/analyzeendpoint for raw text analysis - 📋 Fix: closure bug in
providers.py_build_chainlambdas - 📋 httpx connection pooling
- ✅
src/synthesizer.py— multi-agent pipeline - ✅
POST /synthesize— N URLs + prompt → website code - ✅
POST /synthesize/multi— returns multiple variants - ✅ Agent pipeline: Extractor → Ranker → Researcher → Architect → Coder
- ✅ Jina Search integration for trend research
- ✅ Output formats: HTML / React / Full-stack spec
- ✅ Skills docs:
skills/skill_synthesize.md - 📋 Add synthesis tab to
index.htmldashboard - 📋 Stream synthesis progress via SSE
- 📋 Save synthesis results to SQLite
- ✅
src/screenshot.py— ScreenshotService (Crawl4AI→Playwright→Scrapling cascade) - ✅
src/vision.py— VisionService + VisualAuditPipeline + ModelRegistry - ✅
src/sitemap.py— robots.txt + sitemap.xml discovery - ✅
POST /screenshot— single URL screenshot - ✅
POST /screenshot/bulk— N screenshots + VLM analysis - ✅
POST /screenshot/audit— full visual audit pipeline - ✅
POST /vision/analyze— analyze screenshot with VLM - ✅
GET /sitemap— discover site structure - ✅
GET /vision/models— list available VLMs - ✅
skills/skill_screenshot.md— full playbook
- Local: qwen2.5vl:7b, llava:7b, moondream (Ollama)
- Cloud: gemma-3n-e4b-it:free, llama-3.2-11b-vision:free (OpenRouter)
- business_intel, design_audit, competitor_analysis
- tech_stack, ux_patterns, content_extract, summary, custom
- 📋 Dashboard tab: "Visual Audit" with screenshot preview
- 📋 Screenshot diff: compare same URL over time
- 📋 Batch export: ZIP of all screenshots
- 📋 Vision → synthesis integration: screenshots feed into WebSynthesizer
- 📋 PDF export: full-page PDF (Crawl4AI pdf=True already works)
- ✅
landing.html— SEO-optimized frontend (Schema.org, FAQ, Open Graph) - ✅ 5 tabs: Scrape, Synthesize, Screenshot, Audit, Vision
- ✅ Static HTML — deployable on any shared hosting
- ✅ Backend connection via
API_URL(fetch) - ✅
DEPLOY_RAILWAY.md— Railway deployment guide - ✅
DEPLOY_TIMEWEB.md— Timeweb Cloud deployment (with GPU/Ollama) - ✅
DEPLOY_SHARED_HOSTING.md— Frontend deployment to shared hosting - ✅ Nginx config for
/api/→ backend proxy - ✅ systemd service for API auto-start
- ✅ Dockerfile + docker-compose.yml
- ✅ .gitignore
- ✅ Makefile
- ✅ pyproject.toml
- 📋 Production CORS: restrict from
*to configured origins - 📋 Rate limiting on API endpoints
- 📋 API key authentication for frontend
- 📋 Synthesis tab: URL input, prompt, format selector, live progress
- 📋 Visual Audit tab: sitemap explorer, screenshot gallery, VLM insights
- 📋 History tab: past scrapes + syntheses, re-run, export
- 📋 Code preview with syntax highlight (Prism.js CDN)
- 📋 Download button → saves .html / .jsx / .md file
- ✅ Wire
Storageinto scrape routes - ✅
GET /historywith filtering - ✅
GET /stats— aggregate statistics - 📋 History panel in dashboard
- 📋 Export history: CSV / JSON download
- 📋 Deduplication: skip re-scraping same URL if cached < N hours
- 📋 Save synthesis results to SQLite
- 📋
POST /schedule— cron scraping jobs - 📋 APScheduler integration
- 📋 Webhook notifications
- 📋 Schedule management in dashboard
- 📋
POST /rag/index— scrape → chunk → embed → store - 📋
POST /rag/query— semantic search - 📋
POST /rag/chat— chat with indexed websites - 📋 Dashboard: "Knowledge Base" tab
- 📋 Iterative synthesis: agent reviews code, improves in 3 rounds
- 📋 Competitor analysis agent
- 📋 SEO analysis agent
- 📋 Price monitoring agent
- 📋 Content gap analysis
- 📋 Rate limiting (slowapi)
- 📋 API key authentication
- 📋 CORS: restrict from
* - 📋 Structured logging
- 📋 Prometheus metrics
- 📋 httpx connection pooling
- 📋 Graceful shutdown
- 💡 OpenAPI docs polished
- 💡 CLI:
scrapling scrape <url>/scrapling synthesize <urls> "<prompt>" - 💡 PyPI package
- 💡 Docker Hub image
- 💡 One-click deploy button
- 💡 GitHub Actions CI/CD
| Issue | File | Priority |
|---|---|---|
Closure bug in _build_chain lambdas |
providers.py | High |
| httpx client per-request (no pooling) | providers.py, llm.py | Medium |
| Root-level vision.py duplicate | vision.py | Low |
CORS allow_origins=["*"] |
api.py | Low |
| No integration tests | tests/ | Medium |
- Fork → feature branch → PR
pytest tests/must pass before PR- New providers →
providers.py+ skill doc inskills/ - New endpoints → schema in
src/models.pyfirst, route inapi.pylast - Update
CONTEXT_MAP.mdwhen adding files