-
Notifications
You must be signed in to change notification settings - Fork 1
01 Getting Started
Ghost Writer is an AI content engine that produces human-quality writing calibrated to pass AI detection systems. This guide walks you through installation, prerequisites, and your first content generation.
Before you begin, ensure you have:
| Requirement | Details |
|---|---|
| Node.js | Version 18 or higher |
| OpenAI API Key | For GPT-5.4 content generation |
| GPTZero API Key | For AI detection validation (optional but recommended) |
| Pangram API Key | For Pangram Labs detection (optional) |
| Originality.ai API Key | For plagiarism + AI detection (optional) |
All three detection APIs (GPTZero, Pangram, Originality) run in parallel when enabled. Content passes only when all configured detectors return human-like scores.
git clone https://github.com/itallstartedwithaidea/writing-agent.git
cd writing-agentnpm installIf you're developing the CLI alongside other tools:
npm linkCreate a config file from the template:
cp config/local.yaml.example config/local.yamlEdit config/local.yaml and add your API keys:
# config/local.yaml
openai:
apiKey: "sk-..."
gptzero:
apiKey: "your-gptzero-api-key"
pangram:
apiKey: "your-pangram-api-key"
originality:
apiKey: "your-originality-api-key"Security: Never commit config/local.yaml to version control. Add it to .gitignore.
ghost write --type linkedin --topic "Why PMax works better with brand campaigns"| Type | Example |
|---|---|
| LinkedIn post | ghost write --type linkedin --topic "Your topic" |
| Twitter/X thread | ghost write --type twitter --topic "Your topic" |
| Reddit post | ghost write --type reddit --topic "Your topic" |
| Blog post | ghost write --type blog --topic "Your topic" --length 1500 |
ghost write --type email --topic "Your subject" |
|
| Substack | ghost write --type substack --topic "Your topic" |
ghost write --type linkedin --topic "Topic" --voice john-williams --length 500 --context "B2B SaaS audience"The config/local.yaml file controls:
- API keys — OpenAI, GPTZero, Pangram, Originality
-
Default voice —
john-williams,agency,technical, orcasual -
Default content type — e.g.,
linkedin,blog - Detection thresholds — AI probability targets (default: <30%)
Example full config:
openai:
apiKey: "sk-..."
gptzero:
apiKey: "gptzero-key"
pangram:
apiKey: "pangram-key"
originality:
apiKey: "originality-key"
defaults:
voice: john-williams
type: linkedin
length: 500
detection:
aiThreshold: 0.30
plagiarismThreshold: 0.05If you prefer not to run the CLI, use the hosted app:
- Ghost Writer App: https://googleadsagent.ai/tools/writing-agent/app.html
The web app supports:
- Generate content with 18 platform types
- Check existing text (grammar, readability, AI detection)
- Import custom voice profiles from writing samples
API keys are stored in your browser (AES-256 encrypted in sessionStorage) and sent only to the respective API providers — never to a central server.
- Architecture Deep Dive — Understand the 5-stage pipeline
- Content Type Playbooks — Platform-specific best practices
- Voice Profiles — Create and use custom voices