Redditのどこに自社プロダクトの需要がすでにあるかを知るには、自分が解決する課題でRedditを検索し、返ってきたスレッドをスコアと新しさで並べ替えます。スコアの高いスレッドこそ、実在の人が自分の言葉で課題を語り、ツールを求め、あるいは代替手段に不満を言っている場所です。それがあなたの需要マップになります。
r/SideProjectの810票を集めたスレッドは率直にこう言っています。「自分の副業プロジェクトを投げてくれ。Redditのどこに需要がすでにありそうか探してやる」。r/Affiliatemarketingでは、同じ目的のオープンソースのRedditリードジェネレーターを公開した人もいました。やることは同じです。何を作るか当てずっぽうで考えるのではなく、意図がすでに書き込まれているスレッドを見つけることです。
手順は2回の呼び出しで済みます。まず、意図を表すフレーズでRedditを検索し、スレッドをスコア付きで読み返します。
import os, requests
H = {"Authorization": f"Bearer {os.environ['SCAVIO_API_KEY']}", "Content-Type": "application/json"}
r = requests.post("https://api.scavio.dev/api/v1/reddit/search", headers=H,
json={"query": "looking for an alternative to spreadsheet invoicing"})
threads = r.json()
for t in sorted(threads, key=lambda x: x.get("score", 0), reverse=True)[:10]:
print(t.get("score"), t.get("title"), t.get("url"))reddit/searchの呼び出しは1クレジットです。スコア順に並べれば、時間をかける価値のあるスレッドが上に来ます。次に、最もシグナルの強いURLを取り出し、コメントツリー全体を取得します。お宝は普通タイトルではなく返信の中にあるからです。
post = requests.post("https://api.scavio.dev/api/v1/reddit/post", headers=H,
json={"url": "https://www.reddit.com/r/smallbusiness/comments/abc123/..."})
data = post.json()
def walk(comments, depth=0):
for c in comments:
print(" " * depth, c.get("score"), c.get("body", "")[:120])
walk(c.get("replies", []), depth + 1)
walk(data.get("comments", []))reddit/postの呼び出しは、入れ子になったコメントツリーをまるごと返すため2クレジットです。コメントを読むことで、人々がどの競合から逃げているのか、繰り返し求めている機能は何か、そして彼らが使う正確な言い回しがわかります。その言い回しは、そのまま広告コピーやランディングページのコピーにもなります。
日次の需要モニターに仕立てる
単発の検索は週末の作業向きです。本当に効くのは、意図フレーズのリストに対して毎朝走らせ、新しくてスコアの高いものだけを通知させることです。
import json, os, requests
H = {"Authorization": f"Bearer {os.environ['SCAVIO_API_KEY']}", "Content-Type": "application/json"}
PHRASES = [
"alternative to spreadsheet invoicing",
"how do freelancers track unpaid invoices",
"recommend invoicing tool for solo",
]
SEEN = set(json.load(open("seen.json"))) if os.path.exists("seen.json") else set()
MIN_SCORE = 15
for phrase in PHRASES:
r = requests.post("https://api.scavio.dev/api/v1/reddit/search", headers=H,
json={"query": phrase})
for t in r.json():
tid = t.get("id") or t.get("url")
if tid not in SEEN and t.get("score", 0) >= MIN_SCORE:
print("NEW:", t.get("score"), t.get("title"), t.get("url"))
SEEN.add(tid)
json.dump(list(SEEN), open("seen.json", "w"))スレッドIDで重複を排除して同じスレッドを二度見ないようにし、スコアの下限を決めてノイズを飛ばし、NEW:の行をSlackやメールに流します。3フレーズをそれぞれ1回検索すると1日3クレジット、月およそ90クレジットです。1クレジット0.005ドルなら、市場を見張るのに月1ドルを大きく下回ります。
正直なトレードオフ
これが趣味のスクリプトで量が少ないなら、Reddit公式APIかPRAWを使ってください。少量なら無料で、OAuthをこなし、トークンを更新し、エンドポイントごとのレート制限を自分で守ることが苦でないなら、それが正解です。月数百クエリのために課金する理由はありません。
Scavioが元を取るのは、トークンのやりくりが面倒になってきたときです。OAuthフローもトークン更新もサブレディットごとのレート制限との格闘もなく、構造化JSONが得られます。さらに大きい理由はクレジットプールです。同じキーと同じクレジットでGoogle、YouTube、Amazon、Walmart、TikTokにも届くので、複数プラットフォームの需要モニター(同じ意図フレーズをReddit、YouTube、TikTokで検索)が5つではなく1つの連携で動きます。従量課金には月額下限も最低デポジットもないので、静かな月はほとんど費用がかかりません。
価格についての注意点です。必要なのが趣味規模で最も安いReddit生データだけなら、公式APIは無料でScavioはそうではありません。Scavioの強みは、無料APIを値下げで負かすことではなく、構造化JSONと共有クレジットプールという話のほうです。
スパムになるな
Redditは通りすがりの宣伝を、ほぼどのプラットフォームより厳しく罰します。そしてそれは正しい。これは会話を見つけるために使い、そのうえで本当に読んでください。返信するのは、あなたのプロダクトが投稿の問いに対する本当の答えになっている場所だけにし、自分が作ったものだと明かし、売り込まないスレッドでも何か役立つことを足してください。あなたをリンク投下ボットに変える需要モニターは、BANを招き、まさに届けたかったコミュニティを冷ややかにします。需要を見つけ、それから返信を勝ち取ってください。