Interactive CLI to backup and restore Storyblok CMS spaces. Wraps storyblok-backup with a friendly prompt-based interface.
- Interactive prompts for all inputs (powered by @clack/prompts)
- CLI flags for scripting and CI/CD usage
- Environment variable support (
.envfile) - Multi-space backup and restore in a single run
- Pass additional arguments through to the underlying backup/restore tools
Run directly with npx (no install needed):
npx storyblok-backup-cliOr install globally:
npm install -g storyblok-backup-cliThe CLI supports three input modes. Values are resolved in order: CLI flags > environment variables > interactive prompts.
Simply run the command and answer the prompts:
npx storyblok-backup-clinpx storyblok-backup-cli --backup --token YOUR_TOKEN --spaces "my-space:12345,other:67890"npx storyblok-backup-cli --restore --token YOUR_TOKEN --spaces "my-space:12345" --args "--verbose"Create a .env file in the project root:
STORYBLOK_TOKEN=your-storyblok-token
STORYBLOK_SPACES=my-space:12345,another:67890
STORYBLOK_ARGS=Then run:
npx storyblok-backup-cli --backup| CLI Flag | Environment Variable | Description |
|---|---|---|
--backup |
— | Run in backup mode (skips task prompt) |
--restore |
— | Run in restore mode (skips task prompt) |
--token |
STORYBLOK_TOKEN |
Storyblok OAuth token |
--spaces |
STORYBLOK_SPACES |
Spaces to process (comma-separated, format: label:id) |
--args |
STORYBLOK_ARGS |
Additional arguments passed to storyblok-backup/-restore |
Spaces are specified as comma-separated label:id pairs. The label is used as the backup folder name:
my-space:12345,another:67890
If you omit the label, the ID is used as both label and ID:
12345,67890
The backup includes all content types supported by storyblok-backup:
- Stories
- Components & component groups
- Datasources & datasource entries
- Assets & asset folders
- Internal tags
- Space roles
- Workflows & workflow stages
- Releases
- Pipeline branches
- Presets
- Webhooks
- Access tokens
- Tasks
- Collaborators
Backups are saved to ./storyblok-backups/<space-label>/.
npm install
npm run format # Format code with Prettier
npm run format:check # Check formatting
npm run lint # Lint with ESLint
npm run typecheck # Type-check with TypeScript