正直な話: 私はこのコードの大半を書いていませんでした。
私はそれを指示しました。何を望むのかを説明し、返ってきたものをレビューし、間違っているときには反論し、機能するまで繰り返し改善しました。これこそが私が本当に伝えたいスキルです — Claudeをコード断片を作成する検索エンジンのように扱い続けるなら、まだ多くを取り逃しています。
私たちが一緒に作ったものと、実際の会話の流れは以下のとおりです。
What I Wanted
AIにマーケティングの手伝いを求めても、ロボットの委員会が書いたようなコピーが返ってくるのにはうんざりしていた。そういうのは「Unlock Your Potential Today!」のようなタイプだ。誰も買わない。
本当の問題は、マーケティングは1つのプロンプトで完結する仕事ではない。戦略を考える人、キーワードを考える人、実際のコピーを書く人、ソーシャルカレンダーを計画する人が必要だ。これらを1つのプロンプトにまとめると、特定の点以外は全て見落とされる単一視点の回答になる。
だから Claude に本当に欲しかったものを伝えた。私にチームを作ってくれと。
The Prompt That Started It
Claude に仕様書を渡したわけではない。ただ問題を説明しただけだ。
「複数の専門AIエージェントを順次実行するPython CLI が欲しい。各エージェントには特定のマーケティング役割 — CMO、SEO、コピーライター、ソーシャルメディア、メール、アナリスト — を持つ。各エージェントは前のエージェントの出力をコンテキストとして受け取り、ゼロから始めるのではなく互いの作業に基づいて作業するべき。Claude Opus 4.6 をストリーミングと適応思考で使用する。」
それだけだ。アーキテクチャ図もファイル構造もない。望んだ成果と1つの制約だけ: 連続したコンテキストの受け渡し。
返ってきたものは動作する基盤だった。完璧ではない。だが動作している。
Claudeが落ち着いたアーキテクチャ
main.py # CLI + orchestrator
agents/
base.py # MarketingAgent base class
cmo.py # Campaign strategy
seo.py # Keyword + content strategy
copywriter.py # Landing pages, ads, taglines
social.py # Content calendar, platform playbooks
email_marketer.py # Welcome sequences, nurture flows
analyst.py # KPI dashboard, A/B roadmap
tools/
platform_tools.py # HubSpot, Mailchimp, Buffer, Semrush hooks
campaigns/ # Saved campaign outputs
六名エージェント。各エージェントは専門家。実在のチームにいる実在の人のように名付けるのは、正直なところ、そうすることでシステムのプロンプトが良くなるからだ。
The Base Agent — This Is the Core
すべてのエージェントは1つのクラスから継承する。think() メソッドが全てのゲームだ:
class MarketingAgent:
def __init__(self, name: str, role: str, system_prompt: str, emoji: str = "🤖"):
self.name = name
self.role = role
self.system_prompt = system_prompt
self.emoji = emoji
def think(self, task: str, context: str = "", max_tokens: int = 4096) -> str:
messages = [{"role": "user", "content": task}]
if context:
messages = [
{
"role": "user",
"content": f"Context from previous team members:
{context}
---
Your task: {task}"
}
]
full_text = ""
with client.messages.stream(
model=" claude-opus-4-6",
max_tokens=max_tokens,
thinking={"type": "adaptive"},
system=self.system_prompt,
messages=messages,
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)
full_text += text
return full_text
シンプル。タスクを取り、前のエージェントからのコンテキストを前に付け、レスポンスをストリーミングする。コンテキストこそが“ばかげた”を防ぐ要素だ。
The Context Handoff — Why This Actually Works
ここがオーケストレーターのパイプラインだ。 Claude に対して反論した部分だ—初期のバージョンは全てを並行実行し、誰も話を合わせていなかったため出力が支離滅裂だった。
# CMO goes first — sets everything
self.outputs["01_cmo"] = self.agents["cmo"].think(cmo_task)
# SEO gets the CMO brief
self.outputs["02_seo"] = self.agents["seo"].think(
seo_task, context=self.outputs["01_cmo"]
)
# Copywriter gets CMO + SEO both
self.outputs["03_copy"] = self.agents["copywriter"].think(
copy_task,
context=self.outputs["01_cmo"] + "
" + self.outputs["02_seo"]
)
# Social gets CMO + Copy
self.outputs["04_social"] = self.agents["social"].think(
social_task,
context=self.outputs["01_cmo"] + "
" + self.outputs["03_copy"]
)
# Email gets CMO + Copy
self.outputs["05_email"] = self.agents["email"].think(
email_task,
context=self.outputs["01_cmo"] + "
" + self.outputs["03_copy"]
)
# Analyst gets everything
self.outputs["06_analytics"] = self.agents["analyst"].think(
analyst_task,
context="
---
".join([
self.outputs["01_cmo"],
self.outputs["02_seo"],
self.outputs["04_social"],
])
)
コピーライターがランディングページの見出しを書いたとき、それはすでにCMOが定義したポジショニング、SEOのキーワード、正確なペルソナを知っている。コピーは一般的ではない。ゼロから始めるのではなく、エージェントが事前に作成した完全な戦略ブリーフを起点としているからだ。
これが単一プロンプトのマーケティングAIにはできないことだ。チームがない。一人が六つの仕事を同時にこなそうとするだけで、それは露呈する。
What I Had to Correct
最初のパスで Claude が間違えた点はいくつかあって、それを私は指摘して修正した:
1. 並行実行。 最初のドラフトは全エージェントを同時に走らせた。効率的に見えたが、出力はめちゃくちゃ。コピーライターがSEO専門家の推奨を理解していなかった。Claude に順次実行にして理由を説明した。即座に修正。
2. ジェネリックなシステムプロンプト。 初期の版には「あなたはマーケティングの専門家です」みたいな曖昧な役割説明があった。具体性を求めた — 実際の成果物、期待される出力形式、現実の肩書きを持つ人物の視点から書かれていること、出力品質が顕著に向上。
3. クイックモードでのコンテキスト注入なし。 クイックキャンペーン(CMO + コピーライターのみ)はCMOのブリーフをコピーライターへ渡していなかった。テストで発見。1行の修正だが、これがシステムの要点だった。
これがAIを指示する実際の作業の姿だ。魔法のプロンプトエンジニアリングではない。出力を見直し、間違っている点を特定し、どう修正すべきかを具体的に指示することだ。
What It Produces
完全なキャンペーンを実行すると、六つの connected deliverables が得られる:
- CMO output — ポジショニング、ペルソナ、チャネル構成、メッセージの柱、KPI
- SEO output — キーワードクラスター、検索意図分析、トップ3ページのコンテンツブリーフ、技術チェックリスト
- Copywriter output — ヒーローコピー、ランディングページ全体、3つのGoogle広告のバリエーション、3つのMeta広告のバリエーション、ブランドボイスガイド
- Social output — LinkedIn、Instagram、X、TikTok 向けの4週間カレンダーと、その場で投稿可能なコンテンツ
- Email output — ウェルカムシーケンス(5通)、セールスシーケンス(3通)、リエンゲージメントシーケンス、ニュースレターテンプレート
- Analyst output — KPIダッシュボード、アトリビューションモデル、A/Bテストロードマップ、90日ベンチマーク
フルランの総出力は、実際に自己参照する連携マーケティングコンテンツとして8,000語から12,000語程度になる。ソーシャル投稿はCMOが定義した同じメッセージの柱を使用。メールの件名はコピーライターが展開したコピーの角度と一致。全体として一貫性がある。
How to Run It
git clone https://gitlab.com/JonathanMelton-FusionAL/ai-marketing-team
cd ai-marketing-team
pip install -r requirements.txt
cp .env.example .env
# Add your ANTHROPIC_API_KEY
# Full campaign — all 6 agents
python main.py campaign --product "B2B SaaS for HR teams" --save
# Quick mode — CMO + Copywriter only
python main.py campaign --product "your product" --mode quick
# Ask one agent directly
python main.py ask cmo "What channels should a bootstrapped SaaS focus on first?"
python main.py ask copy "Write 5 headline variations for a project management tool"
python main.py ask seo "Keywords for email automation software?"
--save フラグはすべてを campaigns/ にタイムスタンプ付きでダンプします。活用してください。後で出力を参照したくなるでしょう。
What I'd Do Differently
実データのキーワード。 現在は SEO エージェントがキーワード量を推定している。Semrush API キーを接続するフック(tools/platform_tools.py にある)を使えば、推奨が実際の検索データに基づくものになる。
反復ループ。 ええ、現状は直線的なパイプライン。私が望むのは、CMO がコピーライターの出力をレビューして、ポジショニングと一致しない場合には修正を指示することだ。トークン的には高コストだが、実際のチームの動きに近い。
MCP サーバーバージョン。 次に作るのはこれ。全体を MCP サーバとして包み、Claude Desktop のツールとして動く。CLI は不要で、「Xのキャンペーンを実行する」という指示だけで作業が完了する。FusionAL が向かっているのは、すべてのAIツールを一箇所に集約し、設定の手間をゼロにする世界だ。
注: Opus 4.6 with adaptive thinking はトークンを早く消費する。6エージェントの完全なキャンペーンは製品説明の長さ次第で約 $1-3 かかる。予算を見積るか、またはエージェント base.py の claude-opus-4-6 を claude-sonnet-4-6 に置換して安価な実行を選ぶとよい。
The Bigger Point
私は独学の開発者だ。CSの学位もチームもない。私はこれを一人で作り、Claude にコードの“重い部分”を任せ、私が十分に理解してレビュー・修正できるレベルのコードを自分で書かなくてもよくした。
これが今のスキルだ。すべての構文を知っていることではない。速く打てることでもない。何を求めるかを知り、それを満たしていないときに気づく力と、軌道修正の方法を知っていることだ。
それを“ずるい”と感じて諦めるなら、それは違う。2026年の優れたビルダーの働き方だ。
Repo: gitlab.com/JonathanMelton-FusionAL/ai-marketing-team
もし実行して何が出力されたか教えてくれたら、X で私をタグしてください — @2EfinAwesome。
私は FusionAL — チームがAIツールを設定するためにプラットフォームエンジニアを雇う必要のない統合MCPゲートウェイを構築しています。開発の進捗は X でフォローしてください — X.

