【Difyハック】標準機能が弱いならコードで解決!Arxiv論文を検索してSlackに自動要約するワークフロー構築術

はじめに

最新の論文をキャッチアップするのは、研究者やエンジニアにとって重要ですが、正直なところ大変ではありませんか?

「膨大な数の論文を毎日チェックするのは時間がない…」 「英語のアブストラクトを読むのが少し億劫…」 「有益な論文を見逃しているかもしれない…」

そんな悩みを、AIアプリ開発プラットフォーム「Dify」が解決してくれます。

この記事では、Difyのワークフロー機能を使って、世界最大の論文リポジトリArxivから指定したキーワードの論文を自動で探し出し、日本語で要約してSlackに通知するシステムを構築する方法を、ステップバイステップで解説します。

著者プロフィール

経営コンサルタントの国家資格:中小企業診断士かつ現役技術者の小林隼人です。生成AIを活用して創業や中小企業経営の支援をしております。
詳しいプロフィールはこちら

さらに、Difyの標準プラグインだけでは実現できない柔軟な検索を、Pythonコードを直接実行することで解決する、一歩進んだテクニックも紹介します。この記事を読めば、あなたも今日から面倒な論文チェック作業を自動化し、研究や開発に集中できる環境を手に入れられます!

Dify ワークフローの設計

ワークフロー全体

ワークフローの全体図です。

DSLファイルはこちらからダウンロードできます。

以下、各ブロックずつ詳細を見ていきましょう。

開始

queryとしてarxivで論文を検索するためのキーワードを入力を受け付けます。ここは特別なことは何もしていません。

Arxiv検索

Arxivを検索するがDifyで用意されているArxivプラグインは機能が弱いので、力技でコード実行で解決します。

やっていることはpythonでArxivのAPIを使って
①入力で受け取った “query” でArxivを検索する
②検索してヒットした100件のうちからランダムで1件選択する。

pythonコードは以下の通りです。ChatGPTに生成してもらいました。

import requests
import xml.etree.ElementTree as ET
import random

def main(query: str) -> dict:
    base_url = "https://export.arxiv.org/api/query"
    params = {
        "search_query": f"all:{query}",
        "start": 0,
        "max_results": 100,   # トップ100件を取得
    }

    try:
        response = requests.get(base_url, params=params, timeout=30)
        response.raise_for_status()
    except requests.exceptions.RequestException as e:
        return {"error": str(e)}

    # XML解析
    root = ET.fromstring(response.text)
    ns = {"atom": "http://www.w3.org/2005/Atom"}
    entries = root.findall("atom:entry", ns)

    if not entries:
        # 検索結果がゼロのとき
        return {}

    # ランダムに1件選択
    entry = random.choice(entries)

    # 必要な情報を抽出
    title   = entry.find("atom:title",   ns).text.strip()
    paper_id = entry.find("atom:id",      ns).text.strip()
    summary = entry.find("atom:summary", ns).text.strip()

    return {
        "title":   title,
        "id":      paper_id,
        "summary": summary
    }

これで取得した情報を後ろに回します。

LLMブロック

gpt-5-nanoを使って、論文のabstract(概要)を翻訳して要約します。gpt-5-nanoは非常に優秀で、入力したプロンプトに忠実に従った回答を作ります。このようなエージェントアプリに組み込むことでとても良い動きをします。

テンプレート

回答を整形します。
{タイトル}
{URL}
{要約したアブストラクト}

slackに投稿する

incoming webhookでslackにメッセージ送信します。

終了

以上で終了です。

定期自動実行させるには

こうして作成したワークフローですが、いちいち手動で実行するのではなく定期的に自動実行するようにしましょう。

自動実行にはGASを使うと便利ですが、方法は下記の記事で紹介したのでご覧ください。

終わりに

今回は、Difyのワークフロー機能を使って、Arxivの論文情報を自動で収集・要約し、Slackに通知するシステムを構築しました。

このワークフローのポイントは以下の通りです。

  • 情報収集の完全自動化: 面倒な手作業をなくし、効率的に最新情報をキャッチアップ。
  • Pythonによる機能拡張: 標準機能で物足りない部分をコードで補い、より柔軟な処理を実現。
  • LLMによる要約・翻訳: 論文の概要を素早く日本語で把握し、内容の吟味にかかる時間を短縮。
  • Slack連携によるスムーズな共有: チームや個人の情報共有を円滑化。

今回はランダムで1件を取得しましたが、このワークフローを応用すれば、「1日に発表された論文を全て取得する」「特定の著者でフィルタリングする」「SlackだけでなくDiscordやメールに通知する」といったカスタマイズも可能です。

Difyのようなローコード・プラットフォームと少しのプログラミング知識を組み合わせることで、アイデア次第で強力な業務効率化ツールを誰でも作成できます。ぜひ、今回の記事を参考に、あなただけの自動化ワークフローを構築してみてください!

コメント

タイトルとURLをコピーしました