移転のきっかけ
ブログへの写真のアップロード、Xへの投稿、PC内のフォルダ・ファイル整理が面倒
→これらを一括してやろう、できるだけ自動化しよう、と考えた
エキサイトブログではAPIを使った投稿はできない
=エキサイトブログの管理画面を開いて手動で記事を投稿しないといけない
これでは自動化できない
そこでAPIを使った投稿ができるワードプレスに移転することにした
方針の検討1
・エキサイトブログからワードプレスへの移転をどうやればいいのかをAIに聞くと、エキサイトブログには記事のエクスポート機能がないことが分かる
・次のような方法を提案される
【エキサイトブログ】
│
▼ (FC2の自動引越しツールを使う)
【FC2ブログ】
│
▼ (記事データと画像をダウンロード)
【パソコン / Mac】
│
▼ (画像アップロード & 記事インポート)
【WordPress】
・画像は一旦エキサイトブログへのリンクとしておき、
画像へのリンク付きの記事を更新すれば、画像をダウンロードしてワードプレスが入っているサーバに保存してくれる、というツールを使えばいいということが分かる
・できそうだなと思ったところ、エキサイトブログからFC2ブログへの引っ越しには数時間〜数日かかると分かる
方針の検討2
・数日も待ちたくないので、他の方法をAIに聞くと、次のような回答があった
他社ブログを経由する力技よりも、Pythonでスクレイピングして「Movable Type(MT)形式」のテキストファイルを生成し、それをWordPressにインポートするのが最も確実でスマートな内製ルートです。
エキサイトブログのHTML構造からデータを抽出し、WordPressがそのまま解釈できるインポートファイルを生成する設計指針をまとめました。
- 移行の全体戦略
スクレイピング(抽出): Requests と BeautifulSoup でエキサイトブログの全記事をループ処理し、タイトル・本文・投稿日時・カテゴリ(タグ)を取得。- 中間ファイルの生成(変換): 取得したデータを、WordPressが標準で対応しているMovable Type(MT)形式のプレーンテキストとして1つのファイルに結合出力する。
- WordPressへインポート(取り込み): 生成した .txt ファイルをWordPressのインポーターで読み込む。
・以前なら「Pythonでスクレイピング」「Requests と BeautifulSoup で…」「Movable Type(MT)形式で結合出力」なんて言葉が出てくるとあきらめていたが、自分が理解する必要はなくAIが理解できればOK
方針の決定
・AIに相談しながら決まった方針が以下の通り(なるほど分からん)
🗺️ エキサイトブログ⇒WordPress 移行完全ロードマップ
フェーズ1:下準備
- [ ] WordPress環境の用意
- 移行先となるWordPressサイト(レンタルサーバーやドメインの契約)を開設しておきます。
- [ ] エキサイトブログのスキン(HTML)確認
- 自分のブログの「個別記事URL」「タイトル」「本文」「moreの境目」が、HTML上でどんなタグやクラス名で囲まれているかをブラウザのデベロッパーツール(F12キー)で確認します。
- チェックポイント: 過去記事の「次のページ」へのリンク規則(URLがシンプルに増えるパターンAか、固有IDが付くパターンBか)も一緒に確認しておくと、この後のスクレイピングがスムーズになります!
フェーズ2:Pythonスクリプトの実行(データ抽出&変換)
- [ ] ステップ1:URLリストの作成(スクレイピング準備)
- 月別アーカイブやトップページを巡回し、全記事のURL(
/12345678/のような個別ページリンク)を抽出してurls.txtなどのファイルに一覧化します。 - 処理のコツ:
while文などで次のページがある限りループを回し、取得したURLはset(重複排除)に格納して綺麗にまとめます。
- 月別アーカイブやトップページを巡回し、全記事のURL(
- [ ] ステップ2:記事データの抽出とMT化
- 作成したURLリストを1行ずつ読み込み、Requests と BeautifulSoup を使って個別記事ページへアクセス。
- 「タイトル」「投稿日時」「本文」「カテゴリ(タグ)」を抽出します。
- 「more(続きを読む)」の再現トリック: WordPressが認識できる「Movable Type(MT)形式」のフォーマットに整形する際、本文を
BODY:とEXTENDED BODY:の2つに分けて書き出します。これでWordPress側でも綺麗にmoreが再現されます! - ※この時点では、本文内の画像URLはエキサイト(
pds.exblog.jp...)を向いたままでOKです。
フェーズ3:WordPressへのインポートと画像回収
- [ ] データのインポート
- WordPressの管理画面から「ツール」>「インポート」>「Movable Type と TypePad」を実行し、Pythonで作ったテキストファイル(
excite_migration.txt)を読み込ませます(これで記事文章とmoreの区切りが移行完了)。
- WordPressの管理画面から「ツール」>「インポート」>「Movable Type と TypePad」を実行し、Pythonで作ったテキストファイル(
- [ ] プラグイン「Auto Upload Images」の導入
- WordPress管理画面の「プラグイン」>「新規プラグインを追加」から「Auto Upload Images」を検索します。
- 「今すぐインストール」を押して、完了したら「有効化」をクリックします。
- [ ] 画像の一括自動回収(★超重要ポイント)
- このプラグインは「記事が保存・更新された瞬間」に動くため、インポート直後はまだエキサイト側に画像があります。
- 一気に取り込むため、WordPressの「投稿一覧」画面で記事をすべて全選択し、一括操作の「編集」⇒「更新」を押します。
- これにより、プラグインが記事内のエキサイト画像URLを自動検知し、WordPressのメディアライブラリ(
wp-content/uploads/)へ自動ダウンロード&URL置換を裏で一気にやってくれます!
- [ ] 表示確認
- 記事、画像、more(続きを読む)が新サイトで正しく表示されているか確認します。
フェーズ4:仕上げ(エキサイト側の処理)
- [ ] 移転案内の設置
- エキサイトブログのトップに「ワードプレスに移転しました」という案内と、新しいブログへのリンクを貼った記事を固定します。
- [ ] 無料会員へのダウングレード
- すべての移行(特に画像のワードプレス側への吸い上げ)が完全に終わったのを確認したら、エキサイトブログの有料プランを解約して無料会員に変更します。
実際に行った移転作業
上記の「エキサイトブログ⇒WordPress 移行完全ロードマップ」をクロードコードに読み込ませ、各フェーズをやってもらった。
AIにやってもらったことをAIにまとめてもらった。
フェーズ1: スクレイピング・データ抽出
元のエキサイトブログのHTML構造を調査(記事リンク、ページネーション、タイトル、本文、「続きを読む」の区切り)
月別アーカイブを巡回するプログラムを作成し、全記事URL(5646件)を収集
各記事を取得し、タイトル・日付・カテゴリ・本文・続きを読む部分をMovable Type形式に変換するプログラムを作成
最終的に5646件すべて変換完了
欠落していた記事があることが後でわかる
フェーズ2: WordPressへのインポート
変換したデータをWordPressにインポート(5639件が下書きとして登録)
下書き5639件を一括で「公開済み」に変更
ワードプレスの編集画面で大量の記事を編集するとエラーが出たので、AIに相談すると、SQLで一括処理しましょうと言われ、言われるがままにサーバの設定を変更したり、SQLのコードをコピペしたりして何とか公開済みに変更できた
インポート時にタイトルと日付が完全一致する記事同士がスキップされる問題を発見
欠落していた記事を特定(うち1件は本当の二重投稿だったため不要、6件は再投稿が必要と判断)
6件を手動で投稿し直し
とAIは勘違いしているが、投稿時刻を1分だけずらして、他の記事と重複しないようにして投稿した(それをやったのも全てAIなので手動ではない)
さらに4件が保存されていなかったことが後で判明し、手動で投稿し直し
本文が長い記事が投稿されていなかったので、これを参考にする人は注意してください(←どう注意すればいいのか)
フェーズ3: 画像URL修正・画像回収
画像をクリックすると元のエキサイトページに飛んでしまう問題(画像を囲むリンクが残っていた)を発見
全記事の本文を解析し、このリンクだけを取り除く処理を実施
サーバーにSSH接続できる環境を整備(公開鍵認証の設定、Windows側の権限トラブルを解決)
これはサーバの管理画面から手動でやったので面倒
WP-CLIというコマンドラインツールを使い、データベース内の本文を直接書き換えて、全記事のリンクを修正
画像自動アップロードプラグインを導入
geminiが教えてくれた「Auto Upload Images」というプラグインがなかったが、「Smart Auto Upload Images」(作者: Burhan Nasir)を導入
プラグインが無効化されていた問題、サーバーのコマンドライン実行用PHPが古いバージョンで動いていてプラグインの新しい構文に対応していなかった問題を発見し、新しいPHPバージョンを明示的に使う方式で解決
数時間、画像をダウンロードし続けていると思っていたが、画像をダウンロードできていなかった
全記事を一括で再保存し、画像をエキサイト側からWordPress側へ自動的に回収
これですべての画像を移転できたと思っていたが、、、
フェーズ4: 欠落画像の調査
35記事で、画像が1枚だけエキサイト側のサーバーから完全に削除されており復元不可能と判明(元記事を直接確認してもアクセス不可を確認済み)
該当する記事の一覧をリスト化して保存
エキサイトブログ側で画像が消えていたという問題。フェーズ6で手動で解決。
フェーズ5: その他の修正
スクレイピング時に紛れ込んだ、広告枠を示すコメントタグの残骸テキストが本文に表示されていたため、全記事から一括削除
「続きを読む」リンクの表示文言を、デフォルトの表示から、より自然な「続きを読む」に変更
フェーズ6: 欠落画像の手動補完作業
PC内の写真フォルダと記事を1件ずつ照合する作業を開始
35件中、フォルダ・記事ページを開いて見比べる作業を完了
欠落画像の手動補完作業
欠落画像の状況
ワードプレスに移行した直後は、画像はエキサイトブログへのリンクだった。
そして、「Smart Auto Upload Images」により、画像を含む記事を更新すると、エキサイトブログから画像ダウンロードし、サーバにアップロードされる。
しかし、エキサイトブログで欠落している画像は、リンク先の画像が存在しないので、ダウンロードされない。存在しない画像のリンクとして残ってしまった。

↓最もひどい例

見比べてアップロードする作業
欠落していた画像は全て写真で、ブログにアップロードした写真は記事ごとにフォルダにまとめてPC内に保存していた。
だから、欠落した画像の記事のフォルダを開いて、欠落した画像をアップすればいい。
しかし、欠落した画像は、元記事(エキサイトブログ)からは消えているので、PC内のフォルダ内のどの画像が欠落した画像か、目視しないと分からない。
画像が欠落した記事と、その記事の写真が入っているフォルダはAIが自動的に開いてくれたが、
35件分の欠落した画像を手動でアップロードする羽目になる。
復活させた記事:https://ma7064.com/2011/07

その他
・ワードプレスのデザインは、元のブログのデザインの情報(CSS)をAIに教えて、元のブログと同じになるように作ってもらった。




































