- Node.js 18+ — Download
- An LLM API key — Anthropic (Claude) recommended. OpenAI (GPT-4) also supported.
- Optional: Detector API keys — GPTZero, Pangram, and/or Originality.ai for triple-checking
# Clone
git clone https://github.com/itallstartedwithaidea/writing-agent.git
cd writing-agent
# Install dependencies
npm install
# Link CLI globally (so you can run `ghost` from anywhere)
npm link
# Create your local config (gitignored — safe for API keys)
cp config/default.yaml config/local.yamlEdit config/local.yaml:
llm:
provider: "anthropic"
api_key: "sk-ant-your-key-here"
model: "claude-sonnet-4-20250514"
detectors:
enabled: true # Set to true once you have API keys
providers:
gptzero:
api_key: "your-gptzero-key"
pangram:
api_key: "your-pangram-key"Or use environment variables:
export ANTHROPIC_API_KEY="sk-ant-your-key-here"
export GPTZERO_API_KEY="your-gptzero-key"ghost write --type linkedin --topic "Why vanity metrics are killing your ad campaigns"ghost check --text "Paste your content here to see how it scores"ghost check --file my-blog-post.md --verboseghost profile listWhen you run ghost write, five agents execute in sequence:
- Profile Agent loads the content type rules and your voice profile
- Writer Agent generates content with human pattern injection
- QA Agent runs all 40 checks — if anything fails, the content loops back to the Writer for targeted fixes (up to 3 revision loops)
- Adapter Agent formats for your target platform
- Polish Agent normalizes whitespace and strips any hidden metadata
The result is content that reads like you wrote it, because the system is calibrated to YOUR voice.
- Read 02 — Architecture Deep Dive to understand the pipeline
- Read 03 — The 40 Checks Explained for the full QA breakdown
- Check 04 — Content Type Playbooks for platform-specific guides
- See 08 — Examples & Outputs for before/after comparisons