Skip to main content
Jenks Guo

ドキュメント / reference

管理者 API

検証済みの git コミットを通してサイトのコンテンツを編集する、認証付きエンドポイントです。

すべての管理者エンドポイントには、エージェント用のサービス・トークンが必要です: Authorization: Bearer jgx_agt_…(CLI は環境変数 JENKSGUO_ADMIN_TOKEN を読みます)。Jenks は https://admin.jenksguo.xyz/admin で Google(Cloudflare Access)でサインイン後に Access からトークンを作成します。各トークンには名前、スコープ(content、media、publish。すべてのトークンは読み取り可能)、有効期限、失効が設定されます。ブランチ main への書き込みには publish も必要です。すべての書き込みと拒否された試行は監査ログに記録されます。詳しくはAI エージェントにアクセスを付与するを参照してください。 書き込みはビルドと同じスキーマで検証され、その後 GitHub にコミットされます。CI は変更されたエントリを各言語に翻訳し、再ビルドしてデプロイします: main → jenksguo.pages.dev および jenksguo.xyz、dev → dev.jenksguo.xyz。

メソッド パス ツール
GET · POST /api/admin/tokens —(人間のみ: エージェント・トークンの一覧または作成。SSO)
DELETE /api/admin/tokens/{id} —(人間のみ: 失効。SSO)
POST /api/admin/login · /api/admin/logout —(ローカル開発のみ)
GET /api/admin/whoami admin_whoami
GET /api/admin/audit admin_audit_log
GET /api/admin/schema admin_schema
GET /api/admin/files admin_list_files
GET /api/admin/file admin_read_file
POST /api/admin/validate admin_validate
PUT /api/admin/file admin_write_file
DELETE /api/admin/file admin_delete_file
POST /api/admin/changes admin_commit_changes
POST /api/admin/ai-edit admin_ai_edit
GET /api/admin/translation admin_read_translation
PUT /api/admin/translation admin_write_translation
GET /api/admin/copy admin_read_copy
PUT /api/admin/copy admin_write_copy
GET /api/admin/deploys admin_deploy_status
POST /api/admin/promote admin_promote
POST /api/admin/cv admin_publish_cv
GET /api/admin/media admin_list_media
POST /api/admin/media admin_upload_media
PATCH /api/admin/media admin_update_media
DELETE /api/admin/media admin_delete_media

エラー: 401 unauthorized · unknown_token · token_expired · token_revoked、403 missing_scope(needs[] 付き)· sso_required · forbidden_path(書き込み可能なのはコンテンツ・ファイルのみ)、422 invalid(errors[] 付き)、409/502 github_error、503 github_not_configured。

admin_whoami — 自分は誰か

認証情報を確認します:(SSO のメールまたはエージェント・トークン名としての)あなたの識別子、保有スコープ、トークンの有効期限、そして公開(GitHub)設定の有無です。

  • MCP: admin_whoami on https://jenksguo.pages.dev/mcp/admin
  • REST: GET /api/admin/whoami(エージェント・トークン)
  • Scope: read
  • CLI: jenks admin whoami

引数はありません。

curl -s "https://jenksguo.pages.dev/api/admin/whoami" \
  -H "Authorization: Bearer $JENKSGUO_ADMIN_TOKEN"

admin_audit_log — 監査ログ

最近の管理アクション(新しい順)です: 実行者(SSO メールまたはエージェント・トークン)、操作内容、対象ファイル、ブランチ、ホスト、結果を示します。エージェント・トークンは自分の操作のみを閲覧できます。

  • MCP: admin_audit_log on https://jenksguo.pages.dev/mcp/admin
  • REST: GET /api/admin/audit?limit=&token=(エージェント・トークン)
  • Scope: read
  • CLI: jenks admin audit [--limit 50]
引数 型 必須 備考
limit 整数 いいえ
token 文字列 いいえ 指定したエージェント・トークン ID のみ(人間のみ)
curl -s "https://jenksguo.pages.dev/api/admin/audit" \
  -H "Authorization: Bearer $JENKSGUO_ADMIN_TOKEN"

admin_schema — コンテンツ・スキーマ

コンテンツ・モデル(エントリのフィールドとルール、タグ、レンズ、種類、書き込み可能パス、ドキュメント、編集規約)です。書き込み前にお読みください。

  • MCP: admin_schema on https://jenksguo.pages.dev/mcp/admin
  • REST: GET /api/admin/schema(エージェント・トークン)
  • Scope: read
  • CLI: jenks admin schema

引数はありません。

curl -s "https://jenksguo.pages.dev/api/admin/schema" \
  -H "Authorization: Bearer $JENKSGUO_ADMIN_TOKEN"

admin_list_files — コンテンツ・ファイルの一覧

編集可能なコンテンツ・ファイルをブランチ上で一覧表示します(path、size、sha)。content/corpus/experiences のように、特定フォルダ配下に限定することもできます。

  • MCP: admin_list_files on https://jenksguo.pages.dev/mcp/admin
  • REST: GET /api/admin/files?dir=&branch=(エージェント・トークン)
  • Scope: read
  • CLI: jenks admin ls [dir]
引数 型 必須 備考
dir 文字列 いいえ 例: content/corpus/projects(デフォルト: すべての content)
branch main · dev いいえ main は本番サイト(jenksguo.pages.dev とそのミラー jenksguo.xyz)を公開します。dev は dev.jenksguo.xyz でプレビューします(デフォルト main)。
curl -s "https://jenksguo.pages.dev/api/admin/files" \
  -H "Authorization: Bearer $JENKSGUO_ADMIN_TOKEN"

admin_read_file — コンテンツ・ファイルを読む

コンテンツ・ファイルの生の Markdown/JSON ソース(およびその sha)を読みます。エントリ、レンズ、スキルには path か slug を指定します。

  • MCP: admin_read_file on https://jenksguo.pages.dev/mcp/admin
  • REST: GET /api/admin/file?path=&slug=&branch=(エージェント・トークン)
  • Scope: read
  • CLI: jenks admin get <slug|path>
引数 型 必須 備考
path 文字列 いいえ
slug 文字列 いいえ
branch main · dev いいえ main は本番サイト(jenksguo.pages.dev とそのミラー jenksguo.xyz)を公開します。dev は dev.jenksguo.xyz でプレビューします(デフォルト main)。
curl -s "https://jenksguo.pages.dev/api/admin/file" \
  -H "Authorization: Bearer $JENKSGUO_ADMIN_TOKEN"

admin_validate — 変更の検証

コンテンツ・スキーマに対してファイル内容をコミットせずに検証します。問題の一覧を返します(空であれば有効)。

  • MCP: admin_validate on https://jenksguo.pages.dev/mcp/admin
  • REST: POST /api/admin/validate(エージェント・トークン)
  • Scope: read
  • CLI: jenks admin validate <path> <file>
引数 型 必須 備考
path 文字列 はい
content 文字列 はい
curl -s -X POST https://jenksguo.pages.dev/api/admin/validate \
  -H "Authorization: Bearer $JENKSGUO_ADMIN_TOKEN" \
  -H 'content-type: application/json' \
  -d '{"path":"content/corpus/projects/example.md","content":"<content>"}'

admin_write_file — コンテンツ・ファイルの作成/更新

単一のコンテンツ・ファイルを検証してコミットします(新規作成または置換)。公開は自動です: CI が変更されたエントリをすべての言語に再翻訳し、再ビルドとデプロイを行います(main → jenksguo.pages.dev と jenksguo.xyz、dev → dev.jenksguo.xyz)。反映には数分かかります。

  • MCP: admin_write_file on https://jenksguo.pages.dev/mcp/admin
  • REST: PUT /api/admin/file(エージェント・トークン)
  • Scope: content(ブランチ main では publish も)
  • CLI: jenks admin put <path> <file> -m <message>
引数 型 必須 備考
path 文字列 はい
content 文字列 はい
message 文字列 はい コミット・メッセージ
branch main · dev いいえ main は本番サイト(jenksguo.pages.dev とそのミラー jenksguo.xyz)を公開します。dev は dev.jenksguo.xyz でプレビューします(デフォルト main)。
curl -s -X PUT https://jenksguo.pages.dev/api/admin/file \
  -H "Authorization: Bearer $JENKSGUO_ADMIN_TOKEN" \
  -H 'content-type: application/json' \
  -d '{"path":"content/corpus/projects/example.md","content":"<content>","message":"<message>"}'

admin_delete_file — コンテンツ・ファイルの削除

コミット・メッセージを付けてコンテンツ・ファイルを 1 件削除します(例: エントリの削除)。Git の履歴により復元可能です。

  • MCP: admin_delete_file on https://jenksguo.pages.dev/mcp/admin
  • REST: DELETE /api/admin/file?path=&message=&branch=(エージェント・トークン)
  • Scope: content(ブランチ main では publish も)
  • CLI: jenks admin rm <path> -m <message>
引数 型 必須 備考
path 文字列 はい
message 文字列 はい
branch main · dev いいえ main は本番サイト(jenksguo.pages.dev とそのミラー jenksguo.xyz)を公開します。dev は dev.jenksguo.xyz でプレビューします(デフォルト main)。
curl -s -X DELETE https://jenksguo.pages.dev/api/admin/file \
  -H "Authorization: Bearer $JENKSGUO_ADMIN_TOKEN" \
  -H 'content-type: application/json' \
  -d '{"path":"content/corpus/projects/example.md","message":"<message>"}'

admin_commit_changes — 複数ファイルを一括コミット

複数のファイル変更を1つのコミットとして検証・コミットします。各変更は {path, content} または {path, delete: true} です。

  • MCP: admin_commit_changes on https://jenksguo.pages.dev/mcp/admin
  • REST: POST /api/admin/changes(エージェント・トークン)
  • Scope: content(ブランチ main では publish も)
  • CLI: jenks admin commit <changes.json> -m <message>
引数 型 必須 備考
changes 配列 はい
message 文字列 はい
branch main · dev いいえ main は本番サイト(jenksguo.pages.dev とそのミラー jenksguo.xyz)を公開します。dev は dev.jenksguo.xyz でプレビューします(デフォルト main)。
curl -s -X POST https://jenksguo.pages.dev/api/admin/changes \
  -H "Authorization: Bearer $JENKSGUO_ADMIN_TOKEN" \
  -H 'content-type: application/json' \
  -d '{"changes":"<changes>","message":"<message>"}'

admin_ai_edit — AI で編集案を下書き

サイトのモデルに、英語の指示文から 1 つのコンテンツ・ファイルを書き直させます。提案された内容、diff、検証上の問題を返します。コミットはしません — 内容を確認してから admin_write_file を呼び出してください。

  • MCP: admin_ai_edit on https://jenksguo.pages.dev/mcp/admin
  • REST: POST /api/admin/ai-edit(エージェント・トークン)
  • Scope: content
  • CLI: jenks admin ai-edit <slug|path> "<instruction>" [--apply]
引数 型 必須 備考
path 文字列 いいえ
slug 文字列 いいえ
instruction 文字列 はい
branch main · dev いいえ main は本番サイト(jenksguo.pages.dev とそのミラー jenksguo.xyz)を公開します。dev は dev.jenksguo.xyz でプレビューします(デフォルト main)。
content 文字列 いいえ 下書きの元にする未保存のファイル本文(デフォルト: 保存済みファイル)。
curl -s -X POST https://jenksguo.pages.dev/api/admin/ai-edit \
  -H "Authorization: Bearer $JENKSGUO_ADMIN_TOKEN" \
  -H 'content-type: application/json' \
  -d '{"instruction":"<instruction>"}'

admin_read_translation — 翻訳の取得

別言語での 1 つのコンテンツ・ファイルです: 英語のソース・フィールド、現在の翻訳、そのステータス(current、outdated、edited by hand、missing)を含みます。対象は entries、lenses、CVs、arguments、point-of-view ページ、credentials、talks、docs です。対象言語: zh、zh-hant、ja、fr、es、eo。

  • MCP: admin_read_translation on https://jenksguo.pages.dev/mcp/admin
  • REST: GET /api/admin/translation?path=&slug=&locale=&branch=(エージェント・トークン)
  • Scope: read
  • CLI: jenks admin tr get <slug|path> <locale>
引数 型 必須 備考
path 文字列 いいえ
slug 文字列 いいえ
locale zh · zh-hant · ja · fr · es · eo はい
branch main · dev いいえ main は本番サイト(jenksguo.pages.dev とそのミラー jenksguo.xyz)を公開します。dev は dev.jenksguo.xyz でプレビューします(デフォルト main)。
curl -s "https://jenksguo.pages.dev/api/admin/translation" \
  -H "Authorization: Bearer $JENKSGUO_ADMIN_TOKEN"

admin_write_translation — 翻訳の編集

1 つのコンテンツ・ファイルの別言語(zh、zh-hant、ja、fr、es、eo)の本文を編集します。たとえば中国語の要約を改善する、といった用途です。変更したいフィールドだけを渡してください。フィールド名は先に admin_read_translation で確認します。Markdown は英語の見出し、コードブロック、リンクを保持しなければなりません。英語が変更されるまでは編集が保持され、変更後はその言語が自動的に再翻訳されます。英語はソースです: 変更は admin_write_file で行います。

  • MCP: admin_write_translation on https://jenksguo.pages.dev/mcp/admin
  • REST: PUT /api/admin/translation(エージェント・トークン)
  • Scope: content(ブランチ main では publish も)
  • CLI: jenks admin tr put <slug|path> <locale> <fields.json> -m <message>
引数 型 必須 備考
path 文字列 いいえ
slug 文字列 いいえ
locale zh · zh-hant · ja · fr · es · eo はい
fields オブジェクト はい 例: {"summary": "…", "body": "## …"}
message 文字列 いいえ コミット・メッセージ
branch main · dev いいえ main は本番サイト(jenksguo.pages.dev とそのミラー jenksguo.xyz)を公開します。dev は dev.jenksguo.xyz でプレビューします(デフォルト main)。
curl -s -X PUT https://jenksguo.pages.dev/api/admin/translation \
  -H "Authorization: Bearer $JENKSGUO_ADMIN_TOKEN" \
  -H 'content-type: application/json' \
  -d '{"locale":"<locale>","fields":"<fields>"}'

admin_read_copy — サイト文言の取得

サイトのインターフェース文言を 1 言語分取得します。メニュー、ページタイトル、ページ導入の 1 行、ヒーロー見出し、ボタン、SEO 説明などを key → text で返し、英語(zh-hant には中国語も)を併記します。hero や career のように prefix で絞り込めます。

  • MCP: admin_read_copy on https://jenksguo.pages.dev/mcp/admin
  • REST: GET /api/admin/copy?locale=&prefix=&branch=(エージェント・トークン)
  • Scope: read
  • CLI: jenks admin copy get <locale> [prefix]
引数 型 必須 備考
locale en · zh · zh-hant · ja · fr · es · eo はい
prefix 文字列 いいえ
branch main · dev いいえ main は本番サイト(jenksguo.pages.dev とそのミラー jenksguo.xyz)を公開します。dev は dev.jenksguo.xyz でプレビューします(デフォルト main)。
curl -s "https://jenksguo.pages.dev/api/admin/copy" \
  -H "Authorization: Bearer $JENKSGUO_ADMIN_TOKEN"

admin_write_copy — サイト文言の編集

1 言語分のインターフェース文言を変更します。values は key → text("" はあなたの編集を削除)です。en と zh が手書きのソースです: 英語の変更は ja、fr、es、eo に自動翻訳されます — zh も設定してください。他言語での編集は、そのソース文言が変わるまで保持されます。{placeholders} はそのまま厳密に保持してください。

  • MCP: admin_write_copy on https://jenksguo.pages.dev/mcp/admin
  • REST: PUT /api/admin/copy(エージェント・トークン)
  • Scope: content(ブランチ main では publish も)
  • CLI: jenks admin copy set <locale> <key> "<text>" -m <message>
引数 型 必須 備考
locale en · zh · zh-hant · ja · fr · es · eo はい
values オブジェクト はい 例: {"hero.sub": "…"}
message 文字列 いいえ
branch main · dev いいえ main は本番サイト(jenksguo.pages.dev とそのミラー jenksguo.xyz)を公開します。dev は dev.jenksguo.xyz でプレビューします(デフォルト main)。
curl -s -X PUT https://jenksguo.pages.dev/api/admin/copy \
  -H "Authorization: Bearer $JENKSGUO_ADMIN_TOKEN" \
  -H 'content-type: application/json' \
  -d '{"locale":"<locale>","values":"<values>"}'

admin_deploy_status — デプロイ状況

最近の CI 実行(translate → build → deploy)のステータス、ブランチ、コミット、リンクを表示します。

  • MCP: admin_deploy_status on https://jenksguo.pages.dev/mcp/admin
  • REST: GET /api/admin/deploys?branch=(エージェント・トークン)
  • Scope: read
  • CLI: jenks admin deploys
引数 型 必須 備考
branch main · dev いいえ main は本番サイト(jenksguo.pages.dev とそのミラー jenksguo.xyz)を公開します。dev は dev.jenksguo.xyz でプレビューします(デフォルト main)。
curl -s "https://jenksguo.pages.dev/api/admin/deploys" \
  -H "Authorization: Bearer $JENKSGUO_ADMIN_TOKEN"

admin_promote — dev を本番に昇格

dev ブランチを main にマージし、dev.jenksguo.xyz でプレビューされていた内容を本番サイト(jenksguo.pages.dev と jenksguo.xyz)に公開します。

  • MCP: admin_promote on https://jenksguo.pages.dev/mcp/admin
  • REST: POST /api/admin/promote(エージェント・トークン)
  • Scope: publish
  • CLI: jenks admin promote
引数 型 必須 備考
message 文字列 いいえ
curl -s -X POST https://jenksguo.pages.dev/api/admin/promote \
  -H "Authorization: Bearer $JENKSGUO_ADMIN_TOKEN" \
  -H 'content-type: application/json' \
  -d '{}'

admin_publish_cv — 新しい CV バージョンを公開

CV(ai、web3、または新しい slug)の新しい PDF をアップロードし、ワンステップで現行版にします。PDF はメディア・ライブラリに保存され、以前の版はその CV の履歴に移動(引き続きダウンロード可能)し、変更はコミットされ(CI が公開)、安定 URL /cv/.pdf は新しいファイルを配信します。プレビュー画像や新しい title/summary をオプションで指定できます。

  • MCP: admin_publish_cv on https://jenksguo.pages.dev/mcp/admin
  • REST: POST /api/admin/cv(エージェント・トークン)
  • Scope: content + media(ブランチ main では publish も)
  • CLI: jenks admin cv publish <slug> <file.pdf> --cv-version 2026.10 [--preview /media/…]
引数 型 必須 備考
slug 文字列 はい ai、web3、または新規の kebab-case ID
version 文字列 はい 例: 2026.10
filename 文字列 いいえ
data 文字列 いいえ PDF バイト(base64)
url 文字列 いいえ data の代替: PDF の https URL
preview 文字列 いいえ オプション: すでにアップロード済みの /media/… な 1 ページ目画像
title 文字列 いいえ
summary 文字列 いいえ
message 文字列 いいえ コミット・メッセージ
branch main · dev いいえ main は本番サイト(jenksguo.pages.dev とそのミラー jenksguo.xyz)を公開します。dev は dev.jenksguo.xyz でプレビューします(デフォルト main)。
curl -s -X POST https://jenksguo.pages.dev/api/admin/cv \
  -H "Authorization: Bearer $JENKSGUO_ADMIN_TOKEN" \
  -H 'content-type: application/json' \
  -d '{"slug":"<slug>","version":"<version>"}'

admin_list_media — メディア一覧

アップロード済みの画像・動画・PDF を新しい順で一覧表示します: url、type、size、dimensions、alt テキスト、貼り付け用 Markdown、各ファイルを使用しているエントリです。

  • MCP: admin_list_media on https://jenksguo.pages.dev/mcp/admin
  • REST: GET /api/admin/media?prefix=&cursor=&limit=(エージェント・トークン)
  • Scope: read
  • CLI: jenks admin media ls [prefix]
引数 型 必須 備考
prefix 文字列 いいえ キーの接頭辞(例: 2026/10)
cursor 文字列 いいえ
limit 整数 いいえ
curl -s "https://jenksguo.pages.dev/api/admin/media" \
  -H "Authorization: Bearer $JENKSGUO_ADMIN_TOKEN"

admin_upload_media — メディアのアップロード

画像(webp, jpg, png, gif, avif, svg)、動画(mp4, webm)、PDF(最大 25 MB)を Cloudflare R2 に保存し、公開用の /media/… URL と Markdown を取得します。filename と base64 の data を送るか、インポート用に公開 https url を指定します。ファイルは URL で即時に公開されます。コンテンツからの参照は admin_write_file で行います。REST エンドポイントは multipart/form-data(フィールド file)も受け付けます。

  • MCP: admin_upload_media on https://jenksguo.pages.dev/mcp/admin
  • REST: POST /api/admin/media(エージェント・トークン)
  • Scope: media
  • CLI: jenks admin media upload <file|https-url> [--alt "…"]
引数 型 必須 備考
filename 文字列 いいえ 元ファイル名。URL の読みやすい部分になります。
data 文字列 いいえ ファイル・バイト(base64)。data: URL の接頭も可。
url 文字列 いいえ data の代替: サーバーがダウンロードする https URL。
alt 文字列 いいえ Alt テキスト(スクリーンリーダーとボット向けの画像説明)。
width 整数 いいえ
height 整数 いいえ
curl -s -X POST https://jenksguo.pages.dev/api/admin/media \
  -H "Authorization: Bearer $JENKSGUO_ADMIN_TOKEN" \
  -H 'content-type: application/json' \
  -d '{}'

admin_update_media — メディアの alt テキスト更新

アップロード済みファイルの保存 alt テキスト(コンテンツに挿入する際のデフォルト alt)を変更します。

  • MCP: admin_update_media on https://jenksguo.pages.dev/mcp/admin
  • REST: PATCH /api/admin/media(エージェント・トークン)
  • Scope: media
  • CLI: jenks admin media alt <key> "<alt text>"
引数 型 必須 備考
key 文字列 はい メディアのキーまたは URL。例: 2026/10/xero-talk-1a2b3c4d5e.webp
alt 文字列 はい
curl -s -X PATCH https://jenksguo.pages.dev/api/admin/media \
  -H "Authorization: Bearer $JENKSGUO_ADMIN_TOKEN" \
  -H 'content-type: application/json' \
  -d '{"key":"<key>","alt":"<alt>"}'

admin_delete_media — メディアの削除

アップロード済みファイルを完全に削除します。公開中のコンテンツがまだ使用している間は拒否されます(ただし force が true の場合を除く)。復元はできません — コンテンツ・ファイルと異なり git の履歴はありません。

  • MCP: admin_delete_media on https://jenksguo.pages.dev/mcp/admin
  • REST: DELETE /api/admin/media?key=&force=(エージェント・トークン)
  • Scope: media
  • CLI: jenks admin media rm <key> [--force]
引数 型 必須 備考
key 文字列 はい
force 真偽値 いいえ
curl -s -X DELETE https://jenksguo.pages.dev/api/admin/media \
  -H "Authorization: Bearer $JENKSGUO_ADMIN_TOKEN" \
  -H 'content-type: application/json' \
  -d '{"key":"<key>"}'

.mdこのページはAIの支援で翻訳されています。正式な肩書は英語のままです。