通过 Macrocosmos SN13 API,按关键词、用户名、日期范围及过滤器获取 X(Twitter)和 Reddit 的实时社交媒体数据,并提供互动指标。
Macrocosmos SN13 API - Social Media Data Skill.是一项面向实际任务的技能,主要用于Fetch 实时社交媒体数据来自X(Twitter)和Reddit,通过关键词,用户名,日期范围,以及带有参与度量的过滤器通过Macrocos。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;
涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
通过 Macrocosmos SN13 API(运行于 Bittensor 网络)按关键词、用户名、日期范围及多种筛选条件,实时获取 X(Twitter)和 Reddit 的社交媒体数据,并附带互动指标(engagement metrics)。
| 变量 | 是否必需 | 类型 | 说明 |
|---|---|---|---|
MC_API |
是 | secret |
Macrocosmos API 密钥。所有 API 请求均需提供。可免费获取:https://app.macrocosmos.ai/account?tab=api-keys |
配置说明:必须将 MC_API 设置为环境变量。该密钥在 REST 调用中作为 Bearer Token 放入 Authorization 请求头;或直接传入 Python SDK 客户端。
POST https://constellation.api.cloud.macrocosmos.ai/sn13.v1.Sn13Service/OnDemandData
Content-Type: application/json Authorization: Bearer
{
"source": "X",
"usernames": ["@elonmusk"],
"keywords": ["AI", "bittensor"],
"start_date": "2026-01-01",
"end_date": "2026-02-10",
"limit": 10,
"keyword_mode": "any"
}
| 参数 | 类型 | 是否必需 | 说明 |
|---|---|---|---|
source |
string | 是 | "X" 或 "REDDIT"(区分大小写) |
usernames |
array | 否 | 最多支持 5 个用户名。@ 符号为可选。仅适用于 X(Reddit 不支持) |
keywords |
array | 否 | 最多支持 5 个关键词或话题标签(hashtag)。Reddit 场景下请使用子版块格式:"r/subreddit" |
start_date |
string | 否 | YYYY-MM-DD 格式或 ISO 时间格式。默认值为 24 小时前 |
end_date |
string | 否 | YYYY-MM-DD 格式或 ISO 时间格式。默认值为当前时间 |
limit |
int | 否 | 返回结果数量:1–1000。默认值为 10 |
keyword_mode |
string | 否 | "any"(默认)表示匹配任意一个关键词;"all" 表示必须同时匹配全部关键词 |
{
"data": [
{
"datetime": "2026-02-10T17:30:58Z",
"source": "x",
"text": "Tweet content here",
"uri": "https://x.com/username/status/123456",
"user": {
"username": "example_user",
"display_name": "Example User",
"followers_count": 1500,
"following_count": 300,
"user_description": "Bio text",
"user_blue_verified": true,
"profile_image_url": "https://pbs.twimg.com/..."
},
"tweet": {
"id": "123456",
"like_count": 42,
"retweet_count": 10,
"reply_count": 5,
"quote_count": 2,
"view_count": 5000,
"bookmark_count": 3,
"hashtags": ["#AI", "#bittensor"],
"language": "en",
"is_reply": false,
"is_quote": false,
"conversation_id": "123456"
}
}
]
}
curl -s -X POST https://constellation.api.cloud.macrocosmos.ai/sn13.v1.Sn13Service/OnDemandData
-H "Content-Type: application/json"
-H "Authorization: Bearer YOUR_API_KEY"
-d '{
"source": "X",
"keywords": ["bittensor"],
"start_date": "2026-01-01",
"limit": 10
}'
curl -s -X POST https://constellation.api.cloud.macrocosmos.ai/sn13.v1.Sn13Service/OnDemandData
-H "Content-Type: application/json"
-H "Authorization: Bearer YOUR_API_KEY"
-d '{
"source": "X",
"usernames": ["@MacrocosmosAI"],
"start_date": "2026-01-01",
"limit": 10
}'
curl -s -X POST https://constellation.api.cloud.macrocosmos.ai/sn13.v1.Sn13Service/OnDemandData
-H "Content-Type: application/json"
-H "Authorization: Bearer YOUR_API_KEY"
-d '{
"source": "X",
"keywords": ["chutes", "bittensor"],
"keyword_mode": "all",
"start_date": "2026-01-01",
"limit": 20
}'
curl -s -X POST https://constellation.api.cloud.macrocosmos.ai/sn13.v1.Sn13Service/OnDemandData
-H "Content-Type: application/json"
-H "Authorization: Bearer YOUR_API_KEY"
-d '{
"source": "REDDIT",
"keywords": ["r/MachineLearning", "transformers"],
"start_date": "2026-02-01",
"limit": 50
}'
curl -s -X POST https://constellation.api.cloud.macrocosmos.ai/sn13.v1.Sn13Service/OnDemandData
-H "Content-Type: application/json"
-H "Authorization: Bearer YOUR_API_KEY"
-d '{
"source": "X",
"usernames": ["@opentensor"],
"keywords": ["subnet"],
"start_date": "2026-01-01",
"limit": 20
}'
macrocosmos SDKimport asyncio
import macrocosmos as mc
async def search_tweets():
client = mc.AsyncSn13Client(api_key="YOUR_API_KEY")
response = await client.sn13.OnDemandData(
source="X",
keywords=["bittensor"],
usernames=[],
start_date="2026-01-01",
end_date=None,
limit=10,
keyword_mode="any",
)
if hasattr(response, "model_dump"):
data = response.model_dump()
for tweet in data["data"]:
print(f"@{tweet['user']['username']}: {tweet['text'][:100]}")
print(f" Likes: {tweet['tweet']['like_count']} | Views: {tweet['tweet']['view_count']}")
asyncio.run(search_tweets())
requests(REST 方式)import requests
url = "https://constellation.api.cloud.macrocosmos.ai/sn13.v1.Sn13Service/OnDemandData"
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_KEY"
}
payload = {
"source": "X",
"keywords": ["bittensor"],
"start_date": "2026-01-01",
"limit": 10
}
response = requests.post(url, json=payload, headers=headers)
data = response.json()
for tweet in data["data"]:
print(f"@{tweet['user']['username']}: {tweet['text'][:100]}")
start_date 设得更早(例如数周或数月前),可显著提升结果召回率keyword_mode: "all":适合查找两个主题的交集(例如 “chutes” AND “bittensor”)DEADLINE_EXCEEDED)。建议显式设置较早的 start_date 缓解该问题start_date:默认仅检索最近 24 小时数据,易遗漏信息;建议始终显式设置start_date —— 不要依赖默认的 24 小时窗口。用户查询建议至少回溯 7 天start_date(建议回溯数周至数月)keyword_mode: "all"(例如 “bittensor” + “chutes”)view_count、like_count、retweet_count 等字段对结果进行相关性排序is_reply 和 is_quote 字段 —— 根据实际需求过滤原始推文(original tweet)、回复(reply)或引用推文(quote)当所需数据量超过 1000 条时,请使用 Gravity 系列接口:
POST /gravity.v1.GravityService/CreateGravityTask
{
"gravity_tasks": [
{"platform": "x", "topic": "#bittensor", "keyword": "dTAO"}
],
"name": "Bittensor dTAO Collection"
}
注意: X 平台的话题(topic)必须以 # 或 $ 开头;Reddit 平台则使用子版块格式(如 r/xxx)。
POST /gravity.v1.GravityService/GetGravityTasks
{
"gravity_task_id": "multicrawler-xxxx-xxxx",
"include_crawlers": true
}
POST /gravity.v1.GravityService/BuildDataset
{
"crawler_id": "crawler-0-multicrawler-xxxx",
"max_rows": 10000
}
警告:调用此接口将永久停止对应爬虫任务。
POST /gravity.v1.GravityService/GetDataset
{
"dataset_id": "dataset-xxxx-xxxx"
}
任务完成后,返回 Parquet 文件的下载 URL。
快速查询(< 1000 条结果): OnDemandData → 即时返回结果 大规模采集(7 日周期爬取): CreateGravityTask → GetGravityTasks(轮询监控)→ BuildDataset → GetDataset(下载)
| 错误 | 原因 | 解决方法 |
|---|---|---|
401 Unauthorized |
缺失或无效的 API 密钥 | 检查 Authorization: Bearer 请求头是否正确设置 |
500 Internal Server Error |
服务端异常(常见于 gRPC 认证失败) | 确认 API 密钥有效性并重试 |
DEADLINE_EXCEEDED |
查询超时 —— 矿工节点无法在时限内完成请求 | 扩大日期范围,或改用关键词搜索 |
空的 data 数组 |
无匹配结果 | 放宽搜索关键词或扩大日期范围 |
相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.1万人学习
共49课时 | 82.6万人学习
最新文章