今自分はAI系の開発案件をやっており、ジョインしているチームではSlackで主にコミュニケーションをしているので、そのチームのチャンネルに毎朝generative aiの最新ニュースを流したらチームの知識/スキル向上するのでは思って手順などを整理してたので、ここでシェアしたい。
完成イメージ
まずテスト環境(ローカルのubuntu)で動作確認しました。
概要
- newsapi.orgから "generative AI"を検索クエリとして5件ほどタイトルとURLを取得
- AWSのLambda + Event Bridgeで Slack channel に毎朝定期投稿
Pythonのコード
from slack_sdk import WebClient
import requests
# --- Slack設定 ---
slack_token = "xoxb-***" # Bot Token
channel_id = "***" # 投稿先チャンネルID
client = WebClient(token=slack_token)
# --- ニュース取得 ---
url = "https://newsapi.org/v2/everything"
params = {
"q": "generative AI", # 検索クエリ
"apiKey": "***", # NewsAPIキー
"pageSize": 5, # 取得件数
"sortBy": "publishedAt" # ソート順
}
response = requests.get(url, params=params)
data = response.json()
# --- Slack投稿用メッセージ作成 ---
message = ""
for article in data["articles"]:
title = article["title"]
link = article["url"]
# Slackでリンク付きタイトルにする
message += f"• <{link}|{title}>\n"
# --- 投稿 ---
client.chat_postMessage(channel=channel_id, text=message)
Slackの設定手順
1. Slack APIで新規アプリ作成
- Slack API Apps にアクセス
-
新規アプリを作成
- 「From a manifest」と「From scratch」が選べますが、今回は From scratch を選択
- アプリに名前を付け、投稿したいワークスペースを選択
2. Bot Token Scopes に権限を追加
- 左メニュー OAuth & Permissions を選択
-
Bot Token Scopes に
chat:write
を追加
3. ワークスペースにインストール
- ページ上部の 「Install App to Workspace」 をクリック
- OAuthの権限を許可してインストール
4. Bot Token を取得
- インストール後、同じ OAuth & Permissions ページに表示される
-
Bot User OAuth Token
(形式:xoxb-...
)をコピーして、Pythonコードのslack_token
に貼り付け
slack_token = "xoxb-xxxxxxxxxx"
5. 投稿するSlackチャンネルIDを確認
- 投稿先のチャンネルを開く
- URL の末尾の文字列がチャンネルID(例: C1234567890)
- Pythonコードに貼り付け
channel_id = "C1234567890"
6. Botをチャンネルに招待
- チャンネルに移動して以下を入力
/invite @BotName
7. Pythonコードを実行
$ python3 app.py
正常に設定されていれば、指定チャンネルに生成AIニュースが投稿されます
Lambda + Event Bridege の設定
1. Lambda関数を作成
- AWSコンソール → Lambda → 関数の作成 をクリック
- 設定:
-
関数名:例
slack_news_poster
-
ランタイム:
Python 3.10
-
アクセス権限:新しいロールを作成(
AWSLambdaBasicExecutionRole
付与)
-
関数名:例
- 関数の作成 をクリック
2. Pythonコードと依存ライブラリを準備
Lambdaにuploadするzipファイルの作成
mkdir package
cd package
pip install slack_sdk requests -t .
cp ../lambda_function.py .
zip -r ../lambda_function.zip .
lambda_function.zip をLambdaにアップロード可能
3. LambdaにZIPをアップロード
- Lambdaコンソール → 作成した関数を選択
- コードタブ → アップロード → .zip ファイル を選択
- 保存 をクリック
4. EventBridgeでスケジュール設定
- AWSコンソール → EventBridge → ルールの作成
- スケジュール を選択
- 例:毎時1回 → rate(1 hour)
- cron式でも可能:cron(0 * * * ? *)
- ターゲット を選択
「テンプレート化されたターゲット」 → Lambda関数
関数に作成済みの slack_news_poster を指定
「ターゲットの権限を付与」オプションをオン - ルールを作成 をクリック
⚠ ポイント
Lambda関数とEventBridgeルールは 同じリージョン に作成する
プライベートSlackチャンネルの場合、Botを招待しておく
5. 動作確認
- Lambdaコンソールで テスト を実行
- Slackにニュースが投稿されれば成功
- EventBridgeのスケジュールに従って自動実行される
まとめ
採用されるかわからないけど、提案する姿勢が大事! ということで、slackのチャンネルにPythonとLambdaで最新ニュースを流す手順まとめでした。