BookStack API Skill
Interact with a BookStack wiki through its REST API using the bundled Python script. No external dependencies beyond Python 3 standard library.
Configuration
Credentials live in ~/.clawdbot/clawdbot.json under the bookstack skill entry:
{
"skills": {
"entries": {
"bookstack": {
"env": {
"BOOKSTACK_URL": "https://your-bookstack.example.com",
"BOOKSTACK_TOKEN_ID": "your-token-id",
"BOOKSTACK_TOKEN_SECRET": "your-token-secret"
}
}
}
}
}
Generate a token from BookStack: Profile > API Tokens > Create Token. The user's role needs the "Access System API" permission enabled.
Usage
All commands follow the pattern:
python3 scripts/bookstack.py <command> [args] [options]
Pass the env vars from the config above when executing.
Quick Reference
| Action | Command |
|---|---|
| Search | search "query" [--type page|book|chapter] |
| List pages | list_pages [--count N] |
| Read page | get_page <id> [--content|--markdown] |
| Create page | create_page --book-id <id> --name "Title" --html "<p>content</p>" |
| Update page | update_page <id> --html "<p>new content</p>" |
| Delete page | delete_page <id> |
The same CRUD pattern applies to books, chapters, and shelves. For the full command list with all flags and options, see references/api-commands.md.
Important Notes
- Cloudflare protection: The script sends a
User-Agentheader because BookStack instances behind Cloudflare reject requests without one (HTTP 403). If you get a 403, this is likely why. - Content formats: Pages accept HTML by default. Use
--markdownfor Markdown input. When reading,get_page --contentreturns HTML,--markdownreturns Markdown. - Large HTML updates: For big page updates, prepare the HTML in a temp file and read it into the API call programmatically, rather than passing it inline on the command line.