公開直前の事実照合を1本ずつ回す型にした|下書き11本の検証手順

下書きのまま止まっていた11本の記事を、公式ページとの照合を済ませて10本公開しました。重複事故のあと「公開してよい状態」をどう確認するかで止まっていたものです。照合のやり方を「まとめて事前に確認」から「公開する1本ずつ回す」型に変えたら、そのまま出し切れました。手順と、照合で実際に見つかった表示の違いを書きます。

先に結論:照合は送客先の公式ページで、公開直前に1本ずつ

やったこと 結果
照合キー 公式ページのh1・og:image・発売日・収録時間・出演者名の5項目
タイミング 公開POSTの直前に1本ずつ(事前一括は古くなる)
数字のズレ DVD版132分・配信版2時間11分。送客先の表示を正とする
公開後 HTTP200・canonical・CTA・画像を同じループで確認

背景:下書き11本が止まっていた

以前このブログで書いた通り、別サイトで同じ作品の記事を11本二重に作る事故がありました(穴のあった重複チェックの話は「同じ記事を11本つくってしまった」に書いています)。

あれから新しい下書き11本ができていたのですが、「今度こそ事故らない」ための確認方法が決まらず、公開が止まっていました。確認していないものを公開しない、は正しい方針です。ただ、確認の型がないと永遠に公開できません。今回、その型を作って回しました。

照合した5つの項目

1. タイトル(公式ページのh1)

記事タイトルが公式販売ページのh1と一致するか。作品名と出演者名の両方が入っていることを見ます。片方だけだと別作品・別人のページと区別がつきません。

2. 商品画像(og:image)

アイキャッチに使っている画像が、公式ページのog:imageと一致するか。隣の作品の画像を流用する事故をこれで止めます。URLに品番が含まれるタイプの公式画像なら、品番の一致も同時に取れます。

3. 発売日

公式ページの発売日表示と、記事内の日付が一致するか。ここがズレていると、そもそも別版のページを見ている可能性があります。

4. 収録時間

今回いちばん学びがあった項目です。同じ作品でも、DVDの販売ページは「132分」、配信ページは「2時間11分(131分)」と表示が違っていました。どちらかが間違っているのではなく、販売形態で表示が違うのです。

記事の送客先は配信ページなので、送客先の表示を正とすると決めました。照合は「どこかの表示と合っているか」ではなく「読者を送る先の表示と合っているか」で行います。

5. 出演者ページの生存

記事内に「出演者の一覧ページ」へのリンクを置いているのですが、そのURLが404にならないかも確認します。作品ページが正しくても、出演者ページのURL規則が違うことがあるからです。あわせて、そのページに対象の出演者名が出るかも見ています。

仕組み:ブラウザのfetchで公式ページを読む

照合は、ログイン済みのブラウザ上でfetchを回す形にしました。

const r = await fetch(公式ページURL, { credentials: 'include' });
const doc = new DOMParser().parseFromString(await r.text(), 'text/html');
const h1 = doc.querySelector('h1').textContent.trim();
const og = doc.querySelector('meta[property="og:image"]').content;

ポイントは2つです。credentials: 'include' で自分のセッションのまま取れること。そしてDOMParserで、項目ごとに抽出してから比較すること。サーバーからの取得ではログイン画面に飛ばされるサイトがありましたが、自分がログイン済みのブラウザからなら、自分が見ているのと同じページで照合できます。

※照合は各サイトの利用条件の範囲で行います。自分が購入前に確認するページを、自分の代わりに機械で読む以上のことはしていません。

なぜ「1本ずつ」なのか

前回の教訓と同じです。まとめて事前チェックすると、チェックしてから公開するまでの間に前提が変わります。ループの中で「照合 → 一致したら公開 → 公開後確認」まで1本ずつ通せば、その1本については必ず最新の状態で判断しています。11本の照合そのものは、ループで数分しかかかりませんでした。

公開後チェックも同じループで

  • HTTP 200で返る
  • canonicalが自分を指している
  • アイキャッチの画像URLが本文に入っている
  • 計測用のリンク(作品ページ・出演者検索の両方)が入っている
  • 文字化けがない

結果

  • 照合した下書き: 11本
  • 照合不一致: 0本
  • 公開: 10本(公開後チェックも全件通過)
  • 持ち越し: 1本(公開単位を10本と決めているため、次の単位へ)

不一致が0だったのは、下書きを作った側の精度がよかったからです。それでも照合を飛ばさなかったのは、前回の二重投稿が「部分的に当たる検査」で見落とされたからです。当たらなかった検査は、やっていないのと同じです。

よくある質問

公式ページがログイン画面に飛ぶ場合は?

サーバーからの取得だとログイン画面に飛ばされるサイトがありました。自分のアカウントでログイン済みのブラウザからfetchすれば、自分が見ているのと同じページで照合できます。

何件くらいから型にする意味がありますか?

1件でも事故るなら型にする意味はありますが、まとめて出す運用にした瞬間に必須だと思います。人が同じ確認を10回繰り返すと、後半は見えていません。

手作業と何が違うのですか?

確認項目そのものは手作業と同じです。違うのは「何を確認するか迷う時間」と「後半の確認漏れ」が消えることです。判断は人の基準のまま、照合だけを機械に渡しています。

おわりに

公開しないのは安全ですが、資産にもなりません。「確認していないものは公開しない」を守りつつ出すには、確認の型を先に作るしかありませんでした。重複チェックと同じで、照合も実行の直前に1本ずつ。これで、止まっていた下書きを出し切れました。

あわせて読みたい

この記事が参考になったら、ランキングの応援をお願いします。

にほんブログ村 小遣いブログ 副業・副収入へ にほんブログ村 小遣いブログ 在宅ワークへ
おすすめの記事