結論:経営企画・事業企画担当がAIエージェントを使えば、競合調査・市場分析にかかる工数を大幅に削減し、意思決定の品質を高めることができます。
- 要点1:GPT Researcher(オープンソース)をPip経由でインストールすれば、数時間で競合調査エージェントが動き出す
- 要点2:「調査→仮説→意思決定」の3ステップをLangGraphで繋ぐマルチステップ設計が企画職に最も向いている
- 要点3:コピペで即使えるプロンプト5本で、競合動向・市場規模・意思決定フォーマットを出力できる
対象読者:経営企画・事業企画・新規事業担当(エンジニアなしで実装したい方)
今日やること:pip install gpt-researcherを実行し、自社事業の競合調査を1本試してみてください
「市場調査レポートを作るたびに、丸2日かかってしまう」
先日、製造業の事業企画担当の方からこんな相談を受けました。競合5社の動向調査、市場規模の最新データ収集、社内資料への落とし込み——これを毎月繰り返すだけで、担当者の稼働の3割以上が消えていると言うのです。
実際に社内での導入支援を通じて気づいたのは、経営企画や事業企画の業務こそ、AIエージェントの恩恵が最も出やすい領域だということです。定型的な情報収集・整理・フォーマット化は自動化に向いており、人間の力を「仮説立案」と「意思決定」に集中させることができます。
この記事では、エンジニアに頼らずとも動かせるGPT Researcherの実装コード、「調査→仮説→意思決定」のマルチステップ設計パターン、そして今日からコピペで使えるプロンプト5本を全公開します。
動作環境:Python 3.11以上、OpenAI APIキー、Perplexity APIキー(後半のSonar連携部分のみ)
なぜ今、経営企画職にAIエージェントが必要なのか
デロイトトーマツが2025年7月に実施した国内プライム上場企業対象の調査によると、「全社的にAIを導入している」企業の割合は47.0%に達し、前年の26.4%から20.6ポイント拡大しました(デロイトトーマツグループ「プライム上場企業における生成AI活用調査」2025年8月公表)。
しかし経営企画部門での活用は、まだ「生成AIでドキュメントを作る」レベルにとどまっているケースが多いのが実態です。競合他社の経営企画がAIエージェントを使って市場調査を自動化し始めている中で、手作業のまま残るリスクは無視できなくなっています。
エージェントと通常のAI利用の違い
通常の生成AI利用は「1問1答」です。ChatGPTに「〇〇市場の動向を教えて」と聞いて返ってきた答えをそのままコピーする、というパターンです。
AIエージェントは違います。「競合A社・B社・C社の2026年上半期の動向を調査し、自社への脅威度をスコアリングして経営会議向けの一枚サマリーにまとめる」という指示を与えると、検索・収集・整理・フォーマット化まで一連の処理を自律的に実行します。
| 項目 | 通常のChatGPT活用 | AIエージェント活用 |
|---|---|---|
| 実行方式 | 1問1答 | タスクを自律分解・連鎖実行 |
| 情報収集 | 知識ベース(最新情報に弱い) | Web検索・API連携でリアルタイム取得 |
| 出力形式 | テキスト回答 | レポート・スプレッドシート・スライド素材など指定可 |
| 人手介入 | 毎回必要 | 完了通知後にレビューするだけ |
| 向いている業務 | 単発の質問・文章生成 | 定期的な市場調査・競合モニタリング |
競合調査エージェントの実装コード(GPT Researcher)
GPT Researcherは、assafelovic氏が開発したオープンソースの自律型調査エージェントです。Carnegie Mellon Universityが2025年5月に実施したDeepResearchGym評価(1,000件の複雑なクエリ)では、Perplexity・OpenAI・HuggingFaceを上回る引用品質・レポート品質を記録しています(GPT Researcher公式 2026年6月時点)。
ステップ1:インストールと環境設定
# Python 3.11以上が必要
pip install gpt-researcher
# .envファイルを作成してAPIキーを設定
# .env
OPENAI_API_KEY=your_openai_api_key_here
TAVILY_API_KEY=your_tavily_api_key_here # 無料枠あり
Tavily APIは月1,000クエリまで無料です(Tavily公式 2026年6月時点)。競合調査の試作段階では無料枠で十分です。
注意:本番環境で使用する前に、必ずテスト環境で動作確認してください。
ステップ2:競合調査スクリプト
以下は経営企画担当が「競合A社の最新動向を調査してサマリーレポートを作成する」ユースケースのコードです。
"""
競合調査エージェント — 経営企画向け
動作環境: Python 3.11+, gpt-researcher>=0.8.0
"""
from gpt_researcher import GPTResearcher
import asyncio
import json
from datetime import datetime
async def competitive_research(
company_name: str,
focus_areas: list[str],
output_format: str = "executive_summary"
) -> dict:
"""
競合企業の調査レポートを自動生成する
Args:
company_name: 調査対象企業名
focus_areas: 調査観点のリスト(例: ["新製品", "組織変更", "財務動向"])
output_format: 出力形式(executive_summary / detailed_report)
"""
# 調査クエリを構成
focus_str = "、".join(focus_areas)
query = (
f"{company_name}の2026年最新動向を調査してください。"
f"特に以下の観点を重点的に調べてください:{focus_str}。"
f"経営企画担当者が経営会議で報告できる形式でまとめてください。"
)
# GPTResearcherを初期化
researcher = GPTResearcher(
query=query,
report_type="research_report", # 詳細レポート形式
verbose=True # 調査過程を出力(デバッグ用)
)
# 調査実行
print(f"[{datetime.now().strftime('%H:%M:%S')}] 調査開始: {company_name}")
await researcher.conduct_research()
# レポート生成
report = await researcher.write_report()
return {
"company": company_name,
"timestamp": datetime.now().isoformat(),
"report": report,
"sources": researcher.get_source_urls()
}
# 実行例
async def main():
# 競合3社を順次調査(並列は API レート制限に注意)
competitors = [
{
"name": "競合A社",
"focus": ["新製品・サービス発表", "組織・人事", "価格戦略"]
},
{
"name": "競合B社",
"focus": ["M&A・資本提携", "海外展開", "技術投資"]
}
]
results = []
for comp in competitors:
result = await competitive_research(
company_name=comp["name"],
focus_areas=comp["focus"]
)
results.append(result)
print(f"完了: {comp['name']} — ソース数: {len(result['sources'])}")
# 結果をJSONで保存
with open("competitive_research_output.json", "w", encoding="utf-8") as f:
json.dump(results, f, ensure_ascii=False, indent=2)
print("全競合調査完了。competitive_research_output.json を確認してください。")
if __name__ == "__main__":
asyncio.run(main())
ポイント:
focus_areasに「新製品」「M&A」「価格戦略」など調査観点を渡すことで、関係のない情報を絞り込む- 複数社の並列実行はAPIレート制限に引っかかる可能性があるため、順次実行を推奨
get_source_urls()で引用元URLを取得できるので、レポートの根拠確認が容易
Perplexity Sonar APIで市場動向をリアルタイム取得
GPT Researcherはレポート生成に優れていますが、「今この瞬間の市場ニュース」をスポットで取得したい場面ではPerplexity Sonar APIが有効です。Sonarモデルはリアルタイムのウェブ検索結果を基に回答を生成するため、最新の業界ニュース収集に向いています。
料金(2026年6月時点・Perplexity公式):
- Sonar:インプット・アウトプット各100万トークンあたり1ドル(約160円)
- Sonar Pro:インプット100万トークンあたり3ドル、アウトプット100万トークンあたり15ドル
- 新規アカウント:25〜50ドルの試用クレジット付与
市場ニュース自動収集スクリプト
"""
Perplexity Sonar API — 市場ニュース自動収集
動作環境: Python 3.11+, requests>=2.31.0
"""
import requests
import os
from datetime import datetime
def fetch_market_news(
industry: str,
time_range: str = "過去1週間",
output_points: int = 5
) -> dict:
"""
指定業界の最新市場ニュースをSonar APIで取得する
Args:
industry: 業界名(例: "国内SaaS市場", "自動車部品製造")
time_range: 期間指定(例: "過去1週間", "過去1ヶ月")
output_points: 要点の数
"""
api_key = os.environ.get("PERPLEXITY_API_KEY")
if not api_key:
raise ValueError("PERPLEXITY_API_KEY が .env に設定されていません")
prompt = (
f"{industry}の{time_range}の主要な動向・ニュースを"
f"経営企画担当向けに{output_points}点にまとめてください。"
f"各ポイントは「見出し:説明(出典URL)」の形式で記載してください。"
f"数値データ(市場規模・成長率等)が含まれる場合は必ず出典を明示してください。"
)
response = requests.post(
"https://api.perplexity.ai/chat/completions",
headers={
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
},
json={
"model": "sonar", # または "sonar-pro"
"messages": [
{
"role": "system",
"content": "あなたは経営企画担当者をサポートする市場調査アシスタントです。"
"事実に基づいた情報のみを提供し、不確かな情報は「要確認」と明示してください。"
},
{
"role": "user",
"content": prompt
}
],
"max_tokens": 1500,
"temperature": 0.1 # 低めに設定して事実ベースの回答を促進
}
)
if response.status_code != 200:
raise RuntimeError(f"API エラー: {response.status_code} — {response.text}")
data = response.json()
content = data["choices"][0]["message"]["content"]
return {
"industry": industry,
"time_range": time_range,
"fetched_at": datetime.now().isoformat(),
"news_summary": content,
"model": "sonar",
"usage": data.get("usage", {})
}
# 実行例
if __name__ == "__main__":
result = fetch_market_news(
industry="国内クラウドサービス市場",
time_range="過去2週間",
output_points=5
)
print(result["news_summary"])
print(f"n取得日時: {result['fetched_at']}")
print(f"使用トークン: {result['usage']}")
注意:Sonar APIの回答にはリアルタイム情報が含まれますが、ハルシネーションのリスクはゼロではありません。特に数値データは必ず一次ソースを確認してから資料に使用してください。
「調査→仮説→意思決定」のマルチステップ設計パターン
単発の調査エージェントを超えて、「情報を集めて仮説を立て、意思決定フォーマットに落とし込む」マルチステップ設計が経営企画職には最も効果的です。
LangGraphを使ったマルチステップ設計のフローは以下の通りです。
設計概要
| ステップ | ノード名 | 処理内容 | 使用ツール |
|---|---|---|---|
| 1 | research | 競合・市場情報の収集 | GPT Researcher / Sonar API |
| 2 | structure | 取得情報のカテゴリ整理 | GPT-4o |
| 3 | hypothesis | 自社への示唆・仮説生成 | GPT-4o |
| 4 | format | 意思決定ドキュメント化 | GPT-4o |
| 5 | human_review | 担当者レビューの差し込み | Human-in-the-Loop |
LangGraphでのマルチステップ実装コード
"""
マルチステップ市場調査エージェント
動作環境: Python 3.11+, langgraph>=0.2, langchain>=0.3, openai>=1.30
"""
from langgraph.graph import StateGraph, END
from langchain_openai import ChatOpenAI
from typing import TypedDict, Annotated
import operator
# ステートの型定義
class ResearchState(TypedDict):
topic: str # 調査テーマ
raw_research: str # 1. 収集した生データ
structured_data: str # 2. 整理済みデータ
hypotheses: str # 3. 仮説リスト
decision_doc: str # 4. 意思決定ドキュメント
human_feedback: str # 5. 人間のフィードバック
is_approved: bool # 承認フラグ
llm = ChatOpenAI(model="gpt-4o", temperature=0.2)
def research_node(state: ResearchState) -> dict:
"""ステップ1: 競合・市場情報の収集"""
# 実際の実装ではGPT ResearcherやSonar APIを呼び出す
prompt = f"""
以下のテーマについて、最新の市場情報・競合動向を収集してください。
テーマ: {state['topic']}
以下の観点を必ず含めてください:
1. 主要プレイヤーの直近の動き(製品・サービス発表)
2. 市場全体のトレンド(成長率・規模感)
3. 業界固有のリスク要因
4. 海外での先行事例
各情報には出典(URL・発表日)を必ず付けてください。
"""
response = llm.invoke(prompt)
return {"raw_research": response.content}
def structure_node(state: ResearchState) -> dict:
"""ステップ2: 情報の構造化整理"""
prompt = f"""
以下の生の調査データを整理してください。
【生データ】
{state['raw_research']}
以下のカテゴリに分類してください:
- 機会(Opportunities)
- 脅威(Threats)
- 業界トレンド
- 要注目プレイヤー
各カテゴリは箇条書きで3〜5点にまとめてください。
"""
response = llm.invoke(prompt)
return {"structured_data": response.content}
def hypothesis_node(state: ResearchState) -> dict:
"""ステップ3: 自社への示唆・仮説生成"""
prompt = f"""
以下の市場情報をもとに、自社の経営企画に関わる仮説を3〜5本生成してください。
【整理済み市場情報】
{state['structured_data']}
仮説の形式:
「〇〇が□□になるため、△△の可能性がある。検証方法:◇◇」
注意: 仮説はあくまでも検討のたたき台です。
確認の取れていない推測は「要検証」と必ず明示してください。
"""
response = llm.invoke(prompt)
return {"hypotheses": response.content}
def format_node(state: ResearchState) -> dict:
"""ステップ4: 意思決定ドキュメント化"""
prompt = f"""
以下の調査結果・仮説を、経営会議向けの1枚サマリーに整形してください。
【仮説リスト】
{state['hypotheses']}
出力形式:
## 調査テーマ: {state['topic']}
## 調査日: (今日の日付)
### 市場のポイント(3点)
### 自社への示唆(2〜3点)
### 推奨アクション(1〜2点)
### 次の確認事項(要検証リスト)
※ 数値はすべて出典付きで記載。不確かな情報は「要確認」と付記すること。
"""
response = llm.invoke(prompt)
return {"decision_doc": response.content}
def should_approve(state: ResearchState) -> str:
"""人間承認ゲート: 承認済みなら終了、未承認なら再調査"""
if state.get("is_approved", False):
return "approved"
return "needs_revision"
# グラフ構築
graph = StateGraph(ResearchState)
graph.add_node("research", research_node)
graph.add_node("structure", structure_node)
graph.add_node("hypothesis", hypothesis_node)
graph.add_node("format", format_node)
graph.set_entry_point("research")
graph.add_edge("research", "structure")
graph.add_edge("structure", "hypothesis")
graph.add_edge("hypothesis", "format")
graph.add_conditional_edges(
"format",
should_approve,
{"approved": END, "needs_revision": "research"}
)
app = graph.compile()
# 実行例
result = app.invoke({
"topic": "国内B2B SaaS市場における競合動向 2026年上半期",
"raw_research": "",
"structured_data": "",
"hypotheses": "",
"decision_doc": "",
"human_feedback": "",
"is_approved": False
})
print(result["decision_doc"])
ポイント:
- 各ノードを独立させることで、どのステップで出力の質が下がっているかを特定しやすい
should_approveによる人間承認ゲートが入っており、AIが自走して誤った情報が資料に混入するリスクを防ぐis_approved=TrueをセットすればEndに進み、Falseのままなら再調査ループに戻る設計
Human-in-the-Loop(人間の承認ステップ)の詳細設計については、AIエージェントの承認設計ガイドも参考にしてください。
すぐ使えるプロンプトテンプレート5本
以下のプロンプトはChatGPTやClaude、または上記エージェントコードのシステムプロンプトとして使用できます。調査対象・期間・重点観点を「[ ]」の中に入れ替えてください。
プロンプト1:競合動向ワンページサマリー
あなたは経営企画担当者の調査アシスタントです。
[競合企業名]の[期間]の動向を調査し、以下のフォーマットで出力してください。
## [競合企業名] 動向サマリー — [調査日]
### 主要トピック(3点)
- トピック1:見出し(出典URL、発表日)
- トピック2:
- トピック3:
### 自社への影響
- 機会:
- リスク:
### 次回確認事項
-
注意事項:
- 不確かな情報は「要確認」と付記してください
- 数値データには必ず出典を付けてください
- 推測と事実を明確に区別してください
プロンプト2:市場規模・成長率調査
以下の市場について、最新のデータを収集してください。
対象市場:[市場名]
調査項目:
1. 現在の市場規模(直近年度、出典付き)
2. 年平均成長率(CAGR)の予測値(出典・調査機関・発表年付き)
3. 主要なドライバー(成長要因)3点
4. 主要なリスク要因 2点
5. 国内と海外の温度差
出力形式:経営企画担当が経営会議で読み上げられるA4半ページ相当のサマリー。
不確かな数値は「(推計値・要確認)」と必ず付記すること。
プロンプト3:新規事業機会の仮説生成
以下の情報を踏まえ、新規事業仮説を3本生成してください。
【自社の強み】
[箇条書きで3〜5点]
【市場トレンド】
[調査で得た市場動向を貼り付け]
仮説フォーマット:
仮説[番号]:
- 機会の根拠:
- 想定ターゲット:
- 自社の強みとの接点:
- リスク:
- 検証方法(最小工数で確認できる方法):
- 優先度(高/中/低)と根拠:
注意:仮説はあくまで検討のたたき台です。
数値的な根拠がない部分には「要検証」を付けてください。
プロンプト4:意思決定ブリーフィングシート作成
以下の情報をもとに、意思決定者向けのブリーフィングシート(A4一枚)を作成してください。
【背景・目的】
[何を決めたいのか]
【現状と課題】
[調査結果や現場の声を貼り付け]
出力フォーマット:
## 意思決定事項
[一文で問いを明確化]
## 背景(3点以内)
## 選択肢(2〜3案)
選択肢ごとに「メリット」「デメリット」「コスト感」を表形式で比較記載
## 推奨案と根拠
## 保留事項・前提条件
## 次のアクション・期限
注意:「〜と思われる」「〜かもしれない」などの曖昧表現を排し、
事実と推測を明確に分けて記載してください。
プロンプト5:週次市場モニタリングレポート
毎週月曜日に実行する市場モニタリングエージェントのシステムプロンプトです。
あなたは[業界名]の市場動向を継続監視するエージェントです。
過去7日間の以下のトピックについて、重要度の高いニュースを5件以内で報告してください。
監視トピック:
1. [競合A社]の動向
2. [競合B社]の動向
3. 規制・法令改正の動き
4. 顧客セグメントに関する市場調査
5. 海外先行事例
出力形式(各ニュース):
- 見出し(発信元・日付)
- 要点(3行以内)
- 自社への示唆(1行)
- 関連URL
最後に「今週の注目度スコア(1〜5):高い順に3項目」を付けてください。
スコアの根拠も必ず1行添えること。
GPT Researcherの内部連携を深める:Tavily API活用
GPT ResearcherはデフォルトでTavily Search APIを使用して情報を収集します。Tavily APIを活用することで、検索結果の精度を業界・地域・時期でフィルタリングできます。
"""
Tavily API + カスタム検索フィルタ
動作環境: Python 3.11+, tavily-python>=0.3
"""
from tavily import TavilyClient
import os
client = TavilyClient(api_key=os.environ.get("TAVILY_API_KEY"))
def search_industry_news(
query: str,
days: int = 7,
max_results: int = 10
) -> list[dict]:
"""
業界ニュースを期間指定で収集する
Args:
query: 検索クエリ
days: 過去何日分を対象にするか
max_results: 最大取得件数
"""
results = client.search(
query=query,
search_depth="advanced", # 高精度検索
max_results=max_results,
days=days, # 期間フィルタ
include_answer=True, # AI生成サマリーを含める
include_raw_content=False
)
# 関連度スコア0.5以上のみ返す
filtered = [
r for r in results.get("results", [])
if r.get("score", 0) >= 0.5
]
return {
"query": query,
"answer": results.get("answer", ""), # 自動サマリー
"results": filtered,
"total": len(filtered)
}
# 実行例
output = search_industry_news(
query="国内SaaS企業 新機能発表 AI",
days=14,
max_results=8
)
print(output["answer"]) # Tavilyが生成した自動サマリー
【要注意】よくある失敗パターンと回避策
失敗1:AIの出力をそのまま経営資料に使う
GPT Researcherが生成したレポートをそのまま経営会議に持ち込むのは危険です。数値の誤り(ハルシネーション)、古い情報への依存、引用元の信頼性の差——これらを担当者がレビューする工程なしに資料化すると、重大な意思決定ミスにつながる可能性があります。
回避策:AIの出力は「下書きと素材収集のツール」と位置づける。数値・市場データは必ず一次ソースを確認し、担当者が判断の言葉を加えてから資料化する。
失敗2:プロンプトに調査観点を書かずに実行する
「〇〇市場を調査して」だけでは、AIが何を重点的に調べるか判断できません。返ってくるのは一般的な概要説明だけになりがちです。
回避策:「新製品発表・組織変更・価格戦略の観点で調べて」のように、調査観点を3〜5点リストで明示する。前述のプロンプトテンプレートが参考になります。
失敗3:1回の実行で完結させようとする
「競合調査して仮説作って意思決定シートも一発で出して」という指示は、出力の品質が落ちやすくなります。AIエージェントも処理を詰め込むほど精度が下がります。
回避策:「調査→整理→仮説→フォーマット」と処理を4ノードに分割し、各ステップで品質を確認しながら進める。前述のLangGraphコードがそのまま使えます。
失敗4:Human-in-the-Loopを省略する
エージェントを「全自動」にしたくなる気持ちは分かりますが、経営判断に関わる調査で人間のレビューを省くと、AIの誤りが意思決定に直接影響します。
回避策:ステップ4の「意思決定ドキュメント化」が完了した時点で必ず担当者が確認するゲートを設ける。上記のLangGraphコードのshould_approveノードがその役割を担っています。
内部リンク:あわせて読みたい
自律型リサーチエージェントの基礎を詳しく知りたい方は、GPT Researcherの活用ガイド2026も参照してください。マルチエージェントシステムにおける承認設計については、Human-in-the-Loop設計ガイドで詳しく解説しています。マーケターがエージェントを構築する場合はマーケター向けAIエージェント構築ガイドもあわせてご覧ください。
まとめ:今日から始める3つのアクション
- 今日やること:
pip install gpt-researcherを実行し、自社事業に関連する競合1社を対象に調査スクリプトを試してみてください - 今週中:プロンプトテンプレート5本のうち1本を選び、実際の経営資料作成に適用する。出力の質と手作業との差を比較する
- 今月中:LangGraphのマルチステップ設計を社内の定例リサーチ業務に組み込み、月次の工数削減効果を測定する
参考・出典
- GPT Researcher公式サイト — assafelovic(参照日: 2026-06-11)
- gpt-researcher — PyPI(参照日: 2026-06-11)
- Perplexity AI Sonar Pricing — Perplexity公式(参照日: 2026-06-11)
- プライム上場企業における生成AI活用調査 — デロイトトーマツグループ(2025年8月公表)
- LangChain Agents ドキュメント — LangChain公式(参照日: 2026-06-11)
- Tavily Search API — Tavily公式(参照日: 2026-06-11)
この記事を読んで導入イメージが固まってきた方へ
UravationではAIエージェント導入の研修・コンサルを行っています。経営企画・事業企画チームへの導入支援実績もありますので、お気軽にご相談ください。
著者:佐藤傑(さとう・すぐる)
株式会社Uravation代表取締役。X(@SuguruKun_ai)フォロワー10万人超。100社以上の企業向けAI研修・導入支援。著書累計3万部突破。
ご質問・ご相談はお問い合わせフォームからお気軽にどうぞ。
