Toma(とま)のゲーム日記

MHNOW、MHWIB、ELDEN RING、WILD HEARTSなどの役立ち情報をアップしていきます。ツイッターでの懸賞応募、自炊、家庭菜園といろいろ始めました。

記事内に商品プロモーションを含む場合があります。

【実録】AdSense効率(RPM)を7.5倍にした記事をPython×GASでブログをスライド化する「エンジニアの最適化戦略」

こんにちは、とまです。

ブログ運営における最大のジレンマは、「良質なコンテンツを作りたいが、時間は有限である」ということ。先日、Googleアドセンスの「オファーウォール」導入により、収益効率が7.5倍(RPM 756%)という結果を得ましたが、この知見を横展開する際にも「時間」という壁が立ちはだかりました。

デスクで親指を立てる50代の男性エンジニアと、背後に配置された2台のPCモニター。左のモニターにはPythonのソースコードとプログラムのフローチャートが表示され、右のモニターには「AdSense収益を7.5倍にするための戦略」と題されたGoogleスライドが自動生成されている様子が描かれている。中央にはデータ転送を象徴する青い矢印があり、上部には「ブログからスライドへ、コピペはもうやめた!」、右下には「1時間以上の短縮に成功!」というキャッチコピーが配置されたブログ記事用サムネイル画像。

そこで、50代エンジニアとして「手作業」を排除し、PythonとGoogle Apps Script(GAS)を用いたスライド自動生成システムを構築。結果、資料作成時間を1時間以上短縮することに成功しました。本記事ではその技術的舞台裏を公開します。

第1章:スライド作成のボトルネックを「システム設計」で解決する

記事の内容をスライドに転記する作業は、エンジニアの視点で見れば「非効率なデータ転送」に他なりません。以下の3つのボトルネックを解消するため、パイプラインを構築しました。

1. 構造の不一致
HTMLからプレゼン構成への変換コスト
2. ノイズ除去
HTMLからのテキスト抽出
3. 書式設定
重要ワードの装飾の手間

第2章:PythonによるHTML構造化――非構造データをJSONへ

まずはPythonのBeautifulSoupを使用し、ブログのHTMLを「抽出・変換・書き出し(ETL)」します。はてなブログの特定のクラスを狙い撃ちし、スライドに最適な「タイトルと本文」のペアへ正規化します。

# スクレイピングによる要素抽出ロジック
target_tags = ["h2", "h3", "h4"]
slides_data = []

# 見出しを起点に、次の見出しまでのテキストを「本文」としてパース
for header in headers:
    title = header.get_text().strip()
    body_text = "\n".join([p.get_text() for p in header.find_next_siblings() if p.name in ['p', 'li']])
    slides_data.append({"title": title, "body": body_text})
【Column】エンジニアの視点:JSONと「トンマナ」の制御
JSON(JavaScript Object Notation)は、データの受け渡しに最適な「共通言語」です。ここでのこだわりは、単なるテキスト抽出だけでなく、デザインの統一感=「トンマナ(トーン&マナー)」をコードで制御すること。どの記事を解析しても、常に「Tomaのゲーム日記」らしい構成ルール(UI設計規約)を維持できるようアルゴリズム化しています。

第3章:GAS(Google Apps Script)による自動流し込みと装飾

抽出したJSONをGoogleスライドに流し込みます。ここでも「トンマナ」の制御が活きてきます。マウス操作ではなくコードによって、私の執筆ルールを自動適用させます。

/**
 * プレゼンテーションにスライドを追加し、執筆ルールを自動適用
 */
function generateSlides(data) {
  const presentation = SlidesApp.getActivePresentation();
  data.forEach(item => {
    const slide = presentation.appendSlide(SlidesApp.PredefinedLayout.TITLE_AND_BODY);
    slide.getPlaceholder(SlidesApp.PlaceholderType.TITLE).asShape().getText().setText(item.title);
    
    const bodyText = slide.getPlaceholder(SlidesApp.PlaceholderType.BODY).asShape().getText();
    bodyText.setText(item.body);
    
    // 特定のキーワード(7.5倍、最適化など)をロジカルに強調
    applyTomaStyle(bodyText);
  });
}
【Column】エンジニアの視点:1時間以上の工数削減
一度このスクリプトを走らせれば、複雑な認証や設定を考慮しても、従来の手作業に比べて1時間以上の時間短縮を実証済みです。リソース(時間)をクリエイティブな「分析」へ全振りできる状態を作りました。

 

出来上がったのがこちら(一ページ分抜粋)

PyhtonとGASを使って出来上がったGoogleスライドの画面

 

第4章:まとめ――戦略的な情報展開がブログを加速させる

今回実施した自動化ワークフローを可視化すると以下の通りです。

[ブログ記事URL]
  ↓ (Python: BeautifulSoupによる抽出)
[構造化データ (JSON)] ← 規約に基づき正規化
  ↓ (GAS: SlidesAppによる生成)
[Googleスライド完成]
  ↓ (戦略的装飾: 青文字強調の自動適用)
[情報の多面展開・タイムパフォーマンス最大化]

個人ブログであっても、「仕組み」で解決できる部分は徹底的にシステム化する。このエンジニア的なアプローチこそが、コンテンツの質と収益、そして自身の時間を守る唯一の正解だと確信しています。

収益化のデータ分析や、Pythonによる自動化の詳細は note でも随時公開しています。ぜひチェックしてみてください。

Tomaのゲーム日記(はてなブログ)

【AI利用に関する開示】当ブログの一部コンテンツには、AI(人工知能)による執筆支援や画像生成を使用しています。