渚ナギサコーポレーションSEO・LLMO・AEO・AIOのお悩み、全部お任せください。

全国対応打ち合わせから納品まで
メールで完結します

サイトを
見てもらう
サイトを見てもらう(無料)
COLUMN 270 / 比較サイト・データベース型

データのサイトを毎日組み立てる:定時の公開と失敗したときの止め方

公開 2026.11.08文・ナギサコーポレーション

この記事の答え

  • 取り込み、組み立て、検査、公開を順につなぎ、失敗したら公開まで進めない
  • 定時の実行は時刻どおりに動かないことがある。遅れと止まりを前提に作る
  • 失敗は通知で知り、出してしまったものは前の版に戻せるようにしておく
目次

データのサイトを毎日自動で組み立てるとは、決まった時刻に、データの取り込み、ページの組み立て、検査、公開を順に実行することです。大事なのは、どこか1つ⁠で失敗したら、公開まで進まないようにしておくことです。

手で組み立てていたときは、人が画面を見て、おかしければ出さずに済みました。自動にすると、その判断を手順の中に入れておかないと、壊れたページがそのまま本番に出ます。ここでは、止める場所と、止まったことを知る方法を中心に書きます。

流れは、4つ⁠の段に分ける

毎日の処理は、次の4段に分けます。前の段が成功したときだけ、次の段へ進みます。

段 やること 失敗したら
① 取り込み 元のデータを取り、前回と比べる 前回のデータのまま止める
② 組み立て データからページを作る 公開に進まない
③ 検査 壊れたページが無いか機械で見る 公開に進まない
④ 公開 配信先に上げる 前の版のまま

①で差分がふだんより極端に多い日は、元のデータの形が変わった疑いがあるので、自動では進めません。差分の数え方はデータの取り直し⁠に書きました。③で見るのは、リンク切れ、空欄の数、重複した題、構造化データの文法などです。中身は公開前の機械検査⁠にまとめました。

分けておくと、止まったときに、どの段で止まったかがすぐに分かります。全部を1つ⁠のスクリプトに書いて最後に結果だけを見る作りだと、取り込みの失敗と検査の失敗の区別がつきません。

検査に、ファイルの数も入れる

配信の仕組みには上限があります。Cloudflare Pagesの上限の説明では、1サイト⁠のファイル数は無料プランで2万、有料プランで10万です。Pagesでのビルドは20分⁠で時間切れになり、無料プランのビルドは月500回までです。

私たちの運営記録(カイシャのホント)

2026年10月24日⁠に京都府を足して試しに組み立てたところ、公開するファイルは17,361⁠になりました。無料プランの上限の2万に近づいたので、検索に出さない会社は1社1ページ⁠をやめ、市町村の一覧の1行⁠にまとめました。公開するファイルは11,876⁠に減り、13都府県にした版を2026年10月25日0時に本番に出しています。

出典:自社サイトの組み立ての記録

データが増えると、ファイルの数は毎日少しずつ増えます。上限を超えた日に初めて気づくのではなく、検査の段でファイルを数え、上限の手前に決めた線を超えたら止めて知らせるようにします。

定時の実行は、何で作る?

決まった時刻に処理を始めるには、サーバーのcronか、GitHub Actionsのscheduleのような仕組みを使います。

GitHubの起動の説明によると、scheduleは次のように動きます。

  • 時刻はcronの書式で書き、初期設定ではUTC(協定世界時)で動く。タイムゾーンを指定することもできる
  • いちばん短い間隔は5分に1回
  • 負荷が高いときは遅れることがあり、毎時0分⁠のころは負荷が高い
  • 負荷がとても高いと、待っている処理が落とされることもある
  • 公開リポジトリでは、60日間リポジトリに動きが無いと、定時の実行が自動で止まる

日本時間で朝6時に動かしたいとき、タイムゾーンを指定せずに0 6 * * *と書くと、UTCの6時、日本時間の15時に動きます。時刻の書き間違いは、エラーにならずに、違う時刻に動くだけです。

GitHubの説明は、遅れを減らすために、毎時0分⁠を避けた時刻にするよう勧めています。たとえば毎日21時17分のように、0分から外した時刻で書きます。

動かなかった日に、気づけるようにする

遅れや落とされた日があると、その日は何も起きません。失敗の通知は来ないので、気づくのが遅れます。毎回の処理の最後に、終わった時刻と結果を記録に1行残しておき、前回の記録から決めた時間が過ぎていたら知らせるようにします。

同じ処理を2つ同時に走らせない

前の日の処理が長引いているうちに、次の処理が始まると、同じフォルダに2つ⁠が書き込んで壊れることがあります。GitHub Actionsではワークフローの構文のconcurrencyで、同じグループの処理を1つずつしか動かさないようにできます。ジョブのtimeout-minutesの初期値は360分なので、長くても何分で終わるかが分かっているなら、短く決めておきます。

下書きと公開日は、組み立てで決まる

静的なサイトでは、予約した記事も、誰かが組み立て直さない限り公開されません。公開日を過ぎた後の組み立てで、初めてページになります。

静的サイト生成の道具のHugoは、使い方の説明で、初期設定では次の内容を公開しないとしています。

  • draftがtrueの内容
  • dateかpublishDateが未来の内容
  • expiryDateが過去の内容

予約の公開は、この決まりと、毎日の定時の組み立てを組み合わせると作れます。公開日を翌朝にした記事は、翌朝の組み立てで初めてページになります。定時の時刻が公開日の時刻より前なら、出るのは次の日です。

同じ説明には、Hugoは組み立ての前に出力先のフォルダを空にしないとも書かれています。下書きに戻した記事や、期限が切れた記事のファイルが、前回の出力に残ったまま配信されることがあります。--cleanDestinationDirを付けるか、組み立ての前に出力先を空にします。消したはずのページが配信され続けるのは、自動にしてから気づきにくい失敗です。

静的サイト生成とCMSの違いや、ほかの道具はSSGとはにまとめました。

失敗したら、どう止めて、どう知る?

失敗したら、公開の段に進まない

GitHub Actionsでは、ステップが失敗すると、その後のステップは初期設定では実行されません。式の説明によると、ifに状態の関数を書かないステップにはsuccess()が自動で付き、前のステップがすべて成功したときだけ動きます。

検査のスクリプトは、問題を見つけたら0以外の終了コードで終わるように作ります。メッセージを出すだけで正常に終わると、公開の段に進みます。

逆に、失敗したときだけ動かしたい処理にはif: ${{ failure() }}を付けます。失敗した段の名前と、検査で見つかった件数を知らせる処理をここに置きます。

通知は、誰に届くかを確かめる

GitHubの通知の説明によると、メールやWebの通知を有効にすると、ワークフローの実行が終わったときに知らせが届きます。失敗したときだけ知らせる設定もできます。

注意したいのは、定時のワークフローの通知が、そのワークフローを最初に作った人に届くことです。別の人がcronの書式を書き換えると、それ以後はその人に届きます。担当が替わったのに、通知だけが前の担当に届いている、ということが起こります。チームで見るなら、失敗時の処理からチャットや共有のメールに送るほうが確かです。

出してしまったら、前の版に戻す

検査をすり抜けて、おかしなページを出してしまうこともあります。Cloudflare Pagesのロールバックの説明では、正常に組み立てられた本番の版なら、どれでも戻す先に選べます。プレビューの版は選べません。

戻すには、PagesのプロジェクトのDeploymentsから戻したい版の操作メニューを開き、その版へのロールバックを選んで確定します。確定すると、本番の版がすぐに切り替わります。

戻した後に、次の定時の組み立てがそのまま走ると、同じ間違いがまた出ます。戻したら、原因を元のデータか型で直すまで、定時の公開を止めておきます。

組み立てを外から始めるとき

Pagesには、Git以外のきっかけで組み立てを始めるDeploy Hooks⁠もあります。決まったURLにPOSTを送ると組み立てが始まり、用途の例には、cronで決まった予定でサイトを更新することが挙がっています。

同じ説明は、このURLは追加の認証なしで使えるので、秘密の情報と同じように守るよう書いています。漏れた疑いがあれば、そのフックを消して作り直します。手元で組み立てたファイルをwrangler pages deployで上げる作りなら、組み立てと検査を手元で済ませ、通ったときだけ上げる流れにできます。

規模が大きくなる前に決めておくことはページ数で変わる作り方に、データ型のサイト全体はデータベース型サイト⁠にまとめています。

仕様・出典の確認日:2026年10月26日⁠。

よくある質問

データのサイトを毎日自動で更新するには、何を用意しますか?

決まった時刻に処理を始める仕組みと、データの取り込みから公開までを順に実行する手順が要ります。定時の実行は、サーバーのcronや、GitHub Actionsのscheduleで作れます。公開の前に機械の検査を入れ、通らなければ公開しない作りにします。

GitHub Actionsのscheduleは、指定した時刻ちょうどに動きますか?

ちょうどとは限りません。GitHubの説明では、負荷が高いときは遅れることがあり、毎時0分⁠のころは負荷が高いとしています。負荷がとても高いと、待っている処理が落とされることもあると書いています。毎時0分⁠を避けた時刻を指定します。

予約した記事は、静的なサイトだと自動で公開されますか?

組み立て直さない限り公開されません。たとえばHugoは、公開日が未来の内容を、初期設定では組み立てに入れません。公開日を過ぎた後に組み立てて配信し直して、初めてページが出ます。

自動の公開で壊れたページを出してしまったら、どうしますか?

Cloudflare Pagesなら、ダッシュボードのDeploymentsから、以前に正常に組み立てられた本番の版を選んで戻せます。戻したあと、原因をデータか型で直してから、次の組み立てに進みます。

あわせて読みたい

公開前の機械検査:大量のページで壊れたものを出さない

データから数千ページを作るサイトでは、1か所の間違いが全部のページに広がります。公開の前に、リンク切れ・空欄・重複した題・画像の抜け・構造化データの文法・はみ出しを機械で調べ、通らないページは出しません。リッチリザルトテストとSchema Markup Validatorの違いも、Googleの説明で整理します。

解説を読む
データの取り直し:更新頻度と差分の出し方

公開データでページを作るサイトは、元のデータの更新に合わせて取り直し、前回との差分を見て、変わったページだけを書き換えます。法人番号やしょくばらぼ、e-Statの公表予定で更新の頻度を調べる方法、差分の取り方、変わっていないページの日付を進めない理由、取り直しの記録の残し方を整理します。

解説を読む
SSGとは:静的サイト生成とCMSの使い分け

静的サイトジェネレーター(SSG)⁠は⁠、データとテンプレートから公開前にHTMLを組み立てておく道具です。WordPressなどのCMSとの違い、会社やデータの行数が多いサイトでSSGを選ぶ場面と選ばない場面、Hugo・Astro・Eleventyでデータからページを作る仕組み、ファイル数の上限を整理します。

解説を読む
ページ数で変わるサイトの作り方:大きくなる前に決めること

ページが100本⁠のサイトと10万本のサイトでは、同じ作り方は通りません。Googleのクロールの説明が対象にする規模、サイトマップの上限と分け方、組み立ての時間と配信先のファイル数、目で見られない量の品質の確かめ方を、公式の説明と私たちの運営の記録で整理します。

解説を読む

いきなり契約する必要はありません。

御社のサイトを見て、「検索とAIから問い合わせを増やすなら、まず何をするべきか⁠」⁠をお伝えします。営業電話はしません。相談だけでも構いません。

自社サイトを見てもらう 打ち合わせから納品まで、メールで完結します
サイトを見てもらう