F2T相談してみる
AI・業務自動化

Lステップに月2万円払い続ける必要、本当にある?OSSの「LINE Harness」をCloudflare Workersにデプロイして無料LINE CRMを手に入れた話

Lステップに月2万円払い続ける必要、本当にある?OSSの「LINE Harness」をCloudflare Workersにデプロイして無料LINE CRMを手に入れた話

Lステップの代替を探し始めた理由

LINE公式アカウントでステップ配信やセグメント配信をやろうとすると、ほぼ一択で「Lステップ」にたどり着く。実際、筆者もとある会社のLINE運用でLステップを使っている。

ただ、使い続けるなかで2つの不満が出てきた。

1つ目はコスト。 Lステップの月額は最低でも約2万円。年間にすると24万円になる。アカウントが増えれば、その分だけ追加契約が必要だ。中小規模の事業者にとって、この固定費はじわじわ効いてくる。正直なところ、「この金額に見合った使い方ができているか?」と自問するたび、答えに詰まることが増えていた。

2つ目はAPIが公開されていないこと。 自社のシステムと連携したい、AIで配信内容を自動生成したい。そう思っても、LステップにはパブリックAPI(外部のプログラムからデータをやり取りするための窓口)がない。管理画面からの手作業に依存する部分が多く、「手で設定する」以外の選択肢がないのだ。あなたも、管理画面をポチポチしながら「これ、自動化できないのかな」と思ったことはないだろうか。

この2つの課題を解決できるツールはないか。そう思ってリサーチしていたところ、GitHub上で「LINE Harness」というOSS(オープンソースソフトウェア。ソースコードが公開されていて無料で使える)を見つけた。

LINE Harnessとは何か

LINE Harnessは、LINE公式アカウント向けのオープンソースCRM(顧客管理ツール)だ。MITライセンスで公開されている。

一言でいうと「Lステップの機能をCloudflare Workers(サーバーを持たずにプログラムを動かせるサービス)上に無料で構築できるツール」になる。正直、最初は半信半疑だった。無料で本当にLステップの代わりが務まるのか?と。

まずは何ができるかを説明しよう。

配信まわりでは、ステップ配信(分単位の遅延制御や条件分岐にも対応している)とブロードキャスト配信(全員・タグ別・セグメント別の送り分け、予約配信も可能)が揃っている。Lステップでよく使う機能は、ほぼカバーされていると思っていい。

ユーザー管理の面では、リッチメニューの切替(ユーザーごと・タグごとに出し分けられる)、LIFF(LINEアプリ内で動くミニアプリ)を使ったフォーム機能、行動ベースのスコアリング(リードスコアの自動計算)が備わっている。フォームがLINE内で完結するのは、ユーザー体験としてもかなり良い。

自動化の仕組みとしては、IF-THENルール(7種のトリガーと6種のアクションを組み合わせられる)があり、さらにBAN検知と自動移行の機能まで標準搭載されている。BAN対策がデフォルトで入っているのは、LINE運用をやっている身としては地味にありがたい。マルチアカウント対応も、別契約なしで使える。

Lステップとの比較表を載せておく。数字で見ると違いが際立つ。

項目

Lステップ

LINE Harness

月額

約2万円〜

0円(Cloudflare無料枠)

API公開

なし

全機能公開(100+エンドポイント)

AI対応

なし

Claude Code連携(MCP対応)

ソースコード

非公開

MIT

マルチアカウント

別契約

標準搭載

BAN対策

なし

検知+自動移行

技術スタックについても触れておく。APIとWebhook(LINEからの通知を受け取る仕組み)はCloudflare Workers + Honoで動いている。データベースはCloudflare D1(CloudflareのSQLiteベースのデータベース)で、テーブル数は42。管理画面はNext.js 15(App Router)、LIFF部分はVite + TypeScriptで構築されている。定期実行にはWorkers Cron Triggers(5分間隔)を使っている。

デプロイ手順:7ステップで動くところまで

ここからは、実際にデプロイした手順を紹介する。前提として、Node.js 20以上、pnpm(パッケージマネージャー。npmの高速版)9以上、Cloudflareアカウント、LINE Developersアカウントが必要になる。

ステップ1: LINE Developersでチャネル作成

LINE Developers Consoleでプロバイダーを作成し、Messaging APIチャネルを設定する。Channel SecretとChannel Access Tokenを控えておく。

ここだけは注意してほしいのだが、テスト用であれば新規のLINE公式アカウントを作成して試すのがおすすめだ。既存アカウントのWebhookを切り替えるのは、動作確認が終わってからのほうが安全。筆者も既存アカウントとは別に、テスト用アカウントを用意してから進めた。

ステップ2: リポジトリをクローン

git clone https://github.com/Shudesu/line-harness-oss.git
cd line-harness-oss
pnpm install

ステップ3: D1データベースを作成

npx wrangler d1 create line-crm

出力される database_idapps/worker/wrangler.toml に記入する。

npx wrangler d1 execute line-crm --file=packages/db/schema.sql

これで42テーブル・約80クエリのスキーマが適用される。コマンド2つでデータベースの準備が終わるのは、Cloudflare D1の手軽さを実感する瞬間だ。

ステップ4: シークレット設定

npx wrangler secret put LINE_CHANNEL_SECRET
npx wrangler secret put LINE_CHANNEL_ACCESS_TOKEN
npx wrangler secret put API_KEY

API_KEYは自分で任意の文字列を設定する。管理画面やAPIアクセス時の認証に使うものだ。

ステップ5: ビルドとデプロイ

pnpm build
pnpm deploy:worker

デプロイが成功すると、以下のようなURLが発行される。

https://line-harness.your-subdomain.workers.dev

これが動いた瞬間は、素直に嬉しかった。「本当に無料で動くんだ」という実感が湧いた。

ステップ6: Webhook URL設定

LINE Developers Console の Messaging API 設定画面で、Webhook URLに以下を入力する。

https://line-harness.your-subdomain.workers.dev/webhook

「Webhookの利用」をオンにし、「検証」ボタンで疎通確認する。

ステップ7: 動作確認

curl -H "Authorization: Bearer YOUR_API_KEY" \
  https://line-harness.your-subdomain.workers.dev/api/friends/count

レスポンスが返ってくれば成功だ。

ハマったポイント3選

スムーズにいったように書いたが、実際にはいくつかハマった。同じ轍を踏まないための参考にしてほしい。

1. Cloudflareアカウント認証の罠

wrangler コマンドを実行したら、意図しない別のCloudflareアカウントに紐づいてしまった。ブラウザに複数アカウントでログインしていたのが原因だ。ここで30分ほどハマった。「デプロイしたはずなのにダッシュボードに出てこない」という状態になり、原因に気づくまでけっこう焦った。

対処法としては、ブラウザ認証ではなくAPIトークン方式に切り替えるのが確実。Cloudflareダッシュボードからトークンを発行し、CLOUDFLARE_API_TOKEN 環境変数にセットすればいい。複数のCloudflareアカウントを持っている人は、最初からこちらの方法を使うことをおすすめする。

2. ワークスペースパッケージのビルド順序

LINE Harnessはpnpmワークスペース構成になっている。apps/workerpackages/dbpackages/shared に依存しているため、いきなり wrangler deploy しようとするとビルドエラーになる。

先に pnpm build でワークスペース全体をビルドしてから pnpm deploy:worker を実行する。この順序を守れば問題ない。せっかちにデプロイコマンドだけ叩くと、筆者のように無駄な時間を過ごすことになる。

3. pnpm deployコマンドの衝突

pnpmには pnpm deploy というネイティブコマンド(pnm自体が持っている機能)が存在する。一方、LINE Harnessの package.json にも deploy スクリプトが定義されている。この2つが衝突してエラーになることがある。

pnpm run deploy:worker のように、スクリプト名を明示的に指定して実行すれば回避できる。地味なポイントだが、知らないと原因の特定に時間がかかる類のトラブルだ。

Claude Codeから全操作可能:MCP連携

個人的に最も価値を感じたのが、MCP(AIツールが外部サービスと連携するための仕組み)サーバーの存在だ。

LINE Harnessには @line-harness/mcp-server というパッケージが含まれている。これをClaude CodeのMCP設定に追加すると、友だち一覧の取得、タグの作成や付与、ステップ配信シナリオの作成、ブロードキャストの予約、自動化ルールの設定といった操作が、すべてAI経由でできるようになる。全部で17ツールが公開されており、「友だち追加されたら自動でタグを付けてステップ配信を開始する」といった一連のフローを、自然言語でClaude Codeに依頼するだけで構築できる。

これは実際に触ってみて驚いた。従来のLステップでは管理画面をポチポチ操作して設定していた作業が、「こういう配信フローを作って」の一言で完了する。最初は「さすがに自然言語だけでは無理だろう」と思っていたが、やってみるとちゃんと動く。この体験は、全機能がAPI公開されているOSSならではのものだ。

追記:「AIで設定できること」と「事業で安全に運用できること」は別の話

ここまで読んで、「AIでLINE配信を自動化できるなんてすごい」と思った方もいるかもしれない。実際、MCPを使えばClaude Codeに「こういう配信フローを作って」と伝えるだけで、ステップ配信もブロードキャストも設定できる。

しかし、ここで一歩立ち止まって考えてほしい。「AIが設定できること」と「事業として安全に運用できること」はまったく別の話だ。

たとえば、あなたの会社でこんなことが起きたらどうだろう。

  • AIが1万人に誤った配信を送ってしまった。誰が指示を出して、いつ実行されたのか、記録がない
  • 新人スタッフがAI経由で全友だちにテスト配信を送信してしまった。権限設定がなかった
  • 配信ミスに気づいたが、止める手段がなかった。送信が全件完了するまで見ていることしかできなかった

「AIで便利になった」の裏側には、こうした事故リスクが必ず存在する。そして、Lステップのような既存ツールが月額を取っている理由の一つは、こうしたリスクに対するガードレールを提供しているからだ。

OSSだからこそ自分で作れる安全機構

LINE Harnessの記事を書いたあとで、この問題について考え続けた。そして結論として、事業運用に必要な安全機構を自分たちで実装した。 OSSだからこそ、必要な安全装置を自分の手で追加できる。

以下が、新たに追加した機能の一覧だ。

1. 監査ログ(Audit Log)

すべての書き込み操作(配信作成、送信、設定変更、削除など)に対して、誰が・いつ・何をしたかを自動記録する仕組みを実装した。

  • POST/PUT/PATCH/DELETEリクエストをミドルウェアで自動検出
  • スタッフID、操作内容、対象リソース、IPアドレス、タイムスタンプを記録
  • 監査ログAPIで検索・フィルタ可能(リソース種別、スタッフ、操作内容で絞り込み)
  • レスポンスをブロックしない設計(ログ記録の失敗が配信業務に影響しない)

「誰がやったかわからない」という状態を根本的に解消した。万が一のインシデント発生時にも、操作履歴から原因を特定できる。

2. 配信セーフガード(Delivery Safeguards)

大量配信の「取り返しのつかないミス」を防ぐ、3段階の安全装置を導入した。

確認ステップ: 配信実行前に対象者数を表示し、confirmed: true を明示的に渡さない限り送信されない。AIが勝手に配信を実行することはできない。

ドライラン: dryRun: true を指定すると、実際には送信せず対象者数だけを返す。「この条件で何人に届くか」を事前確認できる。

緊急停止: 送信中の配信をAPIから即座に停止できる。バッチ送信の各ループで停止フラグをチェックし、停止命令を受けたらそれ以降の送信を中断する仕組みだ。

日次配信上限: 環境変数で1日の配信回数上限を設定可能。上限に達した場合は429エラーを返す。

MCPツール側にも同じセーフガードを組み込んだ。Claude Codeから配信を依頼しても、まず対象者数が提示され、明示的に確認しない限り送信されない。

3. 承認ワークフロー(Approval Workflow)

一定規模以上の配信には、管理者の承認がなければ実行できない仕組みを追加した。

  • 環境変数 APPROVAL_THRESHOLD で閾値を設定(例: 100人以上は承認必須)
  • staff権限のユーザーが閾値を超える配信を実行しようとすると、自動で承認リクエストが作成される
  • admin以上の権限を持つ別のスタッフが承認・却下できる
  • 自己承認は禁止(リクエストした本人が承認することはできない)
  • 承認・却下の操作も監査ログに記録される

「AIが勝手に大量配信」という最悪のシナリオを、組織的なチェック機構で防止する。

4. ロールベースアクセス制御(RBAC)

3階層のロール(owner / admin / staff)に加えて、スタッフ個人単位の細かい権限設定を可能にした。

  • ownerは全操作が可能
  • adminは配信の読み取り・作成・送信、シナリオ管理、フォーム管理など
  • staffは読み取り中心の限定的な権限
  • 個別のスタッフに対して、追加の権限を付与・剥奪できる
  • 権限チェックはミドルウェアとして実装し、既存のすべてのエンドポイントに適用可能

「新人には閲覧だけ」「ベテランには配信権限も」といった運用が可能になった。

5. データ保持ポリシー(Data Retention)

監査ログは無限に溜まり続けると、ストレージコストやプライバシーの問題が出てくる。そこで、環境変数 DATA_RETENTION_DAYS で保持期間を設定できるようにした。Cloudflare Workers の Cron Triggers を使って、設定期間を超えた古いログを自動的にパージする。

なぜこれが重要か

上記の機能は、すべて環境変数で制御するオプトイン方式にしている。つまり、小規模な個人利用なら設定不要でそのまま使える。事業規模が大きくなったり、チームで運用するようになったタイミングで有効にすればいい。

重要なのは、「AIで何ができるか」だけでなく、「AIが間違えたときにどう対処するか」を設計に含めることだ。Lステップには管理画面とサポート体制という安全網がある。OSSを選ぶなら、同等以上の安全機構を自分たちで構築する必要がある。

LINE Harnessは今回の実装により、その両方——AIの利便性と事業運用の安全性——を兼ね備えたプラットフォームになった。

コスト比較

最後にコストの話をしておく。これが一番気になる人も多いだろう。

規模

Lステップ

LINE Harness(Cloudflare)

〜1,000友だち

月額 約21,780円

0円

〜5,000友だち

月額 約21,780円

0円(無料枠内)

〜10,000友だち

月額 約33,000円〜

約$10/月(約1,500円)

5,000友だち以下なら、Cloudflare無料枠で完全に収まる。年間で約26万円の差が出る計算だ。この数字を見たとき、正直「もっと早く知りたかった」と思った。

もちろん、自分でデプロイ・運用する技術コストはかかる。ここは「エンジニアがチームにいるか」がLINE Harnessを選ぶかどうかの分岐点になる。

まとめ:LINE Harnessが向いている人・向いていない人

LINE Harnessが合うのは、チームにエンジニアがいる(または自分がエンジニアである)組織だ。Lステップの月額コストを削減したい、LINE配信をAPIやAIで自動化したい、複数アカウントを一元管理したい、BAN対策をしっかりやりたい。こうしたニーズがあるなら、試してみる価値は十分にある。

一方、サーバーの運用には一切関わりたくない、Cloudflareのアカウントを作ること自体に抵抗がある、手厚いサポートが付いた有料ツールのほうが安心。そういう方には、正直おすすめしにくい。Lステップには、管理画面のわかりやすさやサポート体制という明確な強みがある。

LINE Harnessは「Lステップの完全な代替」とまでは言い切れない。管理画面の洗練度やサポート体制では、有料サービスに分がある。ただ、「全機能がAPI公開」「AI連携が標準」「月額0円」という3つの強みは、特にエンジニアが運用に関わるチームにとっては圧倒的な魅力だ。

Lステップの月額に疑問を感じているなら、まずはテスト用アカウントで試してみることをおすすめする。デプロイ自体は、この記事の手順どおりにやれば30分もかからない。筆者もまだ検証段階だが、「これはいける」という手応えを感じている。


LINE Harnessの詳細はGitHubを参照。MITライセンスで公開されている。

関連記事