CrewAI
Tweet araması, profiller, takipçiler ve yazılan aktarımlar için TwexAPI MCP ile CrewAI çok aracılı Twitter araştırma ekipleri oluşturun.
TwexAPI’nin uzak MCP sunucusu aracılığıyla bir CrewAI MCP entegrasyonu oluşturun. CrewAI temsilcilerine kontrollü tweet aramaları, profil aramaları, takipçi aktarımları ve incelenen X eylemlerini verin. Her tweet kimliğini, profil kimliğini, imleci ve rota adını koruyun.
CrewAI’yi neden TwexAPI MCP ile kullanmalısınız?
CrewAI, karmaşık görevler için bir aracı çerçevesi sunar. Her temsilciye bir rol verin. TwexAPI, “explore” ve “twexapi_request” yoluyla uç nokta keşfi ve Twitter API işlemlerini sağlar.
| Sınır | CrewAI kontrolü | Fayda |
|---|---|---|
| Uzak MCP | MCPServerHTTP |
Tweet, profil, takipçi ve trend rotalarına ulaşın |
| Devir | Pydantic output_pydantic |
Hatalı tweet’leri ve imleçleri reddet |
| Sıralama | Process.sequential |
Uzmanlar arasında tam tweet’leri iletin |
| Keşif | Statik araç filtresi | “Keşfet”i yürütme olmadan ortaya çıkarın |
| İnceleme | Alet gerektirmeyen görev | Yazmadan önce X eylemlerini gözden geçirin |
| Hatalar | has_tool_failures |
Eksik araştırmayı durdurun |
Bu model araştırma, doğrulama ve raporlamaya uygundur. Model kararları gerektirmeyen deterministik işler için Python SDK veya doğrudan REST’i kullanın.
Önkoşullar
- Python 3.10’dan 3.13’e
- Bir TwexAPI API anahtarı
- CrewAI tarafından desteklenen bir LLM sağlayıcı anahtarı
- Yazma işlemleri için bir Twitter çerezi veya “auth_token”
Kurulum
CrewAI çekirdeği yerel bir MCP istemcisi içerir.
python -m pip install "crewai>=1.0" python-dotenv
Sırları kaynak kontrolü dışında saklayın.
export TWEXAPI_API_KEY="YOUR_API_KEY"
export OPENAI_API_KEY="YOUR_OPENAI_KEY"
Yazılı bir tweet arama ekibi oluşturun
Beklenen çıktıyla başlayın, ardından görevi oluşturun. CrewAI, Pydantic modeline göre son geçişi doğruluyor.
import os
from pathlib import Path
from typing import Literal
from crewai import Agent, Crew, Process, Task
from crewai.mcp import MCPServerHTTP
from pydantic import BaseModel
class TweetRow(BaseModel):
tweet_id: str
text: str
author_username: str | None = None
created_at: str | None = None
url: str | None = None
class TweetSearchHandoff(BaseModel):
query: str
route_used: str
tweets: list[TweetRow]
has_more: bool
next_cursor: str | None = None
pages_fetched: int
stop_reason: Literal["complete", "requested_limit", "cursor_stalled"]
twexapi_mcp = MCPServerHTTP(
url="https://api.twexapi.io/mcp",
headers={"x-api-key": os.environ["TWEXAPI_API_KEY"]},
streamable=True,
cache_tools_list=True,
)
researcher = Agent(
role="Twitter API Researcher",
goal="Return exact tweet records and resumable pagination state",
backstory=(
"You inspect Twitter conversations through TwexAPI MCP. "
"Call explore before twexapi_request. "
"You preserve source IDs and never invent missing fields."
),
llm="openai/gpt-4o",
mcps=[twexapi_mcp],
allow_delegation=False,
verbose=False,
)
search_task = Task(
description=(
"Use TwexAPI MCP to search 50 latest tweets about CrewAI Twitter MCP. "
"Call explore first. Use POST /twitter/advanced_search/page. "
"Preserve exact tweet IDs, created timestamps, and cursors. "
"Stop at the requested limit. Stop if a cursor repeats."
),
expected_output="A validated tweet search handoff with pagination state.",
agent=researcher,
output_pydantic=TweetSearchHandoff,
)
crew = Crew(
agents=[researcher],
tasks=[search_task],
process=Process.sequential,
verbose=False,
)
result = crew.kickoff()
if result.has_tool_failures:
raise RuntimeError("TwexAPI MCP tool failed. Inspect result.tool_failures.")
handoff = TweetSearchHandoff.model_validate(result.to_dict())
Path("twexapi-crewai-handoff.json").write_text(
handoff.model_dump_json(indent=2),
encoding="utf-8",
)
Her zaman has_tool_failuresı inceleyin. Eksik sonuçları hiçbir zaman yazma eylemlerine veya dışa aktarmalara aktarmayın.
Odaklanmış sorgularla tweet’leri arayın
| Niyet | Örnek sorgu |
|---|---|
| Çerçeve gönderileri | "CrewAI" MCP |
| Hesap zaman çizelgesi | from:crewAIInc since:2026-07-01 until:2026-08-01 |
| Hashtag arama | #crewai #agents lang:en |
| Yeniden paylaşımları hariç tut | "multi-agent workflow" -filter:retweets |
İzleme için ‘sortBy: En Son’ seçeneğini kullanın. Etkileşim sıralamalı araştırma için “En İyi”yi kullanın. ’Sonraki_imleç’i değiştirmeden iletin.
Rol bazlı bir araştırma ekibi oluşturun
TwexAPI MCP’ye yalnızca araştırmacıya erişim izni verin. Doğrulanmış görevini araç kullanmadan analistlere aktarın.
class TweetAnalysis(BaseModel):
query: str
analyzed_tweet_ids: list[str]
recurring_topics: list[str]
top_author_usernames: list[str]
next_cursor: str | None = None
analyst = Agent(
role="Tweet Conversation Analyst",
goal="Analyze only the supplied tweet rows",
backstory="You compare exact tweets without fetching extra records.",
llm="openai/gpt-4o",
allow_delegation=False,
)
analysis_task = Task(
description=(
"Analyze the supplied tweet rows. "
"Keep every analyzed tweet_id. Preserve the next_cursor."
),
expected_output="A typed topic analysis tied to source tweet IDs.",
agent=analyst,
context=[search_task],
output_pydantic=TweetAnalysis,
)
research_crew = Crew(
agents=[researcher, analyst],
tasks=[search_task, analysis_task],
process=Process.sequential,
)
Yalnızca uç nokta keşfini kullanıma sunma
Uç nokta keşfi için yalnızca “keşfet”i gösterin.
from crewai.mcp import MCPServerHTTP
from crewai.mcp.filters import create_static_tool_filter
discovery_mcp = MCPServerHTTP(
url="https://api.twexapi.io/mcp",
headers={"x-api-key": os.environ["TWEXAPI_API_KEY"]},
tool_filter=create_static_tool_filter(
allowed_tool_names=["explore"],
),
cache_tools_list=True,
)
‘Twexapi_request’ eklenmesi yetkili yürütmeyi etkinleştirir.
Twitter eylemlerini araştırma ekibinin dışında tutun
Otonom araştırma ekiplerine asla yazma izni vermeyin.
class TweetWritePlan(BaseModel):
tweet_content: str
reply_to_tweet_id: str | None = None
media_urls: list[str]
requires_human_confirmation: bool = True
planner = Agent(
role="Twitter Action Planner",
goal="Prepare one reviewable X action without executing it",
backstory="You preserve approved text, target IDs, and route names.",
llm="openai/gpt-4o",
tools=[],
allow_delegation=False,
)
plan_task = Task(
description="Prepare a tweet or reply plan from reviewed source tweets.",
expected_output="One typed action plan. Do not execute any X request.",
agent=planner,
output_pydantic=TweetWritePlan,
human_input=True,
)
Onaylandıktan sonra bir REST veya SDK isteği gönderin. Önce CLI --dry-run ile yazma yüklerini önizleyin.
Hataları ve takım arızalarını ele alın
| Durum | Anlam | CrewAI eylemi |
|---|---|---|
400 |
Eksik veya geçersiz parametreler | İsteği düzeltin; asla değiştirmeden tekrar denemeyin |
401 |
Kimlik doğrulama başarısız oldu | API anahtarını kontrol edin |
403 |
Erişim engellendi | Hesap işlemini durdurun ve talep edin |
429 |
Oran sınırı geçerlidir | Bekleyin, ardından imleci devam ettirin |
5xx |
Sunucu hatası | Kimlikleri değiştirmeden daha sonra yeniden deneyin |
Arızalardan sonra result.tool_failuresı inceleyin. ’429’dan sonra ’next_cursor’u ve tamamlanmış tweet kimliklerini koruyun.
Paket versiyonları
| Paket | Uyumlu aralık |
|---|---|
crewai |
>=1.0 |
pydantic |
>=2.7 |