0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Slackの特定チャンネルに Python + Event Bridege + Lambdaで毎朝、最新テックニュースを配信

Last updated at Posted at 2025-09-20

今自分はAI系の開発案件をやっており、ジョインしているチームではSlackで主にコミュニケーションをしているので、そのチームのチャンネルに毎朝generative aiの最新ニュースを流したらチームの知識/スキル向上するのでは思って手順などを整理してたので、ここでシェアしたい。

完成イメージ

まずテスト環境(ローカルのubuntu)で動作確認しました。
生成AInewsのbot.png

概要

  • 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で新規アプリ作成

  1. Slack API Apps にアクセス
  2. 新規アプリを作成
    • 「From a manifest」と「From scratch」が選べますが、今回は From scratch を選択
  3. アプリに名前を付け、投稿したいワークスペースを選択

2. Bot Token Scopes に権限を追加

  • 左メニュー OAuth & Permissions を選択
  • Bot Token Scopeschat: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関数を作成

  1. AWSコンソール → Lambda関数の作成 をクリック
  2. 設定:
    • 関数名:例 slack_news_poster
    • ランタイムPython 3.10
    • アクセス権限:新しいロールを作成(AWSLambdaBasicExecutionRole 付与)
  3. 関数の作成 をクリック

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をアップロード

  1. Lambdaコンソール → 作成した関数を選択
  2. コードタブ → アップロード → .zip ファイル を選択
  3. 保存 をクリック

4. EventBridgeでスケジュール設定

  1. AWSコンソール → EventBridge → ルールの作成
  2. スケジュール を選択
  • 例:毎時1回 → rate(1 hour)
  • cron式でも可能:cron(0 * * * ? *)
  • ターゲット を選択
    「テンプレート化されたターゲット」 → Lambda関数
    関数に作成済みの slack_news_poster を指定
    「ターゲットの権限を付与」オプションをオン
  • ルールを作成 をクリック
    ⚠ ポイント
    Lambda関数とEventBridgeルールは 同じリージョン に作成する
    プライベートSlackチャンネルの場合、Botを招待しておく

5. 動作確認

  • Lambdaコンソールで テスト を実行
  • Slackにニュースが投稿されれば成功
  • EventBridgeのスケジュールに従って自動実行される

まとめ

採用されるかわからないけど、提案する姿勢が大事! ということで、slackのチャンネルにPythonとLambdaで最新ニュースを流す手順まとめでした。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?