Inspiration

Single-prompt blog generation gives generic, hallucinated posts with no structure or visuals. I wanted a real editorial press: research first, plan sections, write in parallel like journalists, revise, then illustrate — all autonomous.

What it does

Live: https://folio-blog-studio.streamlit.app/

  • Enter a topic → get a full researched, illustrated blog post
  • Multi-agent press run: Route (open/hybrid/closed-book) → Research (Tavily) → Plan (5-9 sections) → parallel section writers → Merge → Revise → Illustrate → Bind
  • Live progress — every pipeline step streams to the UI
  • AI diagrams — FLUX.1-schnell illustrations generated from captions, inserted under headings
  • Shelf library — every story saved to SQLite with versioning, word count, duration, markdown export
  • Editorial UI — light galley-proof design, regenerate / edit / delete with confirmation

How we built it

blog_studio_backend.py (self-contained pipeline + SQLite + progress) + blog_studio_frontend.py (Streamlit UI). LangGraph StateGraph with 6 nodes + fan-out workers. Mistral LLMs with dual-key failover via langchain-mistralai, Tavily for 5-10 parallel searches, FLUX.1-schnell via Hugging Face Inference API for images, SQLite blogs.db + local images/. Started from multi_agent_blog_writer.py (536-line standalone, stdout only, no UI/storage/images) then evolved to full app.

Challenges we ran into

  • Parallel writers drifted in tone — fixed with shared plan + style prompt + merge pass
  • Tavily rate limits on 10 parallel queries — added batching + fallback to closed-book
  • FLUX timeouts on Streamlit Cloud — async illustrate + caption fallback if image fails
  • Mistral 429s mid-press — dual-key retry (MISTRAL_API_KEY + MISTRAL_API_KEY_2)
  • SQLite locking on concurrent runs — single-writer queue + versioning

Accomplishments that we're proud of

  • True multi-agent system, not one prompt — routing + research + parallel writing actually works live
  • Illustrated posts end-to-end with no manual step
  • Persistent library with export — feels like a real studio, not a demo

What we learned

Planning matters more than writing — good section plans fix 80% of quality. Fan-out workers need strict merge/revise. Image + text pipelines fail differently, design fallbacks separately.

What's next

SEO scores + meta generation, tone presets, plagiarism/factuality check, multi-image layouts, export to Medium/Dev.to, collaborative editing.

Built with: Streamlit, LangGraph, Mistral AI, Tavily, Hugging Face FLUX.1-schnell, SQLite

Built With

Share this project:

Updates