← All projects

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):


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:8b via 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 → SEOtag assignment (LLM maps content to the blog’s blog_tag ids). 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)

LayerTechnology
FrontendNext.js (SSG + ISR), Markdown articles
DataPostgreSQL, SQLAlchemy, Alembic
App / jobsPython 3.12 (CLI scripts, multiblog package)
LLMOllama — e.g. qwen2.5:7b-instruct for text, qwen3-vl:8b for vision
ImagesComfyUI HTTP API, SDXL workflow
MediaFiles under a configurable global + per-blog storage path on the VPS
SocialDB-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.