Y-Digital Data Lab山梨離散研
Journal

GitHubとCloudflareを使って、AIが数分で作るサイト

2026/8/16 · aiastrogithubcloudflarewebsite

GitHubとCloudflareを使って、AIが数分で作るサイト

2026年8月16日の朝、Webサイトを作る予定はなかった。

発端はBluetoothイヤホンの通話用マイクを試すことだった。ChatGPTとの会話は、環境音の入り方、無線や測定機器、趣味の記録と公開へ移り、やがて自前の読み物サイトを持てないかという話になった。

その時点では、要件を整理して制作を発注したわけではない。会話の途中でAIがサイト構成を具体化し始め、数分後にはAstroを使ったサイト一式が生成されていた。ローカル環境で起動すると、読み物を置くための簡素なサイトとしてすでに成立していたため、大幅なデザイン変更は行わなかった。

CMSを置かない

記事の原本はMarkdownファイルとし、AstroがHTMLへ変換する。管理画面を持つCMSは導入しなかった。

今回の運用では、会話や観察記録からAIがMarkdownを作り、人間が内容を確認する。編集画面を増やすより、ファイルとして保存し、Gitで履歴を残す方が目的に合っていた。

構成は次のようになった。

会話・観察

Markdown / Astro

Private GitHub

Cloudflare Pages

https://y-ddl.com/

GitHubリポジトリはPrivate、生成されたWebサイトはPublicとした。GitHubは原本と変更履歴の保管場所であり、一般の読者に編集場所まで公開する必要はないと判断したためである。

公開までに起きたこと

ローカル版をGitで管理し、最初のコミットを作成した。Private GitHubリポジトリへpushした後、Cloudflare Pagesからそのリポジトリだけにアクセスを許可し、main ブランチを本番用として接続した。

ビルド設定はAstroの静的サイトとして、ビルドコマンドを npm run build、出力先を dist とした。Cloudflare Pagesの初回デプロイ成功後、Cloudflareからは yddl-site.pages.dev の仮URLが発行された。表示確認は、y-ddl.com をブラウザで直接開いて行った。

独自ドメインのDNS移行では、Cloudflareの自動検出が既存5レコードのうち1件のCNAMEを拾わなかった。旧DNSの設定と照合して不足分を追加し、Google Workspaceの送受信を実際に確認してからWebサイトの公開作業を続けた。

Cloudflareの画面構成も、AIが前提としていたものと異なっていた。AIの案内が旧画面を基にしていた箇所では、人間が現在の画面を示し、表示を確認しながら手順を修正した。Pagesへの入口は、Workersの作成画面の下部に置かれていた。

最終的に、同日15時台に y-ddl.com でサイトが表示された。

数分でできたものと、その後

数分で生成されたのはサイトの初期一式である。Gitの設定、DNSレコードの照合、メールの確認、GitHubとCloudflareの接続、独自ドメインでの表示確認までを含めれば、公開には数時間を要した。

それでも、当日の予定になかったWebサイトが、その日のうちに公開環境まで到達した。AIだけで完了した作業ではなく、人間だけならその日に着手しなかった可能性が高い。AIが構成と原稿を作り、人間が実際の画面と外部サービスの状態を確認して進める形になった。

この文章も、当日のChatGPTとの会話と作業記録を基に編集している。

公開後追記 — 実際にこの記事を公開して分かったこと

この記事自体を最初の運用試験として配置したところ、AIが生成したfrontmatterは、Astro側の既存スキーマと一致しなかった。生成時の observedpublishedsummary では起動できず、既存記事が要求する descriptionpubDatedraft に修正した。

- observed: 2026-08-16
- published: 2026-08-16
- summary: "..."
+ description: "..."
+ pubDate: 2026-08-16
+ draft: false

frontmatter修正後には、本文中のコードブロックが見えない問題も判明した。Markdownの内容は存在していたが、サイト側にコードブロック用の表示指定が不足していたため、.prose pre.prose pre code のCSSを追加して表示を直した。

記事とCSSはコミット 0018308Add article about YDDL website launch)としてPrivate GitHubへpushした。Cloudflare Pagesはpush後にリポジトリ取得とAstroのビルドを行うため、公開サイトへの反映には短い待ち時間があった。

また、原稿生成時には、まだサイトへ実装していないTIMELINEと活動日誌へのリンクが pages.dev のURLで先に挿入されていた。存在しないページへの案内になるため、このリンクは削除した。内部リンクは、実際のルートが実装・確認された時点で追加する。

なお、この記事は2回目の生成・編集にWorkを使ったところ、ページ側が表示するタイトルとは別に、本文冒頭にも同じタイトルが記載された。結果としてタイトルが2回表示されている。大切だから2回書いたわけではない。今回はAI生成物の痕跡として、そのまま残すことにした。