記事移行のやり方|二重投稿を作らずに既存記事を持ち込む
新しい基盤を入れるとき、いちばん時間が溶けるのが記事移行です。機械的に流し込むと同じ記事が2か所に出ます。元URLを正規URLにする、公開済みとして記録する、HTMLを痩せさせない、上書きしない。移行の手順をまとめます。
記事移行とは、既存サイトの記事を別の基盤へ持ち込む作業のことです。
新しい配信基盤を入れるとき、いちばん時間が溶けるのはここです。200本を手で貼り直すことはできず、かといって機械的に流し込むと、同じ記事が2か所に出る事故が起きます。
記事移行のやり方でいちばん怖いこと
二重投稿です。
移行した記事を「まだ公開していないもの」として取り込むと、次の配信でその記事が自社サイトへもう一度投稿されます。同じ内容のページが2つのURLで並び、検索エンジンはどちらを出すか決めきれなくなります。
これを避けるには、取り込みの時点で2つのことをします。
- 元のURLを正規URLとして持たせる。 その記事の原本はそこにある、と宣言します
- その配信先へは既に出したものとして記録する。 次の配信で対象から外れます
この2つが揃っていないと、canonical の設定をどれだけ丁寧にやっても、根本の重複は消えません。
HTMLをMarkdownに落とすときの落とし穴
既存サイトの本文はHTMLです。Markdownに変換するとき、扱えないタグを見つけたらタグだけを外して中身は残します。
タグごと中身を捨てると、本文が痩せます。文字数が減り、見出しの数が変わり、そのまま診断にかけると「本文が短すぎる」「見出しが足りない」と誤警告します。移行のたびに全記事へ誤った指摘が出ると、診断そのものが信用されなくなります。
一方で、script と style は中身ごと捨てます。本文ではないものが文字数に混ざるほうが害があります。
URLからslugを作る
移行元のURLがそのままslugになれば、いちばん分かりやすい形です。
/blog/ai-automation/ なら ai-automation を使います。ただし ?p=123 のようなクエリ文字列だけのURLでは、パスから取り出せません。その場合は、URLから決まる短い印を付けて作ります。同じURLからは同じslugが出るので、2回取り込んでも別々の記事にはなりません。
既にあるものは上書きしない
記事移行は、足すだけの操作にします。
同じslugの記事がすでにある場合、飛ばします。上書きにすると、移行を2回走らせただけで、こちらで直した内容が元に戻ります。何が入って何が飛ばされたかは、実行の前に全部見せます。
記事移行の下見を無料で行います いまのサイトのURLを教えていただければ、何本が取り込め、何本に手当てが要るかをお返しします。
記事移行の相談をする中身の無い記事は入れない
タイトルか本文が空のものは、取り込みません。
変換に失敗した記事を「とりあえず入れて後で直す」と、空のページがサイトに増えます。診断も棚卸しも狂い、検索エンジンには薄いページとして見えます。飛ばして理由を出すほうが、後の手間が少なくなります。
記事移行のやり方の締め — 移行してから最初にやること
取り込みが終わったら、棚卸しを1回かけます。
移行した記事の中には、何年も前のもの、内容が重なっているもの、そもそも流入が無かったものが混ざっています。全部を新しい基盤に載せる必要はありません。移行直後は、どれを残すかを決める最初の機会になります。
内部リンクも張り直します。移行元でのリンクは移行先のURLを指していないことが多く、放っておくと孤立ページが大量に生まれます。
この基盤での扱い
SEOBuilder では取り込みの画面が4つの経路に対応しています。WordPress の REST API(外部のプログラムから記事を取り出すための窓口)、RSS / Atom、記事JSONの配列、そしてフロントマター付きMarkdown です。
既定は下見です。何が入り、何が飛ばされるかを先に全部見せます。取り込み元に届かないときは0件ではなく、理由を返します。接続できなかったのか、REST API が無効なのか、記事が1件も無かったのか。この3つは、次にやるべきことがそれぞれ違うためです。
用語の定義は用語集にまとめています。
記事移行の下見を無料で行います いまのサイトのURLを教えていただければ、何本が取り込め、何本に手当てが要るかをお返しします。
記事移行の相談をする参考情報
- サイト移転と重複ページの扱いについては Google の解説が一次情報です(https://developers.google.com/search/docs/crawling-indexing/site-move-with-url-changes)
- 本文中の扱いは SEOBuilder の既定の動きで、外部の調査結果ではありません