Skip to content

dfuentes87/wikijs-cli

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

wikijs-cli

A Go command-line client for Wiki.js 2.x.

Forked from hopyky/wikijs-cli (no longer available) which was written in JavaScript. The majority of features have been ported over, with some minor changes to naming and additional support.

Features

  • Full CRUD operations - Create, read, update, and delete wiki pages
  • Tag management - Add, remove, set, and list tags
  • Asset management - Upload, list, and delete files
  • Search - Full-text page search and content grep
  • Backup & Restore - Export and import wiki content
  • Bulk operations - Create/update multiple pages from files with progress bars
  • Version control - View history and revert to previous versions
  • Link checker - Find broken internal links
  • Page validation - Check images, links, and content quality
  • Templates - Create pages from reusable templates
  • Shell completion - Auto-completion for bash/zsh/fish/powershell
  • Tree view - Visual hierarchy of all pages
  • Interactive shell - REPL mode for multiple commands
  • Markdown linting - Validate markdown issues
  • Search & replace - Find and replace text across pages
  • Local sync - Download wiki pages to a local directory
  • Rate limiting - Configurable delays for bulk operations and sync

Install

go install github.com/dfuentes87/wikijs-cli/cmd/wikijs@latest

Configuration

Copy the example config into your home directory and edit it. Default paths:

  • macOS/Linux: ~/.config/wikijs.json
  • Windows: %AppData%\wikijs\config.json

Configuration Options

Option Description Default
url Wiki.js server URL Required
apiToken API authentication token Required
defaultEditor Default editor type markdown
defaultLocale Default page locale en
autoSync.path Default sync output directory -
backup.enabled Enable backups true
backup.path Backup directory -
backup.keepDays Backup retention 30

Environment Variables

You can override the config path with --config or WIKIJS_CONFIG. If WIKIJS_URL and WIKIJS_API_TOKEN are set, the CLI can run without a config file.

Environment variables override values:

  • WIKIJS_URL
  • WIKIJS_API_TOKEN
  • WIKIJS_DEFAULT_LOCALE
  • WIKIJS_DEFAULT_EDITOR

Getting an API Token

  1. Log in to your Wiki.js instance as an administrator
  2. Go to Administration > API Access
  3. Create a new API key with the required permissions
  4. Copy the token to your configuration file

Usage

Basic Commands

# Check connection
wikijs health

# Show command help
wikijs help
wikijs help <command>

# Interactive shell mode
wikijs shell

# List pages
wikijs list
wikijs list --limit 20 --locale en --tag docs

# Search pages
wikijs search "configuration"

# Get a page
wikijs get 1                    # by ID
wikijs get /docs/guide --raw    # by path
wikijs get 1 --raw --metadata   # with metadata header

Creating & Editing Pages

# Create a page with inline content
wikijs create /docs/intro "Introduction" --content "# Welcome"
# Create from a file
wikijs create /docs/guide "Guide" --file ./guide.md --tag docs,guide
# Create from stdin
wikijs create /docs/readme "README" --stdin

# Update a page
wikijs update 1 --content "Updated content"
wikijs update 1 --file ./updated.md
wikijs update 1 --title "New title" --tags docs,important

# Move a page
wikijs move 1 /new/path

# Delete a page
wikijs delete 1
wikijs delete 1 --force # Skip confirmation

Tag Management

# List all tags
wikijs tags
wikijs tags --format json

# Manage page tags
wikijs tag 1 add important
wikijs tag 1 remove draft
wikijs tag 1 set docs,guide

Search & Discovery

# Find pages by title, path, description
wikijs search "configuration"

# Search content within a page
wikijs grep "TODO"
wikijs grep "deprecated" --path /docs --case-sensitive

# Get page info
wikijs info 1
wikijs info /docs/guide

# View statistics
wikijs stats
wikijs stats --detailed

Backup & Restore

# Create a backup
wikijs backup --output backup.json
wikijs backup --output - --format json

# Export pages to files
wikijs export ./pages
wikijs export ./pages-json --file-format json --format json

# Restore from backup
wikijs restore-backup backup.json --dry-run
wikijs restore-backup backup.json --skip-existing
wikijs restore-backup backup.json --force

Version Control

# View page history
wikijs versions 1

# Revert to a previous version
wikijs revert 1 5

Bulk Operations

# Create pages from a folder of markdown files
wikijs bulk-create ./pages --path-prefix /docs --tag imported
wikijs bulk-create ./pages --dry-run

# Update existing pages from files
wikijs bulk-update ./pages --path-prefix /docs
wikijs bulk-update ./pages --skip-missing

# Sync all pages to local directory
wikijs sync --output ./local-wiki
wikijs sync --output ./local-wiki --file-format json --format json
wikijs sync --path /docs --delete

# Move pages from one path to another
wikijs bulk-move /docs/old /docs/new --dry-run
wikijs bulk-move /docs/old /docs/new --force

# Bulk tag or delete pages under a path
wikijs bulk-tag /docs add reviewed --dry-run
wikijs bulk-delete /docs/archive --dry-run
wikijs bulk-delete /docs/archive --force

Asset Management

# List assets
wikijs asset list
wikijs asset list --folder /uploads --limit 100

# Upload a file
wikijs asset upload ./image.png
wikijs asset upload ./image.png --rename hero.png

# Delete an asset
wikijs asset delete 42

Tree View & Analysis

# Display page hierarchy as a tree
wikijs tree
wikijs tree --locale en

# Find broken internal links
wikijs check-links
wikijs check-links --path /docs

# Compare page versions
wikijs diff 1
wikijs diff 1 5
wikijs diff 1 4 5

Page Operations

# Clone/duplicate a page
wikijs clone 1 /docs/copy-of-page
wikijs clone /docs/source /docs/copy --with-tags

# Search and replace across pages
wikijs replace "old term" "new term" --dry-run
wikijs replace "old term" "new term" --path /docs --force
wikijs replace "old[0-9]+" "new" --regex --case-sensitive --force

Content Quality

# Lint a local Markdown file
wikijs lint ./document.md
wikijs lint ./document.md --format json

# Validate page content (images, links, quality)
wikijs validate 1
wikijs validate --all --format json

Templates

# List available templates
wikijs template list

# Create a template
wikijs template create doc --content "# {{title}}\n\nCreated: {{date}}"
wikijs template create doc --file ./template.md

# Use a template when creating a page
wikijs create /docs/new "New Page" --template doc

# Show/delete templates
wikijs template show doc
wikijs template delete doc --force

Shell Completion

Completion scripts are provided by Cobra:

wikijs completion bash
wikijs completion zsh
wikijs completion fish
wikijs completion powershell

Global Flags

wikijs --config ./wikijs.json <command>
wikijs --format json <command>
wikijs --verbose <command>
wikijs --debug <command>
wikijs --rate-limit 500 <command>
wikijs --no-color <command>    # Disable colors (for CI/scripts)

Supported output formats are table and json. Color is only used for table/human output. --verbose logs request paths and HTTP statuses to stderr. --debug also logs.

Use wikijs completion --help for shell-specific installation instructions.

Troubleshooting

Connection Refused

Verify the url in your config file is correct Ensure Wiki.js is running and accessible Check firewall settings

Authentication Failed

Regenerate your API token in Wiki.js admin Ensure the token has the required permissions Check the token hasn't expired

Page Not Found (by path)

Paths are case-sensitive Use wikijs list to see existing paths Try specifying --locale if using multiple languages

API Compatibility

The CLI targets Wiki.js 2.x:

  • GraphQL requests use /graphql.
  • Asset uploads use /u.
  • API authentication uses Authorization: Bearer <token>.

Contributing

See CONTRIBUTING.md

Development

git clone https://github.com/dfuentes87/wikijs-cli.git
go build ./cmd/wikijs
go test ./...
go vet ./...
GOOS=linux GOARCH=amd64 go build -o /tmp/wikijs-linux-amd64 ./cmd/wikijs
GOOS=darwin GOARCH=arm64 go build -o /tmp/wikijs-darwin-arm64 ./cmd/wikijs
GOOS=windows GOARCH=amd64 go build -o /tmp/wikijs-windows-amd64.exe ./cmd/wikijs

License

GPLv3

About

A comprehensive command-line interface for Wiki.js

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Contributors

Languages