サイトの画像選びをAIで内製化した実録|無料素材の落とし穴
サイトを作るとき、地味に時間を食うのが「画像素材選び」です。このセクションに合う、信頼感のあるモダンなオフィスの一枚——を探すには、複数のストックサービスを横断し、ライセンスを確認し、構図やブランド適合まで見極める必要があります。これをAIに任せられないか。私たちは、素材候補を複数サービスから自動収集する自作ツールを作り、自社サイトで試しました。本記事は、その当時の試行錯誤の記録です(本シリーズの一編。全体像は「自社サイトをAIネイティブで作り直した全体像」にまとめています)。
結論から言うと、探して絞り込む“前さばき”はAIで内製化できました。ただし「これを使う」という最終判断とライセンス取得は人。そして本当の学びは、きれいに動いた部分よりも、「動かないAPI」「途中で変わった規約」という泥臭い壁の越え方にありました。外には出てこない、その部分を残します。
任せていいのは“前さばき”、決めるのは人
最初に線を引きました。AIには候補集めと採点まで(前さばき)を任せ、最終判断は人がやる、という線引きです。
- AIに任せる:文脈からキーワードを作る/複数ソースから候補を集める/統一フォーマットで並べる/構図・ブランド適合をAIが採点する
- AIに任せない:「これを使う」最終決定/ライセンスの取得・購入/無断ダウンロード・スクレイピング・画像加工
この線引きは、別記事「AI活用で成果を分けるのは手順ではなく上流」で書いた「任せる領域と人が判断する領域」の、具体的な一例です。素材選びでも、量をこなす作業はAIが速い。けれど「自社のブランドに本当に合うか」「世に出して問題ないか」は、人が決める領域でした。
無料素材の“落とし穴”:タダでも、入手経路で義務が変わる
実務でいちばん誤解されやすいのが、無料素材のライセンスです。たとえばUnsplashは、標準のライセンスならクレジット(帰属表示)は任意で、商用利用もできます。ところが、APIを使って取得した場合は話が別で、規約上、撮影者とUnsplashへのクレジット表示と、ダウンロード通知の送信が必須になります(Unsplash API Guidelines)。
つまり、同じ「無料」でも、サイトから手でダウンロードしたのか、API経由で取得したのかで、守るべき義務が変わるということです。実務的には、API経由で使うなら、フッターか専用ページにクレジットを小さくまとめておくのが、デザインを崩さず規約も満たす落としどころになります。
「タダだから自由」ではなく、使った経路の規約を確認する。これが、後で困らないためのプロの所作でした。
ここまでが、判断に必要な要点です。ここから先は、同じことを実装でどう実現したかの詳しい話になります。仕組みに関心がなければ、最後の「まとめ」まで読み飛ばしていただいて問題ありません。
自作ツールの設計と、ぶつかった3つの壁
素材収集ツールは、AIから扱えるMCPサーバー(Model Context Protocol:AIに外部機能を渡す仕組み)として実装しました。設計の柱は3つです。
- アダプタで吸収:Unsplash・Pexels・Pixabay・Adobe Stock は公式APIアダプタ、写真AC・PIXTA・いらすとや等は「
site:検索アダプタ」として実装。どちらも共通スキーマ(source/page_url/thumb_url/license_note…)で返すので、呼び出す側はAPI系か検索系かを区別せず扱えます。新しい素材サイトの追加は、設定を1件足すだけ。 - 検索エンジンは差し替え可能に:
site:検索の裏側(検索エンジン)はインターフェースで抽象化しました。この“差し替え可能”が、後で窮地を救います。 - 目利きはAIに委ねる:画像の良し悪し(構図・関連性・素材臭さ・ターゲット適合)の採点は、ツール内部ではなく、呼び出し側のAIがサムネイルを実際に“見て”行う設計にしました。ツールは候補を未採点で返し、最新のマルチモーダルAIが上書きします。
壁①:海外APIに日本語は通じない → 入口で言語を出し分ける
最初の発見はここでした。「福岡のIT企業 信頼感 モダン オフィス」という日本語の文脈で検索すると、Pexelsは候補を返すのに、Unsplashは200 OKなのに0件。
原因は単純で、Unsplashは英語インデックスだったからです。試しに英語(office, business meeting, technology)で投げると、的確な候補が返りました。一方Pexelsは、ロケール指定(ja-JP)でクエリが内部翻訳されるため日本語でもヒットしていた、という違いです。
対処は「ソースごとに、欲しい言語が違う」を構造で表現することでした。ソース定義に**「想定言語」**の属性を持たせ(Unsplash/Pixabayは英語、Pexels/Adobeは日本語)、日本語キーワードを英語に変換する関数を用意。ITのようなASCII語はそのまま通し、辞書に無い日本語は捨ててノイズと0件化を防ぎます。英語クエリを使ったことは記録に残し、表示上の原語は日本語のまま保ちました。結果、同じ文脈でUnsplashが0件→4件に改善。
学び:多言語のサービスを束ねるとき、「同じクエリを全ソースに投げる」のは素朴すぎる。各サービスが“どの言語で考えているか”をデータとして宣言させ、入口で出し分けるのが正解でした。
壁②:Google検索APIが、いつのまにか“新規クローズ”されていた
ここが最大の沼でした。日本の素材サイトを site: で引くために Google Custom Search JSON API を使おうとしたところ、何をやっても 403 PERMISSION_DENIED。しかもクラウドの管理画面では同APIが「有効」と表示され、リクエストはすべてエラーになっていました。「有効なのに、呼ぶと全部拒否される」という矛盾です。
設定を疑って、考えつく限り切り分けました——APIキーの制限解除、無効化→再有効化と待機、別プロジェクトでキー再発行、アカウントを変える、課金登録の検討。すべて同じ403。
真因は設定ミスではありませんでした。Google Custom Search JSON API は、2026年に新規顧客へのクローズが告知されていたのです。既存利用者も2027年1月1日で終了。新規プロジェクトはAPIを“有効化”できても、実際の呼び出しは弾かれる——出典は、Googleの開発者向け案内に明記されています(Custom Search JSON API | Google for Developers、2027/1/1終了の解説)。すべての症状が一本の線で説明できました。入口がそもそも閉じていたのです。
ここで設計の「検索エンジンは差し替え可能」が効きました。Googleが使えないと記録し、独立インデックスを持つ Brave Search API や、Google品質が要る場合の Serper.dev / SerpAPI に差し替える方針を、コードと手順書に焼き付けました(なお Bing の Web 検索APIは2025年に提供終了済みで、新規採用はできません)。一か所が閉じても、全体は止まりませんでした。
学び:「有効化できた=使える」ではない。原因不明の403が続いたら、設定を疑う前に、そのAPIが“今も新規提供されているか”を公式ドキュメントで確認する。提供終了や新規クローズは、管理画面上では分かりにくい形で現れます。そして外部依存は、最初から差し替え可能に設計しておくと、こうした事故で全損しません。
そして、自社サイトに実際に流し込んだ
動いているソースで、ツールを自社サイトに使いました。サイトの画像スロット(トップのHero、実績、会社概要、サービス等)ごとに候補を集め、AIが全候補を実際に“見て”採点。「紺×金・モダン・信頼感」というブランド方針との適合でスコアが割れ、たとえば明るいモダンオフィスの自然な協働写真は高評価、白背景でネクタイ姿が書類を覗く“いかにもストック”の構図は低評価、と狙いどおりに分かれました。
採用後はフル解像度を取得し、Unsplashの規約に沿ってダウンロード通知を発火、ファイルを差し替えてビルドまで通しました(画像は自動でwebpに最適化され、大きく軽量化されました)。「文脈→候補収集→AIの目利き→実ファイル投入→ビルド」までが一気通貫で機能したことが、いちばんの収穫です。
なお、サイトはその後も更新を続けており、トップの一部は写真から図版(SVG)へ差し替えるなど、内容は移ろいます。素材選びは一度きりの作業ではなく、回しながら整えていくもの——記録としてはその前提で読んでください。
まとめ:効率化の核は「動かないときに立て直せる設計」
この実録で、いちばん伝えたいことです。
AIによる効率化とは、「動くAPIを繋ぐこと」ではなく、「動かないとき・規約が変わったときに立て直せる設計にしておくこと」でした。 今回はGoogleのAPI新規クローズという事故に遭いましたが、検索エンジンを抽象化していたおかげで全損せずに済みました。きれいに動くデモは誰でも作れます。差がつくのは、壁にぶつかってからの立て直し方です。
そしてもう一つ。“前さばきはAI、最終判断は人”という線引きが、ライセンス事故も品質の崩れも防ぎます。多くのサービスを束ねるときは、各サービスの前提(言語・規約・提供状況)を、思い込みではなくデータとして持たせる。地味ですが、ここが再現性のある効率化の土台でした。
私たちが「集客と業務DXの両輪を、泥臭く伴走する」と言うのは、まさにこういう作業のことです。きれいなスライドの裏で、403と格闘し、規約を読み込み、設計で受け止める。その積み重ねだけが、机上の「できます」を、本当に使える効率化に変えていきます。