Write category pages, product descriptions, and SEO articles that actually rank — in minutes, not days, and in your own brand voice.
Quickstart · Why NexRank · How to use it · Design choices · FAQ
NexRank is an open-source content engine for marketers, ecommerce teams, and SEO professionals. Point it at a topic (or a whole CSV of topics), pick a style, and it delivers SEO-optimized copy ready for your CMS.
Under the hood it is LLM-agnostic — it talks to Claude, GPT, or any provider you plug in — so you are never locked in to one vendor, one price, or one model generation.
One tool. One workflow. Hundreds of on-brand pages.
| Problem | How NexRank solves it |
|---|---|
| Writing SEO copy by hand is slow and expensive | Generate a single page in seconds or a full catalog in minutes |
| Generic AI output sounds robotic and off-brand | Every prompt is a template you control — your tone, your rules, your keywords |
| You don't want to be locked into one AI vendor | Swap between Claude, GPT, or any custom provider with a single flag |
| Bulk content means a CSV, a script, and 200 tabs | One command: nexrank batch categories.csv → categories.md |
| You need SEO structure, not just text | Templates enforce headings, keyword coverage, CTAs, length targets |
| Non-technical teammates can't touch a CLI | Launch the built-in Streamlit UI and hand them a link |
Use it for: category descriptions · product pages · blog articles · landing copy · meta descriptions · long-form SEO content · bulk rewrites.
Get your first SEO article generated in under two minutes.
git clone https://github.com/mhaegeman/nexrank.git
cd nexrankpython -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e ".[all]"cp .env.example .envOpen .env and paste in one of:
NEXRANK_ANTHROPIC_API_KEY=sk-ant-...
# or
NEXRANK_OPENAI_API_KEY=sk-...Don't have a key yet? Grab one from console.anthropic.com or platform.openai.com.
nexrank generate \
--topic "Trail running shoes" \
--keywords "lightweight, grip, long distance" \
--company "Acme Outfitters"That's it. You now have SEO-ready copy in your terminal.
NexRank ships three ways to use the same engine — pick whichever fits your workflow.
Great for power users, one-offs, and shell scripts.
# single article
nexrank generate --topic "Standing desks" --keywords "ergonomic, adjustable"
# whole catalog from a CSV
nexrank batch examples/categories.csv \
--template seo_article.j2 \
--format markdown \
--output output/catalog.md
# list available providers
nexrank providersThe CSV columns map straight onto the prompt template. Columns called
keywords or features are automatically split on , or |.
Example CSV (examples/categories.csv):
topic,keywords,company,tone
Running shoes,"trail|cushioning|lightweight",Acme Outfitters,energetic
Smart doorbells,"video doorbell|motion alerts",Hearthwatch,trustworthyNo command line, no CSV, no problem. Perfect for marketers and editors.
streamlit run nexrank/ui.pyA browser window opens with two tabs — SEO article and Product description — plus sliders for provider, temperature, and length. Fill in the form, click Generate, copy the result into your CMS.
Embed NexRank directly in your own pipeline, Airflow DAG, or internal tool.
from nexrank import ContentGenerator, GenerationRequest
generator = ContentGenerator(provider="anthropic")
result = generator.generate(
GenerationRequest(
template="seo_article.j2",
variables={
"topic": "Smart home security",
"keywords": ["video doorbell", "motion alerts", "privacy"],
"company": "Hearthwatch",
"tone": "trustworthy",
"min_words": 400,
},
)
)
print(result.text)nexrank/
├── prompts/ # 👈 Edit these to match your brand voice
│ ├── seo_article.j2 # Category pages, blog posts, long-form
│ └── product_description.j2 # Short, punchy product copy
├── providers/ # Claude + GPT (add your own in one file)
├── exporters/ # Markdown and JSON output
├── cli.py # Typer CLI
└── ui.py # Streamlit UI
The prompt templates are the product. They are plain Jinja2 files — open them in any editor, tweak the tone, add your SEO checklist, save. No code change, no redeploy.
A few decisions that shape how NexRank behaves. Knowing them will help you get the most out of it.
- LLM-agnostic by default. Every provider lives behind the same
LLMProviderinterface. Switching from Claude to GPT is a single flag (--provider openai). You never rewrite prompts or pipelines. - Prompts are files, not strings. Templates live in
nexrank/prompts/as.j2files. Your brand voice, SEO rules, and length targets are versioned alongside your code — not buried inside Python. - Config via
.env, overrides via flags. Sensible defaults ship with the package; secrets and preferences live in.env(never committed); one-off tweaks happen on the command line. No surprise behavior. - CSV-first for bulk work. The fastest way to rewrite 500 category pages is
a spreadsheet, not an API loop.
nexrank batchtakes any CSV and fans it out across the generator, then exports Markdown or JSON you can paste straight into a CMS. - Three frontends, one engine. The CLI, the Streamlit UI, and the Python
API all call the same
ContentGenerator. Whatever you do in one, you can do in the others — including running tests against a fake provider so you never burn API credits on CI. - Typed, tested, MIT-licensed. Pydantic settings, dataclass I/O, a pytest suite that runs without any API keys, and a permissive license so you can fork it for your agency.
Does it cost money to run? The code is free and MIT-licensed. You only pay your chosen LLM provider (Anthropic or OpenAI) for the tokens you generate — typically a few cents per article.
Which provider should I pick? Claude (Anthropic) tends to produce more natural long-form prose; GPT (OpenAI) is a strong all-rounder. Try both on your own prompts — switching is one flag.
Can I add my own brand guidelines?
Yes. Open nexrank/prompts/seo_article.j2, edit the instructions, save.
Every future generation uses your rules.
Can I plug in another model (Gemini, Mistral, a local LLM)?
Yes. Create nexrank/providers/<name>.py, subclass LLMProvider, implement
complete(), and register it. About 40 lines of code.
Is my content private? NexRank itself runs locally on your machine and stores nothing. Prompts are sent directly to the provider you configured — consult their privacy terms.
MIT © NexRank Contributors. See LICENSE.
Ready to scale your SEO content? Clone, install, and generate your first article in two minutes. ⬆