Gemini×Pythonで作る!全自動かつ「超・人間くさい」ブログ運営システムの裏側【第5回:収益化と自動投稿】
いよいよ最終回です。技術的欲求を満たした後は、現実的な欲求(副業収入)を満たすためのマネタイズと、はてなブログへの自動デプロイフェーズです。 ## 楽天アフィリエイト連携(商品選定アルゴリズム) ただAmazonや楽天のリンクを適当に貼るだけではクリックされません。システムは記事のタイトルと本文から「読者の検索意図に沿った具体的な商品キーワード」を抽出し、楽天APIを叩いて商品を検索します。 ```python # rakuten_v2_service.py (一部抜粋) def search_items(self, keyword): params = { 'applicationId': self.app_id, 'affiliateId': self.affiliate_id, 'keyword': keyword, 'sort': '-reviewCount', # レビュー数順でソートして信頼性を担保 'hits': 5 } response = requests.get('https://app.rakuten.co.jp/services/api/IchibaItem/Search/20220601', params=params) return response.json()['Items'] ``` さらに取得した上位5つの商品リストをGeminiに渡し、「この記事の文脈で最も読者が買いそうな商品を2つ選べ」と指示し、最終的な商品を選定します。 選ばれた商品は、ただのテキストリンクではなく、独自に定義したCSSを用いて**高品質なアフィリエイトブロック**(商品画像、太字のタイトル、目を引く赤いCTAボタン)としてHTMLに組み込まれます。 ## はてなブログへの完全自動投稿 すべてが組み上がったMarkdown(HTML)は、はてなブログのAtomPub APIを経由して自動的に投稿(または下書き保存)されます。 ```python def publish(self, title, content_html, is_draft=True): # AtomPub XMLの構築 xml_data = f""" {title} {"yes" if is_draft else "no"} """ # WSSE認証ヘッダの生成(省略) headers = {'X-WSSE': wsse_header} response = requests.post(self.endpoint, data=xml_data, headers=headers) ``` ## おわりに:エンジニアの「遊び」としてのAI このシステムは現在、24時間365日バックグラウンドで稼働し続けています。 数年後には、LLMがさらに進化し、誰もがノーコードツールや標準機能でこれと同等かそれ以上のシステムを簡単に作れる時代が来るでしょう。だからこそ、今のこの黎明期に「AIのハルシネーションをどうねじ伏せるか」「いかにプロンプトで人間らしさを偽装するか」をコードレベルでゴリゴリ実装するのは、AIエンジニアとして最高の遊びであり、技術のベンチマークでもあります。 ヒューマノイド開発の傍らで息抜きに作ったシステムですが、技術で承認欲求を満たすという当初の目的は十分に達成できそうです(笑)。そして何より、AIの進化の最前線に立って、APIを直接叩きながら泥臭く試行錯誤した経験は、将来必ず生きてくると信じています。 全5回の連載を最後までお読みいただき、本当にありがとうございました!