Multi-Blog
Multi-Blog is an automated content generation and publishing system for multiple independent blogs on web2ua.com: each site is {subdomain}.web2ua.com with its own theme, taxonomy, and media.
The project started under the working name ChatGPT Blogs; the stack and product have since grown into a full multi-tenant pipeline (this page reflects the current design and naming).
Browse live sites — the All blogs list on cap.web2ua.com (order as in the footer):
- Cap — Capital analysis
- Fit — Fitness, Health & Workout Guides
- Garden — Gardening & Nature-Inspired Decor: Tips, Ideas, and Inspiration
- Pathfinder — Your Adventure and Tourism Companion
- Photo — Frame the World: A Photography Journey
- Positive — Positive Career Signals
- Sport — Fitness and Sports
- Travel — Tourism, Travel Guides, Tips & Destinations
- Traviboost — Travian Guides & Tools
What it does
- Onboards blogs with a niche / language, then generates theme, sub-themes, categories, tags, and optional keywords (
generate_blog_config-style flow). - Plans content with per-blog topics (
blog_topic); one topic typically drives one article. - Builds media: LLM writes positive and negative image prompts; ComfyUI (SDXL) renders images; a vision model (
qwen3-vl:8bvia Ollama) describes each image; the best image per topic is selected for the article. - Writes articles through an article pipeline (v2): research/draft-style generation → SEO → tag assignment (LLM maps content to the blog’s
blog_tagids). Content is Markdown; the front end renders HTML. - Ships the web: Next.js with SSG and ISR; per-blog sitemap and RSS; read-only PostgreSQL from static generation; media on a VPS path (SSH/SCP).
- Goes beyond the site: IndexNow and search-console-oriented maintenance, GA integration, and a social posting layer (queue, templates, schedulers) with support for article links and news digests to channels such as Telegram, Bluesky, Mastodon, Discord (see the platform’s internal specs).
Design principles: decoupled stages, idempotent reruns, observable logs and per-entity status.
Tech stack (summary)
| Layer | Technology |
|---|---|
| Frontend | Next.js (SSG + ISR), Markdown articles |
| Data | PostgreSQL, SQLAlchemy, Alembic |
| App / jobs | Python 3.12 (CLI scripts, multiblog package) |
| LLM | Ollama — e.g. qwen2.5:7b-instruct for text, qwen3-vl:8b for vision |
| Images | ComfyUI HTTP API, SDXL workflow |
| Media | Files under a configurable global + per-blog storage path on the VPS |
| Social | DB-backed queue, posting policies, schedule profiles |
End-to-end flow
High level:
Blog config → topics → image prompts → images → descriptions → best image
→ article prompt → article → SEO + tags → deploy → validate → social
Regeneration, internal linking, and blog maintenance (tags, sitemaps, widgets) are first-class parts of the flows documentation; news digests are a separate pipeline for social, not a substitute for on-site posts.
On the web
- Niche homepages:
/{subdomain}/(subdomain = blog key, same as the hostname label). - Categories and tags under
.../category/...and.../tag/...(reserved segments, no slug collisions with articles). - Article pages:
/{subdomain}/[article-slug]/.
Legacy name
If you still have a bookmark to the old project slug ChatGPT Blogs, it redirects to this page. The product name in documentation and the codebase is Multi-Blog / multi-blog.