【実績】副業フリーランス向け 案件自動収集ボット(CrowdWorks / Lancers → Discord)

Development

案件獲得bot が CrowdWorks 案件 3 件を Discord に配信した画面 (取得 3/上位 3)

メタ情報

役割: 一人開発(要件定義 → 実装 → 運用) / 期間: 2026-04〜稼働中 / チーム: ソロ + Claude Code/Codex / 状態: 自社運用中(クライアント案件への転用可能)

概要

副業フリーランスが「毎朝30分かけて案件サイトを巡回 → 該当案件をピックアップ」していた作業を自動化。条件に合う案件のみ Discord に通知する仕組みを一人で構築・運用している自社運用ツール。応募候補ピックアップを 30分/日 → 0分(自動)にした。

背景・課題

副業稼働は週15〜20時間しかなく、応募候補のピックアップだけで日次30分(月15時間)を消費していた。応募件数が伸びない直接原因がここにあった。手作業でサイト巡回を続ける限り、稼働時間の大半が「探す」工程に消え、肝心の応募文作成・案件分析に時間を割けない状態が続いていた。

実装内容

① 新着案件の自動スクレイピング

CrowdWorks / Lancers の新着案件を毎朝 06:00 にスクレイピング。GitHub Actions の cron で完全クラウド化し、ローカル PC を起動しっぱなしにしない設計。

② 条件フィルタリング

キーワード・予算レンジ・競合人数などの条件で一次フィルタを実施。案件タイトル・本文・タグから自分の対応領域に合致するものだけを残す。

③ AI スコアリング

Letta(Claude ベースのメモリエージェント) を使って「自分が刺さる案件か」を判定。文脈ベースのスコアリングで上位10件に絞り込み、単純なキーワードマッチでは取れない案件適性を判定。

④ Discord Webhook 通知

スマホで朝の出勤前に確認できるよう、Discord に整形済みの案件サマリーを通知。タイトル・予算・競合数・応募リンクを1件1ブロックで配信。

技術スタック

  • 言語: TypeScript
  • フレームワーク: なし(Node.js + 軽量ライブラリ構成)
  • DB / ストレージ: なし(GitHub Actions の Secrets + Repository に状態保持)
  • AI / 外部 API: Letta(Claude ベースのメモリエージェント)(スコアリング判定)
  • デプロイ・インフラ: GitHub Actions(cron)+ Discord Webhook

工夫点・技術的判断

ローカル PC を起動しっぱなしにしない設計を選び、GitHub Actions の cron で完全クラウド化。サーバ運用コストゼロ・PC 起動忘れによる取りこぼしゼロ。代替案として VPS 常駐や PC 上の cron も検討したが、可用性・コスト・運用負荷の3点で GitHub Actions が優位だった。AI スコアリングを単純なキーワードマッチではなく Letta(Claude ベースのメモリエージェント) の文脈判断に任せた点も特徴で、「初心者歓迎」「未経験OK」のラベルがなくても文脈で適性を拾える。

成果・指標

  • 応募候補ピックアップ時間: 30分/日 → 0分(自動)
  • 月次稼働時間の節約: 約15時間/月
  • 通知精度: 受信案件のうち応募価値ありと判定する割合 約60%(自己評価)
  • 運用コスト: サーバ代ゼロ(GitHub Actions 無料枠内で完結)

→ この実績は「業務自動化 / RPA / Claude Code を使った内製ツール構築」案件で武器になる。特に副業フリーランス支援・中小企業の社内自動化・定型作業の AI 化案件、IT インフラを持たない小規模事業者向け案件に転用可能。

関連リンク