案件: SNS×アフィリエイトの半自動化 / フェーズ: 実行(実装) / 工数: 着手前=0h → 実装=15h / 収益: ¥0(効果測定は次回) / 暫定時給: —(次回算出)
前回(企画編)は、着手前に考えていたことを書いた。狙いは不労所得ではなく作業の効率化で、画像を選ぶところは人の感性だから自動化しない——候補を出すのはAI、選ぶのは人、という線引きだ。
今回は、実際に作った話をする。
先に結論めいたことを2つ書いておく。ひとつは、AIに任せた工程はあっさり終わり、人に残した工程を支える道具のほうにずっと時間がかかったこと。もうひとつは、動き出した自動化は、失敗も自動で繰り返すということだ。
出だしからつまずいた:公式の入り口が、金で閉じた
最初はXの公式APIを使って投稿するつもりだった。ところが、使おうとした時点で利用枠が尽きていて、残高切れのエラーしか返ってこない。
仕方なく、ブラウザを自動で操作して投稿する方式に全面的に切り替えた。人間が画面を触る動きを、そのままプログラムに真似させるやり方だ。
これは正直に書いておくべきだと思うが、この方法はプラットフォームの規約上グレーで、相手の画面デザインが変わるだけで壊れる。安定して回り続ける前提には立てない。
「AIで自動化」という言葉から想像されるのは、たぶんもっと綺麗な仕組みだ。実際は、正規の入り口が有料か閉じているので、裏口から入るところから始まった。この最初の分岐は、自動化を勧める情報ではあまり語られない気がする。
作ったもの:人に残した工程ほど、道具が要った
ここからは、実際に組み上げた機能の話。
先に種明かしをすると、AIが担当する部分(キャプションの候補出し)は、実装としては一番あっさり終わった。APIに文章を頼んで返事を受け取るだけだからだ。手間がかかったのは全部、その周りにある「人が判断するための土台」のほうだった。
1. 作品探しを、アプリの中で完結させた
素朴にやると、こういう往復になる。提携先のサイトを開いて、良さそうなものを探して、URLをコピーして、管理画面に戻って貼り付ける。1件ならなんでもないが、毎日やる作業としては地味に重い。
そこで、提携先が公開しているAPIを使って、管理画面の中だけで検索・絞り込み・選択まで終わるようにした。ブラウザのタブを行ったり来たりする必要がなくなる。
検索条件は保存して使い回せる。それと、地味だが効いているのが、すでに投稿したもの・予約済みのものは一覧から自動的に消えるようにしたこと。同じものを二度出してしまう事故が、これで構造的に起きなくなった。
自動化で本当に効くのは、派手な生成部分よりも、こういう往復の削除なのだと思う。
2. 動画をコマ送りにして、画像の候補を増やす
企画編で「どの画像を使うかは人が選ぶ」と決めた。ところが実際にやってみると、そもそも選択肢が少ないという問題にぶつかった。提供されている静止画は数枚しかなく、しかも同じ題材を扱っている人は全員それを使っている。選ぶも何もない。
そこで、サンプル動画を指定した秒数ごとにコマ送りで切り出して、静止画の候補にする機能を作った。動画の頭から最後まで機械的に切り出せば、候補は一気に数十枚になる。そこから人が選ぶ。
ここは実装でかなり詰まった。公開されているのは動画の再生ページのURLで、動画ファイルそのものではなかったからだ。最初はこれを取りに行って、ずっと失敗していた。結局、ファイルの置き場所には規則性があると分かってそこを直接叩き、それでも取れないものについては、ブラウザで再生ページを開いて裏で流れている通信を覗いて拾う、という二段構えになった。
選んだ画像はクリックした順番でそのまま投稿に並ぶ。ここも人が決める部分なので、順序を機械に決めさせないようにした。
人が「選ぶ」と決めたなら、選択肢を厚くするのが道具の仕事——この機能を作ってから、そう考えるようになった。AIに選ばせるより、人が選べる候補を増やすほうが、結果的に効いている。
3. そのままでは出せない箇所を、その場で隠す
取ってきた画像は、そのままSNSに出せないことがある。かといって、別の画像編集ソフトを立ち上げて、加工して、保存して、また戻ってくる——という流れにすると、続かない。1回あたり15秒でも、毎日やるなら話は別だ。
なので、管理画面の中に簡単な画像編集機能を作った。周囲がぼやける柔らかいブラシで塗る機能と、隠し用の看板画像をドラッグで置いて、好きな大きさにリサイズできる機能。位置と大きさは画像に対する割合で覚えておいて、確定したときに元の画像へ焼き込む。
自動化が続かなくなる原因って、たいてい工程の途中で別のソフトに移ることだと思う。流れが一度切れると、そこが心理的な関所になる。
4. カレンダーで、予約の埋まり具合が一目で分かる
1日に何件投稿するかを枠として決めて、カレンダーの上に並べた。投稿済み・予約済みのドットと、まだ空いている枠のドットが色違いで表示されるので、開いた瞬間に「今日は何件入っていて、あと何件入るか」が分かる。
「今後30日を1日3枠に」といった一括設定も置いた。実際、立ち上げの時期は1日2〜3本に抑えている。いきなり毎日フルに連投すると、凍結のリスクが跳ね上がるからだ。
一番早い空き枠に自動で差し込むボタンもあって、ここだけは”自動化らしい自動化”になった。
見えるようにするだけ、というのは機能として地味だが、効果は大きい。埋まり具合が見えないと、人は結局、別の場所に予定表を作りはじめる。

ここまでが「うまくいった話」だ。ここから先は、その上で何が壊れたかの話になる。
事件1:AIが書いた宣伝文が「お断りします」だった
今にして思えば、いちばんまずかったのがこれだ。
キャプションはAIに書かせている。ある時、生成された文面をよく見たら、「申し訳ありませんが、このリクエストにはお応えできません」という趣旨の、AIが依頼を断った文面が、そのまま”投稿する本文”として予約に登録されていた。
しかも2件。それぞれ翌日と翌々日の21時に、そのまま公開される状態で待機していた。気づいたのは完全に偶然だ。
[要記入:これに気づいた時の心境を一言。「わけがわからない」でも「血の気が引いた」でも、素直な言葉で]
言い訳をすると、対策をしていなかったわけではない。AIが明確に拒否を返した場合は、それを検出して弾く仕組みは入れていた。すり抜けたのは、やんわりと断ってくるパターンだ。
丁寧な日本語で断られると、それは「エラー」の形をしていない。ただの短い、普通の文章に見える。機械から見れば、正常に生成された文章と区別がつかない。
AIは「失敗しました」と言わずに失敗する。 エラーが出てくれるなら、むしろ気づける。怖いのは、正常な出力の顔をして返ってくる異常のほうだ。
この件のあと、対策を二重にした。生成した直後に検査するだけでなく、実際に投稿を送信する直前にもう一度、機械的に止める層を入れた。画面の側でボタンを押せなくするだけでは、別の経路から実行されたときに素通りしてしまうからだ。止めるなら、最後に実行する場所そのもので止めないと意味がない。
事件2:効率化のつもりで、自分の売上を削っていた
投稿の本文と、そこにぶら下げる返信と、その両方に同じリンクを貼っていた。
丁寧のつもりだった。ところが、外部リンクを含む投稿はプラットフォーム側で表示が抑えられる傾向がある、という話を後から知った。つまりリンクを丁寧に貼るほど、見られなくなっていた。
確認したら、投稿済み14件のうち12件が該当していた。稼ぐために作った仕組みが、稼げない方向に自動で働き続けていたことになる。
修正自体は簡単で、本文からリンクを外して、返信側の1箇所だけに集約した。それより問題は、この失敗にずっと気づけなかったことのほうだ。
自動化の失敗は、赤字にならない。手でやっていれば「今日は反応が薄いな」という体感がある。自動化するというのは、その体感ごと手放すということでもある。
事件3:3日間、誰も気づかなかったバグ
投稿の末尾にタグを付ける機能を足した。その機能を追加した日から、投稿を壊すバグが潜んでいた。
発覚まで3日かかった。理由は単純で、その間に投稿された21件が、たまたま一度もその処理を通っていなかったからだ。条件が揃った日に一斉に発火して、その日の投稿枠をひとつ落とした。
テストしていなかったわけではない。「動いている」は「試された」とイコールではなかった、というだけの話だ。動いているように見えていた3日間、その部分は一度も実行されていなかった。
これ以降、本文に関わる変更は必ず実際の投稿を1件通してから、まとめて適用するという運用にした。
事件4:PCを閉じただけで、スパムになりかけた
予約投稿の仕組みは、素朴に作ると「指定時刻を過ぎていたら投稿する」になる。これで普段は問題ない。
問題が出るのは、PCが休止している間に予定時刻を過ぎたときだ。復帰した瞬間、溜まっていた分が一斉に飛ぶ。短時間の連続投稿は、凍結判定の一番わかりやすい的になる。
対策として、「予定より一定時間以上遅れた予約は、投稿せずに見送る」というルールを入れた。合わせて、見送ったのか失敗したのかが画面上で区別できるようにもした。理由が表示されないと、人間の側は「なぜか動かない」としか分からなくなる。
自動化は、自分が寝ている間に自分の首を絞めることがある。「放っておいても回る」の”放っておく”のなかに、PCの都合は入っていない。
で、効率化はできたのか
企画編で宣言したとおり、画像の最終選定とキャプションの最終選定は、今も人がやっている。ここは変えていない。
ただ、当初の皮算用に入っていなかったコストがある。上に書いたような事件を見つけて、直す時間だ。これは「作業」ではなく「見張り」で、しかも定期的に発生する。
企画編で、狙いは不労所得ではなく作業効率化だと書いた。その効率化ですら、見張りのぶんを差し引くと目減りする——というのが、実装を終えた今の実感だ。
[要記入:ツールの実装に、実際どれくらい時間がかかったか。体感でよい]
[要記入:現在、1日あたりの運用にどれくらい時間を使っているか]
[要記入:作った機能のうち、実際に一番使っているのはどれか。逆に、作ったのに使っていない機能はあるか]
次回:肝心の数字
仕組みは組めた。事故も一通り起こして、直した。
残っているのは肝心のところ——月1万円という着手前の予想に、実際いくら届いたのかだ。
ここは正直に書くと、まだ集計できていない。売上のデータがAPIでは取れず、レポートを手作業で突き合わせるしかないと分かった時点で止まっている。効果測定の部分だけ、まだ自動化できていない。
次回(効果測定編)で、そこを片付けて、収益と、それを実際にかかった時間で割った時給を出す。
※この記事はAIが下書きし、人間が調整した。開示の詳細は このブログについて に。


コメント