Skip to content

Deploy AI Content Strategy Stack [OS 0.1.0 Guide]

Install an AI content strategy system: requirements, Qingliu Content OS 0.1.0 Docker steps, config, verification, and real failure modes.

7 min readIntermediate

Two ways people “do” AI content strategy. First: fire a model at a keyword list and ship. Second: deploy a small operating system – brief files, role-split models, a human publish gate, and optional self-hosted tooling – so AI only runs inside constraints you control.

Volume-only loses on the scoreboard. SE Ranking’s 16-month experiment put 2,000 fully AI-written articles on 20 new domains: early top-100 share sat near 28%, then slid to about 3% by months 3-6, with little recovery out to month 16. Same lab, different method – six AI-assisted posts humans actually edited on SE Ranking’s own blog pulled roughly 555K impressions and 2,300+ clicks, with several in the top 10 or AI Overviews. Honeymoon traffic is not a strategy. A gated stack is.

This guide installs that stack. Core piece: Qingliu Content OS v0.1.0 over Docker. Beside it: a file-based workspace you can run even if you never open the UI.

System requirements (before you clone anything)

Treat this like shipping infrastructure, not a blog outline.

Layer Minimum Recommended
OS / runtime macOS, Linux, or Windows with Docker Desktop Always-on Linux VPS if jobs must run overnight
Docker Docker Engine + Compose v2 Same; leave headroom so Postgres + worker are not RAM-starved
Disk Room for images + Postgres volumes Extra space if you keep long draft version histories
LLM access OpenAI or OpenAI-compatible API key Cheaper model for outline, stronger for draft (spend control)
Human capacity One named publisher who can reject copy Editor + SME on claims-bearing pages
Optional chat SaaS None Claude Pro or ChatGPT Plus (about $20/mo each as of late 2026 checks) for briefing only

Google’s Search Central guidance still scores helpful content over how it was produced – and treats scaled low-value pages as spam. Your scarce resource is judgment bandwidth, not GPUs.

Download / official sources

Primary workbench (self-hosted):

Lightweight alternative (folder + Python CLI, no Docker UI):

Keep the SE Ranking write-up open while you wire gates – it is the failure mode this stack is built to avoid.

Install Qingliu Content OS v0.1.0 (recommended path)

Git + Docker Compose. First image pull can sit for a few minutes. Do nothing fancy yet.

git clone https://github.com/qingchu9909/qingliu-content-os-oss.git
cd qingliu-content-os-oss
cp .env.example .env
docker compose up -d
docker compose ps

Healthy containers → open http://localhost:3000. Local mode: no signup. App, Postgres, migrations, worker rise together.

UI optional. If you only want strategy files on disk, jump to the workspace section after a quick health check and brief against Claude or ChatGPT offline.

First-time configuration (smallest working setup)

Turns out a “successful” install can still generate nothing. Per the Qingliu README, AI calls stay off until you flip flags – cost control, not a bug.

  1. Edit .env only when you accept provider charges:
    AI_ENABLED=true
    AI_BUDGET_UNLIMITED=true
    APP_MODE=local
  2. Recreate: docker compose up -d
  3. UI path: Settings → Provider. OpenAI or any Chat Completions-compatible base URL + key. Keys stay server-side (env or encrypted DB); the browser does not round-trip existing secrets.
  4. Map roles to models: outline / draft / revision / polish / review. Smaller model on outline, stronger on draft if burn rate matters.
  5. Three plain files before any job:
    • VOICE.md – tone, banned phrases, claims you refuse
    • PILLARS.md – 3-5 topics, hard cap
    • GATE.md – no publish without human sign-off; every number needs a source check

Pro tip: Paste VOICE.md + GATE.md into every brief. Community ops threads keep running the same autopsy: the model did not fail – the missing strategy did.

Verify the install works

One pass. No theater.

docker compose ps
curl -s -o /dev/null -w "%{http_code}n" http://localhost:3000

Want Up on the services and a browser-reachable app on port 3000.

  1. Settings → Provider → connection test (expect a real provider call).
  2. Pull one topic from the built-in public RSS/Atom feeds (v0.1.0 ships two public feed sources).
  3. Submit a background writing job; close the tab; reopen – candidate should still be there.
  4. Apply → edit → save → confirm an older version remains.
  5. Export Markdown or ZIP. Export ≠ publish. Current limits: text gen, versions, export – no multi-user, billing, image gen, streaming, or CMS/social publish connectors.

Empty jobs after step 3? Re-read AI_ENABLED before you blame the model name.

Common install errors and fixes

“UI loads, every job stays empty.” Flags still off. AI_ENABLED=true (+ budget flag if you use unlimited mode), then docker compose up -d.

Port 3000 taken. Remap the host port in docker-compose.yml or kill the other process; recreate.

Compose dies / Postgres unhealthy on first boot. Give migrations a minute. docker compose logs. Fresh VPS images often fail on disk pressure or bad permissions on the data directory.

The catch is laptops. Works at noon, silent at 2 a.m.APP_MODE=local dies when the host sleeps – background jobs and RSS pulls pause with it. Always-on means server mode, HTTPS, single-user login, machine that stays up (README self-host path). Back up Postgres and runtime credentials.

SaaS path sticker shock. Skip self-host and the cliff shows up fast. As of late 2026 pricing checks: Copy.ai Chat about $24/mo annual or $29 monthly (5 seats), then Growth about $1,000/mo – no friendly middle. Jasper Pro lands near $59-69 per seat monthly. That is a budget-architecture problem, not “the model isn’t smart enough.”

Optional: strategy workspace without Docker

Files + CLI only.

git clone https://github.com/ChenShuo2004/Shuo-s-content-OS.git
cd "Shuo-s-content-OS"
python "06-系统引擎-system-engine/工具-tools/content_os.py" init "../my-private-content"
python "06-系统引擎-system-engine/工具-tools/content_os.py" status "../my-private-content"

README flow: topic → draft → score → blind prediction → publish → retro → update rubric. Keep accounts, cookies, and live drafts out of public forks.

Upgrade, migration, uninstall

Upgrade Qingliu:git pull, read CHANGELOG.md, snapshot volumes, then docker compose up -d --build. v0.1.0 is early – expect breaking env changes; re-check provider vars after every pull.

Uninstall / cleanup:

cd qingliu-content-os-oss
docker compose down
# destroy DB + drafts permanently:
docker compose down -v
cd .. && rm -rf qingliu-content-os-oss

Revoke provider keys after teardown. Wipe VOICE.md / private workspace copies if they ever held secrets.

Funny how “install strategy” sounds wrong until a team ships fifty near-identical posts and blames the model for the traffic dip.

FAQ

Do I need Qingliu to have an AI content strategy?

No. Pillars, gates, measurement. Docker only makes role-split models and versioned drafts harder to skip.

Will pure AI drafts rank if I self-host the stack?

No. Hosting location does not move Google’s quality bar. Use the stack to force briefs, sources, and a human publish gate – not to launder mass generation.

ChatGPT Plus vs Claude Pro vs a content SaaS for this setup?

Late-2026 public checks: Plus and Claude Pro both hover near $20/month – fine for chat-side briefing and line edits. Pair a self-hosted OpenAI-compatible key with Qingliu when drafts must stay on your disk with job history. Full GTM platforms are built for seat-and-credit workflows; chat entry tiers often omit the automation people assume is included, so price the next tier before you redesign the pipeline around it. Chat for judgment. Compose when you want persistent jobs without another vendor holding the corpus.

Next action: clone Qingliu, write GATE.md first, only then set AI_ENABLED, run one end-to-end job, and refuse to publish the export until a human initials the claim list.