bookstack
BookStack Wiki & Documentation API integration. Manage your knowledge base programmatically: create, read, update, and delete books, chapters, pages, and shelves. Full-text search across all content. Use this skill whenever the user mentions BookStack, wiki pages, knowledge base, documentation pages, or wants to publish, update, or search content on a BookStack instance -- even if they just say 'update the docs' or 'check the wiki' without naming BookStack explicitly. Also use when syncing or automating documentation workflows between systems.
Install via CLI (Recommended)
clawhub install openclaw/skills/skills/f-liva/bookstack-apiBookStack 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.
Metadata
Not sure this is the right skill?
Describe what you want to build — we'll match you to the best skill from 16,000+ options.
Find the right skillPaste this into your clawhub.json to enable this plugin.
{
"plugins": {
"official-f-liva-bookstack-api": {
"enabled": true,
"auto_update": true
}
}
}Related Skills
fatsecret
FatSecret nutrition API integration for food search, nutritional lookup, barcode scanning, recipe search, and food diary logging. Use when user needs to find nutritional information for foods, search the food database, scan product barcodes, look up calories/macros/micronutrients, search for healthy recipes, or log meals to their FatSecret diary.
ynab-api
YNAB (You Need A Budget) budget management via API. Add transactions, track goals, monitor spending, create transfers, and generate budget reports. Use this skill whenever the user mentions YNAB, budget tracking, spending analysis, budget goals, Age of Money, or wants to manage their personal finances -- even if they just say 'add an expense', 'how much did I spend', 'check my budget', or 'upcoming bills' without naming YNAB explicitly. Also use for automated budget reports and financial summaries.
ryot
Complete Ryot media tracker with progress tracking, reviews, collections, analytics, calendar, and automated daily/weekly reports. Track TV shows, movies, books, anime, games with full GraphQL API integration.
track17
Track parcels via the 17TRACK API (local SQLite DB, polling + optional webhook ingestion)
17track
Track parcels and shipments via the 17TRACK API. Manage a local SQLite database of tracked packages with automatic status polling, webhook ingestion, and daily reports with auto-cleanup. Use this skill whenever the user mentions package tracking, parcel tracking, shipment status, 17TRACK, tracking numbers, delivery status, or wants to check where a package is -- even if they just say 'track this', 'where is my order', or 'any updates on my package' without naming 17TRACK explicitly. Also use for automating delivery notifications and daily shipping reports.