🧩 BookStackでタイトルのみのページを一括作成する(API利用)
🧭 はじめに
この手順書は、BookStack上に「タイトルだけの空ページ」をまとめて作成するための実務向けガイドである。 天文学史ノートのように、先に構造(ページ枠)を一気に用意し、内容は後から埋める運用を前提としている。
目的は以下の3点に集約される:
- 手作業を避け、短時間・低ミスでページ枠を作る
- BookStackの内部構造を壊さず、安全に作成する
- 再実行・再利用できるバッチ処理にする
🎯 この手順でできること
- 指定したChapter配下に 「1〜21のタイトルだけを持つページ」を一括生成
- 本文は後から編集可能(最初は空に近い状態)
- BookStackの履歴・権限・URL構造を正しく維持
ノート作成の初動コストを極限まで下げられる。
🧱 前提条件
🔑 必須条件
-
BookStackがAPI対応バージョン(v0.27以降)
-
管理者権限ユーザー
-
対象の
- Bookshelf
- Book
- Chapter が事前に作成済み
ページは必ずChapter配下に作成する。
Book直下に作ると後で構造整理が面倒になる。
🔐 APIトークンの準備(初回のみ)
手順
-
BookStack管理画面にログイン
-
Users → 自分のユーザー
-
API Tokens セクションで新規トークン作成
-
以下を控える:
- Token ID
- Token Secret
Token Secretは二度と表示されない。
必ず安全な場所に保存する。
🧠 実装方針(重要)
なぜAPIを使うのか
-
BookStackは以下の情報を内部で連動管理している:
- pages
- revisions
- permissions
- activity_log
DBを直接書き換えてはいけない。
履歴破損・アップデート不能の原因になる。
→ 公式APIを使うのが唯一の安全ルート。
🛠️ 実装手順(bash + curl)
① 作成するページタイトル一覧を定義
titles=(
"1. 天文学とは何か"
"2. 天文学史をどう見るか"
"3. 先史・古代文明の天文学"
"4. メソポタミア・エジプト天文学"
"5. ギリシャ天文学"
"6. 中国天文学"
"7. インド・イスラーム天文学"
"8. 中世ヨーロッパの宇宙観"
"9. 観測精度の限界と停滞"
"10. 地動説の登場"
"11. 観測革命"
"12. 物理法則の導入"
"13. 万有引力と宇宙"
"14. 望遠鏡の進化"
"15. 分光学と恒星の正体"
"16. 恒星の進化と分類"
"17. 銀河の発見"
"18. 相対論と宇宙"
"19. ビッグバン宇宙論"
"20. 現代の観測技術"
"21. 系外惑星と生命探査"
)
番号プレフィックスを付けることで、並び順が将来も安定する。
② API接続情報を設定
API_URL="https://your-bookstack.example.com/api/pages"
TOKEN_ID="xxxxx"
TOKEN_SECRET="yyyyy"
CHAPTER_ID=123
CHAPTER_IDは作成先ChapterのID- ChapterのURLを見ると数値で確認できる
③ バッチでページを一括作成
for title in "${titles[@]}"; do
curl -s -X POST "$API_URL" \
-H "Authorization: Token $TOKEN_ID:$TOKEN_SECRET" \
-H "Content-Type: application/json" \
-d "{
\"name\": \"$title\",
\"html\": \"<p></p>\",
\"chapter_id\": $CHAPTER_ID
}"
done
htmlフィールドは空にできない。
`
✅ 実行後の確認
-
Chapter配下に
- タイトルのみのページが21個並んでいる
-
各ページは通常通り編集可能
-
URL・履歴・権限が正しく付与されている
この時点で「書くための器」は完成。
🧠 運用上のベストプラクティス
-
初期本文は以下でも可:
<p><em>TODO</em></p> -
中身を書き始めるのは1ページずつでよい
-
後からページを分割・移動してもURLは壊れない
BookStackは「後から整理する」ことを前提にした設計。
最初から完璧を目指さない。
🚀 次の一手(推奨)
- この手順で21ページを一括生成
- 「2. 天文学史をどう見るか」だけを最初に埋める
- 他は空のまま放置して問題なし
構造を先に作ると、学習と執筆が驚くほど楽になる。