last30days

v2.9.5 — Reddit・X・YouTube・TikTok・Instagram・HN・Polymarket など10以上のソースを横断するディープリサーチスキル

1 — 概要

last30days は Claude Code(および Codex CLI / Gemini CLI)向けのディープリサーチスキル。任意のトピックを入力すると、Reddit・X・YouTube・TikTok・Instagram・Hacker News・Polymarket・Bluesky など10以上のソースを並列検索し、エンゲージメントスコアで重み付けした引用付きレポートを 2〜8 分で生成する。プロンプト研究・トレンド把握・製品評価・予測市場調査まで幅広く対応。

10+対応ソース数
v2.9.5最新バージョン
2–8 分標準実行時間
455+テストケース数
PROMPTING

"○○のプロンプト"、"○○ for ChatGPT" → コピペ可能なプロンプトを生成

COMPARISON

"X vs Y" → 3回並列リサーチで比較表+データ根拠の判定を生成

NEWS / GENERAL

"○○の最新情報" など → 引用付きの専門家水準ブリーフィングを出力

使い方の例: /last30days prompting techniques for ChatGPT for legal questions/last30days cursor vs windsurf/last30days best rap songs lately など、自由なフレーズで呼び出せる。
2 — 仕組み
Phase 1 — 広域探索
  • ScrapeCreators で Reddit・TikTok・Instagram を並列検索
  • Bird クライアント(または xAI)で X を検索
  • yt-dlp で YouTube 動画+トランスクリプトを取得
  • Algolia API で Hacker News を検索
  • Gamma API で Polymarket 予測市場を検索
  • AT Protocol で Bluesky を検索(オプション)
Phase 2 — 補完リサーチ
  • Phase 1 の結果から @ハンドル・サブレディットを抽出
  • X でアカウント直接検索(キーワードで拾えないポストを補完)
  • Reddit JSON エンドポイントで投票数・コメント数を取得
  • 重み付きスコアでソート・重複除去して最終レポートへ
flowchart TD Q([ユーザー入力\nトピック]) --> PARSE[インテント解析\nTOPIC / QUERY_TYPE] PARSE --> P1 subgraph P1["Phase 1 — 広域探索(並列)"] direction LR R([Reddit]) & X([X/Twitter]) & YT([YouTube]) & TK([TikTok]) & IG([Instagram]) & HN([HN]) & PM([Polymarket]) & BS([Bluesky]) end P1 --> SCORE[スコアリング\n関連度×鮮度×エンゲージメント] SCORE --> P2 subgraph P2["Phase 2 — 補完リサーチ"] direction LR HANDLE[X ハンドル解決] & SUB[サブレディット特定] & ENRICH[Reddit JSON 補完] end P2 --> DEDUP[重複除去\ntrigram 類似度] DEDUP --> WS[WebSearch\nブログ・ニュース・ドキュメント] WS --> JUDGE[Judge Agent\n統合・合成] JUDGE --> OUT([引用付きレポート\n+プロンプト生成])

Reddit のスコアは以下の重み付き合計で算出される。クロスプラットフォーム一致(複数ソースで同じ話題が登場)が最強シグナルとして扱われる。

score = 0.50 × log1p(upvotes)
      + 0.35 × log1p(comments)
      + 0.05 × (upvote_ratio × 10)
      + 0.10 × log1p(top_comment_score)

Polymarket は「テキスト関連度 30% + 24h 取引量 30% + 流動性 15% + 価格変動 15% + 競争率 10%」の 5 因子加重スコア。

モジュール責務
env.pyAPI キーの読み込み(~/.config/last30days/.env、Codex 認証)
openai_reddit.pyOpenAI Responses API + web_search で Reddit を探索
xai_x.pyxAI Responses API + x_search で X を探索
reddit_enrich.pyReddit スレッドの実エンゲージメント取得(.json エンドポイント)
hackernews.pyAlgolia API で HN 検索(認証不要)
polymarket.pyGamma API で予測市場検索(認証不要)
score.py関連度・鮮度・エンゲージメントの複合スコア算出
dedupe.pytrigram Jaccard でクロスソース重複除去
normalize.py各 API レスポンスを統一スキーマへ変換
render.pyMarkdown・JSON・コンテキストスニペットの出力
cache.pyトピック + 日付キーで 24h TTL キャッシュ
models.pyOpenAI / xAI モデルの自動選択(7 日キャッシュ)
3 — データソース
🟠Reddit
🔵X / Twitter
🔴YouTube
🎵TikTok
📸Instagram
🟡Hacker News
📊Polymarket
🦋Bluesky
🇺🇸Truth Social
🌐Web検索

青枠: 認証不要(無料)  金枠: API キー推奨

環境変数対象ソース入手先
SCRAPECREATORS_API_KEYReddit・TikTok・Instagram(1キーで3ソース)scrapecreators.com
AUTH_TOKEN + CT0X / Twitter(推奨)x.com の Cookie からコピー
XAI_API_KEYX(AUTH_TOKEN 未設定時のフォールバック)x.ai
OPENAI_API_KEYReddit フォールバック(SCRAPECREATORS 未設定時)platform.openai.com
BSKY_HANDLE + BSKY_APP_PASSWORDBlueskybsky.app/settings/app-passwords
TRUTHSOCIAL_TOKENTruth Socialブラウザ DevTools から取得
BRAVE_API_KEYWeb 検索(Brave)api.search.brave.com
PARALLEL_API_KEYWeb 検索(Parallel AI、優先)parallel.ai
最小構成: SCRAPECREATORS_API_KEY のみで Reddit・TikTok・Instagram が動作。HN と Polymarket は認証不要で常に有効。
4 — インストール
/plugin marketplace add mvanhorn/last30days-skill
/plugin install last30days@last30days-skill

または ClawHub 経由:

clawhub install last30days-official
# リポジトリをスキルディレクトリへクローン
git clone https://github.com/mvanhorn/last30days-skill.git ~/.claude/skills/last30days

# API キーを設定
mkdir -p ~/.config/last30days
cat > ~/.config/last30days/.env << 'EOF'
SCRAPECREATORS_API_KEY=...   # Reddit + TikTok + Instagram
AUTH_TOKEN=...               # X 推奨(x.com の Cookie)
CT0=...                      # X 推奨(x.com の Cookie)
EOF
chmod 600 ~/.config/last30days/.env
Node.js 22+ が必要です。 X の検索クライアント(vendored Bird)は Node.js 22 以上を要求する。brew install node などで確認。
gemini extensions install https://github.com/mvanhorn/last30days-skill.git
git clone https://github.com/mvanhorn/last30days-skill.git ~/.agents/skills/last30days

yt-dlp がインストールされていると、YouTube 検索と動画トランスクリプト抽出が自動で有効になる。

brew install yt-dlp   # macOS
pip install yt-dlp    # cross-platform

動作確認:

python3 ~/.claude/skills/last30days/scripts/last30days.py --diagnose
5 — オプション
フラグ説明備考
--days=N30 日以外の期間を指定(例: 7 日)デフォルト: 30
--quick高速モード(各ソース 8〜12 件)、補完リサーチ省略速度優先
--deep徹底モード(Reddit 50〜70 件、X 40〜60 件)精度優先
--sources=redditReddit のみに絞って実行x も指定可
--debug詳細ログ出力トラブル調査向け
--diagnoseソース可用性チェックを表示して終了初回セットアップ後に推奨
--emit=MODE出力形式: compact / json / md / context / pathデフォルト: compact
--store結果を SQLite DB へ永続化(ウォッチリスト連携)open variant
--agent非インタラクティブモード(自律エージェントからの呼び出し向け)プロンプト省略

常時稼働ボットや cron と組み合わせる場合は open variant を使う。ウォッチリスト・ブリーフィング・履歴検索が追加される。

# open variant を有効化
cp variants/open/SKILL.md ~/.claude/skills/last30days/SKILL.md

# ウォッチリストに追加
last30 watch "competitor X" every week
last30 watch "AI video tools" monthly

# 蓄積した知識から検索
last30 what have you found about AI video?
注意: ウォッチリストはスケジュールをメタデータとして保存するが、自動実行には cron / launchd などの外部スケジューラが必要。