Tabelog(食べログ)上の店舗をエリアとキーワードで検索し、評価順に上位店舗を返す Go 製の LINE Bot です。 CLI ツールとしても使用可能です。
- LINE Bot として動作し、ユーザーからのメッセージに応じて食べログ検索を実行
- CLI ツールで指定したエリア・キーワードに応じて上位 5 件の飲食店情報を取得
- 店舗情報は Agouti を利用してブラウザ操作によりスクレイピング
- Go
- Cobra: CLI フレームワーク
- Agouti: Web スクレイピング用のヘッドレスブラウザ制御
- LINE Messaging API
- logrus: ログ出力
- Gorilla Mux: HTTP ルーティング
クリーンアーキテクチャをベースに実装しています。
.
├── cli/ # CLIツール実装
│ └── cmd/ # CLIコマンド (root, search)
├── cmd/ # Webサーバ起動エントリポイント
├── entity/ # ドメインモデル(Shopなど)
├── interface/ # 外部インターフェース (LINE, WebDriver)
│ ├── controller/ # HTTPハンドラ
│ └── gateway/ # 外部サービス連携
├── server/ # サーバ起動処理
├── usecase/ # アプリケーションロジック
├── Makefile # ビルド定義
├── go.mod # Go module定義
└── README.md # このファイル
| 変数名 | 内容 |
|---|---|
SSH_CERT_PATH |
TLS 証明書ファイルのパス |
SSH_KEY_PATH |
TLS 鍵ファイルのパス |
TABELOG_SORT_CHANNEL_SECRET |
LINE チャンネルシークレット |
TABELOG_SORT_CHANNEL_TOKEN |
LINE チャンネルアクセストークン |
# Webサーババイナリのビルド
make build
# CLIバイナリのビルド
make build-cli./bin/tabelogbot --addr 0.0.0.0 --port 443./bin/tabelogbot-cli search --area 渋谷 --keyword ラーメンjgvkmea https://github.com/jgvkmea