publish について
publish は、gbrain のページを単体で動作する HTML に変換するスキルです。外部共有向けに内部メタデータを除去し、既定でクライアント側暗号化を行います。
主な機能
- 01単体で動作する HTML の生成
- 02非公開メタデータと内部リンクの除去
- 03AES-256-GCM による既定の暗号化
- 04ローカルファイルやクラウドストレージで共有
活用シーン
- 01ブリーフィングや調査内容の外部共有
- 02データルーム分析や旅行計画の公開
- 03静的ホスティングで暗号化ページを共有
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ garrytan/ gbrain --skill publishインストール後、Claude Code で/publishを入力して読み込まれたか確認します。
詳細
公開スキル
brain ページを、美しく自己完結した HTML ドキュメントとして共有します。オプションで、クライアント側の AES-256-GCM 暗号化によるパスワード保護も可能です。サーバーは不要です。
これはコードとスキルのペアです。決定論的なコード(gbrain publish)が、不要な情報の削除、暗号化、HTML の生成を行います。このスキルでは、いつ、どのように使うかを説明します。アーキテクチャの考え方については、薄いハーネス、厚いスキルをご覧ください。
契約
- 公開される HTML は完全に自己完結しており、外部依存関係もサーバーも不要です。
- すべての非公開メタデータ(frontmatter、出典の引用、確認番号、brain 内の相互リンク、タイムライン)は、公開前に削除されます。
- パスワード保護には、PBKDF2 による鍵導出を用いた AES-256-GCM を使用します。暗号化された HTML ファイルに平文が含まれることはありません。
- ユーザーが明示的に「open」「no password」「public」を指定しない限り、常に暗号化するのがデフォルトです。
- 外部 URL(
https://...)は保持されます。削除されるのは brain 内部のパスのみです。
公開するタイミング
- ユーザーが brain ページの共有や、共有可能なリンクの作成を依頼したとき、または「ページをください」と言ったとき
- ユーザーがディールメモ、人物概要、調査内容を外部の相手に送りたいとき
- ユーザーがデータルームの分析や旅行計画の公開を依頼したとき
- システム全体を公開せずに brain の内容を外部に出す必要があるとき
デフォルト:常に暗号化
brain の内容は非公開です。ユーザーが明示的に「open」「no password」「public」と指定しない限り、パスワードで保護してください。
パスワードが指定されていない場合は、自動生成します。パスワードは URL とは別のチャネルで共有してください。
クイックリファレンス
# Basic publish (outputs local HTML file)
gbrain publish brain/companies/acme.md
# Password protected (auto-generate password)
gbrain publish brain/companies/acme.md --password
# Password protected (specific password)
gbrain publish brain/companies/acme.md --password "secret123"
# Custom title
gbrain publish brain/companies/acme.md --password --title "Acme -- Deal Analysis"
# Custom output path
gbrain publish brain/companies/acme.md --out /tmp/acme-share.html
削除される内容
publish コマンドは、非公開・内部データをすべて自動的に削除します。
| 削除対象 | 例 | 理由 |
|---|---|---|
| YAML frontmatter | title:, type:, tags: | 内部メタデータ |
[Source: ...] 形式の引用 | すべての形式 | 出典情報は内部情報 |
| 確認番号 | ABC123DEF -> "on file" | 個人情報/予約情報 |
| brain 内の相互リンク | [Jane](../people/jane.md) -> Jane | 内部パス |
| タイムラインセクション | --- / ## Timeline 以下のすべて | 生の証拠ログ |
| 「関連項目」行 | 内部参照 | brain 内のナビゲーション |
保持される内容: 外部 URL(https://...)、その他すべてのコンテンツ。
共有ワークフロー
オプション A:ローカルファイル(最も簡単)
gbrain publish brain/people/jane-doe.md --password --out ~/Desktop/jane-briefing.html
HTML ファイルをメール、Slack、Airdrop で共有します。パスワードは別途共有してください。
オプション B:クラウドストレージにアップロード
# Publish locally first
gbrain publish brain/companies/acme.md --password "secret" --out /tmp/acme.html
# Upload to Supabase Storage
gbrain files upload /tmp/acme.html --page shares/acme
# Get a signed URL (1-hour expiry)
gbrain files signed-url shares/acme/acme.html
署名付き URL とパスワードを共有します。URL の有効期限は 1 時間です。必要に応じて再生成してください。
オプション C:静的ホスティング(Render、Netlify、S3)
HTML ファイルを任意の静的ホスティングサービスにアップロードします。ファイルは自己完結しているため、サーバー側のロジックは不要です。パスワード保護されたファイルは、Web Crypto API を介してすべてクライアント側で動作します。
オプション D:GitHub Pages / Gist
gbrain publish brain/trips/japan-2026.md --out trip.html
# Upload to a GitHub Gist or Pages repo
パスワード保護の詳細
- アルゴリズム: AES-256-GCM
- 鍵導出: PBKDF2、反復回数 100K、SHA-256
- ソルト: 暗号化ごとにランダムな 16 バイト
- IV: 暗号化ごとにランダムな 12 バイト
- 復号: Web Crypto API(SubtleCrypto)を介したクライアント側での処理
- サーバー認証は不要 -- HTML ファイルは自己完結しています
- 「このデバイスで記憶する」 -- パスワードを localStorage に保存します
暗号化すると、公開される HTML に含まれるのは暗号文のみです。ファイル内のどこにも平文は存在しません。
公開済みページの更新
同じ出力パスを指定して、publish コマンドを再実行します。
gbrain publish brain/companies/acme.md --password "same-password" --out shares/acme.html
同じファイル、同じ URL(ホスティングしている場合)で、内容が更新されます。
アクセスの取り消し
ファイルを削除します。署名付き URL を使用している場合、URL は自動的に期限切れになります(1 時間)。静的ホスティングを使用している場合は、ホストからファイルを削除してください。
失敗した場合
gbrain のエラー code、終了コード、[AGENT] ブロック、または通知ブロックについては、エージェントオペレータープロトコルに従ってください。このスキルに固有の事項は次のとおりです。
- ソースページが
page_not_foundを返す場合は、まず正しいスラッグを特定してください。推測したページを公開してはいけません。 gbrain files upload/gbrain files signed-urlが失敗する場合(ストレージが未設定、bucket_not_found):公開にはストレージが必要であることをユーザーに伝え、gbrain doctor --jsonを実行してください。代わりに非公開ページの内容を貼り付けてはいけません。
アンチパターン
- 暗号化せずに公開する。 Brain のコンテンツは非公開です。ユーザーが「open」、「no password」、または「public」と明示しない限り、パスワードで保護するのがデフォルトです。
- パスワードと URL を同じチャネルで共有する。 セキュリティのため、パスワードは必ず URL とは別のチャネルで共有してください。
- ユーザーが生の Markdown を求めていると決めつける。 公開コマンドは美しい HTML を生成します。
gbrain publishが使える場合は、Markdown をコピーして貼り付けないでください。 - 内部メタデータを含める。 フロントマター、出典の引用、またはタイムラインのセクションを含むコンテンツを手動で共有してはいけません。公開コマンドで取り除いてください。
出力形式
PUBLISHED: [page title]
========================
File: [output path]
Encrypted: [yes (AES-256-GCM) / no]
Password: [auto-generated password / user-provided / none]
Size: [file size]
Share the file via: [email / Slack / Airdrop / cloud upload]
Share the password via: [a different channel]
使用するツール
gbrain publish-- 決定論的な HTML 生成(LLM 呼び出しなし)gbrain files upload-- クラウドストレージへのアップロード(任意)gbrain files signed-url-- アクセスリンクの生成(任意)