drjones 8ce68fa779 fix: markdown→HTML rendering in engine + harden thinking fallback
- Engine now converts content_md to HTML at render time (was dumping raw markdown,
  causing articles to show literal #/**/- symbols and collapse into wall of text)
- /api/publish accepts 'content' key and converts markdown→HTML for API consumers
- Added md Jinja filter + md_to_html helper (markdown lib, extra+sane_lists)
- orchestrator: log warning when falling back to 'thinking' field (CoT, not prose)
- content_pipeline now generates formatted articles via LLM instead of raw scraped HTML
2026-08-14 20:09:34 -07:00

Auto Publisher — README

Autonomous AI Publishing System

A fully autonomous, self-hosted publishing platform that continuously discovers valuable topics, generates original useful content, and publishes it to a collection of evergreen authority websites.

Sites

Site URL Status
AI https://ai.thetempleofdoom.com 🚀
Tech https://tech.thetempleofdoom.com 🚀
Science https://science.thetempleofdoom.com 🚀
Crypto https://crypto.thetempleofdoom.com 🚀
Linux https://linux.thetempleofdoom.com 🚀
Gaming https://gaming.thetempleofdoom.com 🚀
DIY https://diy.thetempleofdoom.com 🚀
Guides https://guides.thetempleofdoom.com 🚀

Architecture

cron (6AM daily) → Trend Discovery → Topic Scoring → Research (ornith:latest)
→ Multi-Agent Writing → SEO → Site Builder → Deploy to Proxmox CTs

Quick Start

# Initialize database
python3 core/orchestrator.py init

# Discover trending topics
python3 core/orchestrator.py discover

# Run full pipeline (3 articles)
python3 core/orchestrator.py run --max 3

# Check status
python3 core/orchestrator.py status

# Admin dashboard
python3 dashboard/app.py
# → http://localhost:5106

Infrastructure

  • Orchestrator: MacBook (cron via launchd)
  • LLM Inference:
    • MacBook: qwen3.5:4b (fast, cheap tasks)
    • GamingPC RTX 3070: ornith:latest (quality writing/research)
  • Sites: 8 Proxmox LXC containers (nginx on each)
  • Tunnels: Cloudflare home tunnel (d2871458)
  • Code: Gitea (10.30.20.149:3000)
  • Analytics: Self-hosted, privacy-first

Directory Structure

auto-publisher/
├── core/               # Orchestrator, deploy scripts
├── services/           # Microservice APIs
├── sites/              # Per-vertical static sites
├── shared/             # CSS, JS, assets
├── dashboard/          # Admin control panel
├── analytics/          # Tracking & learning loop
├── cron/               # Scheduled jobs
└── docs/               # Architecture docs

Pipeline Steps

  1. Discover: Scans HN, Reddit, GitHub, arXiv for trending topics
  2. Score: LLM evaluates popularity, competition, freshness, evergreen value
  3. Assign: Routes topics to appropriate vertical site
  4. Research: Deep research via ornith:latest (GamingPC), builds knowledge package
  5. Write: Multi-agent pipeline (outline → draft → edit → SEO → fact-check)
  6. Build: Generates static HTML, RSS, sitemap, JSON-LD
  7. Deploy: Pushes to Proxmox CT, restarts nginx
  8. Learn: Nightly analytics feedback loop improves future topic selection

LLM Strategy

Stage Model Host Rationale
Topic scoring qwen3.5:4b MacBook Fast pattern matching
Research ornith:latest GamingPC Deep reasoning, accuracy
Writing ornith:latest GamingPC Quality output
Editing qwen3.5:4b MacBook Fast iteration
SEO qwen3.5:4b MacBook Template-driven
Fact-check ornith:latest GamingPC Critical accuracy

Environment Variables

# Optional overrides
OLLAMA_MACBOOK=http://localhost:11434
OLLAMA_GAMINGPC=http://10.30.20.186:11434
DASHBOARD_SECRET=auto-publisher-2026

Monitoring

  • Admin dashboard: http://localhost:5106
  • Pipeline logs: core/orchestrator.log
  • Analytics: per-CT at :5199/a/stats
Description
Autonomous AI Publishing System — discovers, researches, writes, and publishes content across 8 authority websites
Readme 404 KiB
Languages
Python 96.7%
CSS 3.2%
Shell 0.1%