メインコンテンツへスキップ

🧩 BookStackでタイトルのみのページを一括作成する(API利用)

🧭 はじめに

この手順書は、BookStack上に「タイトルだけの空ページ」タイトルのみの空ページ」をまとめて作成するための実務向けガイドである。 天文学史ノートのように、先に構造(ページ枠)を一気に用意し、内容は後から埋める運用を前提としている。

目的は以下の3点に集約される:本手順では特に、章・記事(Page)には数値プレフィックスを付けないという方針を明確にする。 これはBookStackのソート仕様を正しく前提にした、長期運用向けの設計判断である。

    手作業を避け、短時間・低ミスでページ枠を作る BookStackの内部構造を壊さず、安全に作成する 再実行・再利用できるバッチ処理にする

    🎯 この手順でできること

    • 指定したChapter配下に 1〜21のタイトルだけを持つページ」を一括生成意味だけを持つタイトル」のページを一括生成
    • 本文は後から編集可能(ページ順はBookStackのUIで自由に並び替え可能
    本文は後から編集(最初は空に近い状態) BookStackの履歴・権限・URL構造を正しく維持

    ノート作成の初動コストを極限まで下げられる。構造を壊さず、将来の挿入・削除に強いノート基盤を一気に用意できる。


    🧱 前提条件

    🔑 必須条件

    • BookStackがAPI対応バージョン(v0.27以降)

    • 管理者権限ユーザー

    • 対象の

      • Bookshelf
      • Book
      • Chapter が事前に作成済み

    ページは必ずChapter配下に作成する。
    Book直下に作ると後で構造整理が面倒になる。Book直下に作ると、後から構造整理が煩雑になる。


    📐 タイトル設計の原則(重要)

    🚫 数値プレフィックスを付けない

      Chapter / Page は本の中で自由にソート可能

      タイトルに番号を含めると:

        挿入・削除時に欠番や重複が発生 分割時にタイトルが不自然になる

        章・記事タイトルに番号を入れてはいけない。
        それは将来の編集コストを確実に増やす。


        ✅ 正しい役割分担

          順序管理:BookStackのUI(ドラッグ&ドロップ) 意味表現:タイトル文字列そのもの

          順序はUI、意味はタイトル。


          🔐 APIトークンの準備(初回のみ)

          手順

          1. BookStack管理画面にログイン

          2. Users → 自分のユーザー

          3. API Tokens セクションで新規トークン作成

          4. 以下を控える:

            • Token ID
            • Token Secret

          Token Secretは二度と表示されない。
          必ず安全な場所に保存する。


          🧠 実装方針(重要)なぜAPIを使うか)

          なぜAPIを使うのか

            BookStackは以下の情報を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を見ると数値で確認できる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個並んでいる
              Chapter配下に、タイトルのみのページが作成されている

              各ページは通常通り編集可能

              ページ順はUI上で自由に並び替え可能

              URL・履歴・権限が正しく付与されている

              各ページは通常どおり編集・分割・移動できる

              この時点で「書くための器」は完成。だけが完成している状態。


              🧠 運用上のベストプラクティス

              • 初期本文は以下でも可:

                <p><em>TODO</em></p>
                
              • 中身を書き始めるのは中身は1ページずつでよい1ページずつ順不同で書き始めてよい

              • 後からページを分割・移動してもURLは壊れない統合してもURLは壊れない

              BookStackは「後から整理する」後から並び替える」ことを前提にした設計。
              最初から完璧を目指さない。