create-contioreach-blog
| Install | |
|---|---|
npm install create-contioreach-blog |
|
| Latest Version: | 0.1.1 |
| License: | MIT |
| Last Updated: | Oct 8, 2026 |
| Links: | GitHub · npm |
create-contioreach-blog
Create a blog wired to ContioReach in one command. It runs on demo content straight away — no signup, no login, no questions about workspaces.
npx create-contioreach-blog my-blog
┌ create-contioreach-blog
│
◇ Which framework?
│ Next.js (recommended)
│
◇ Starter downloaded
◆ Demo API key added to .env.local
◆ Revalidation route ready: src/app/api/revalidate/all/route.js
◇ Dependencies installed
│
◇ Next ──────────────────────────────────╮
│ cd my-blog │
│ npm run dev → http://localhost:3000 │
├─────────────────────────────────────────╯
│
● You're on demo content. To use your own posts:
│ 1. Sign up free: https://app.contioreach.com/signup?ref=cli&fw=next
│ 2. Copy your API key into .env.local
│
└ Happy publishing!
Options
| Option | |
|---|---|
[project-name] |
Folder to create. Asked for when left out (default my-blog). |
--framework <name> |
Skip the question: next, nuxt, astro, sveltekit, remix or react. |
--no-install |
Skip installing dependencies. |
Works with npm create contioreach-blog, pnpm create contioreach-blog, yarn create contioreach-blog and bun create contioreach-blog too — dependencies are installed with whichever one ran it.
What it does
- Downloads the framework's starter from github.com/contioreach.
- Copies the starter's
.env.exampleto.env.local(Next.js) or.env(everything else). That file already holds the read-only key of the ContioReach demo workspace. - Renames the project in
package.json. - Installs dependencies.
The publish webhook route is already part of every starter (/api/revalidate/all). REVALIDATION_SECRET stays empty: it is generated in your own dashboard when you set the webhook up, and the route rejects every call until then.
The demo key is not hard-coded in the CLI. It lives in each starter's .env.example (and DEMO_API_KEY constant), so rotating it is a commit to the starters and every CLI version picks it up.
The demo banner
Every starter shows a banner above the site header while CMS_API_KEY is the demo key — on a deployed site too, so nobody launches a public blog on demo content by accident. The check runs on the server; the browser only ever gets a status, never the key. The close button hides it for the browser session.
Paste your own key and restart, and the banner goes away by itself. If ContioReach rejects the key, the banner turns into an "Invalid API key" notice instead.
When something goes wrong
| Situation | What happens |
|---|---|
| Folder exists and isn't empty | Asks for another name. Never overwrites files. |
| Node too old for the framework | Stops before downloading and names the version needed. |
| No internet / GitHub unreachable | Stops with a message. Nothing is left behind. |
| Dependency install fails | Keeps the project and prints the install command to run yourself. |
| Ctrl+C | Stops any running install and deletes the partly created folder. |
Develop
npm install
npm test
node bin/create-contioreach-blog.js my-blog --no-install
Related Packages
Multi-platform analytics SDK for browser, React, Next.js, Remix, Vue, Svelte, Nu...
Prepr personalization, A/B testing and preview toolkit for React, Next.js, Nuxt,...
SEO and GEO audit tool for developers. Audits Next.js, Astro, SvelteKit, Nuxt, a...
Version History
| Version | Released | License |
|---|---|---|
| 0.1.1 | MIT | |
| 0.1.0 | MIT |
Pre-releases (1)
| Version | Released | License |
|---|---|---|
| 0.0.0-stage |