deso-research
Research and analyze content across decentralized social networks using deso-ag.
deso-ag is a CLI tool that aggregates posts from Farcaster, Lens, Nostr, and Bluesky. It provides search, trending, term extraction, and channel browsing — with a compact output format designed specifically for AI agent consumption.
Prerequisites
Check Installation
CODEBLOCK0
If deso-ag is missing, install it:
CODEBLOCK1
API Keys (Optional)
deso-ag works without any keys — Lens, Nostr, and Bluesky trending all function keyless. For full functionality, these environment variables unlock additional networks:
| Variable | Unlocks | How to Get |
|---|
| INLINECODE1 | Farcaster search + trending | Free at neynar.com |
| INLINECODE2 |
Bluesky search | Your handle (e.g. user.bsky.social) |
|
BLUESKY_APP_PASSWORD | Bluesky search | bsky.app/settings/app-passwords |
Without a key, that network is silently skipped. Everything else works normally.
Check which networks are available before running commands:
CODEBLOCK2
Inform the user which networks will be included based on available keys.
Core Workflows
1. Search for Content
Use search to find posts about a topic. Always use --format compact for agent consumption.
CODEBLOCK3
2. Get Trending Content
Use trending to see what's popular right now.
CODEBLOCK4
3. Extract Discussion Terms
Use terms to discover the most-discussed topics, weighted by engagement.
CODEBLOCK5
4. Browse Farcaster Channels
CODEBLOCK6
Output Handling
Always use --format compact for search and trending commands. The compact format returns a single JSON object optimized for agent analysis:
CODEBLOCK7
The score field is pre-computed: likes + reposts×2 + replies. Use it for ranking.
For terms, use --format json which returns structured term frequency data.
Analysis Guidelines
After gathering data, synthesize findings into insights. Never just dump raw JSON to the user.
- 1. Summarize the landscape: How many posts found, across which networks, what timeframe
- Highlight top content: Surface the highest-engagement posts with author, source, and brief summary
- Identify themes: Group related posts and extract common threads
- Provide engagement context: What content resonates most and why
- Link to originals: Include post URLs so the user can engage directly
Only compare activity across networks if the user specifically asks for a cross-network comparison.
Example Analysis Output
CODEBLOCK8
Quick Command Reference
| Command | Purpose | Default Sort | Default Format |
|---|
| INLINECODE13 | Find posts about a topic | relevance | markdown |
| INLINECODE14 |
Popular content right now | engagement | summary |
|
terms | Top discussion terms | — | — |
|
channels | Browse Farcaster channels | — | — |
Common Options
| Option | Short | Values | Default |
|---|
| INLINECODE17 | INLINECODE18 | farcaster,lens,nostr,bluesky | all |
| INLINECODE19 |
-t | 24h, 48h, week | 24h |
|
--format |
-f | json, markdown, summary, compact | varies |
|
--limit |
-l | any positive integer | 25 |
|
--sort |
-o | engagement, recent, relevance | varies |
|
--channel |
-c | channel ID (Farcaster only) | none |
|
--top |
-n | any positive integer (terms only) | 3 |
For the full command reference with output schemas and library usage, see references/command-reference.md.
Error Handling
- - If deso-ag is not found, install it: INLINECODE32
- If no results return for a network, that network's API key is likely missing — inform the user
- Nostr can be slow or inconsistent — retry once if it times out
- If you hit rate limit errors, let the user know and suggest they run their own infrastructure for heavy usage
deso-research
使用deso-ag研究和分析去中心化社交网络上的内容。
deso-ag 是一个命令行工具,用于聚合来自 Farcaster、Lens、Nostr 和 Bluesky 的帖子。它提供搜索、趋势、术语提取和频道浏览功能,并采用专为 AI 代理消费设计的 compact 输出格式。
前置条件
检查安装
bash
which deso-ag || echo deso-ag 未找到 — 请使用以下命令安装: npm install -g deso-ag
如果 deso-ag 缺失,请安装它:
bash
npm install -g deso-ag
API 密钥(可选)
deso-ag 无需任何密钥即可工作——Lens、Nostr 和 Bluesky 的趋势功能均无需密钥即可运行。如需完整功能,以下环境变量可解锁更多网络:
| 变量 | 解锁功能 | 获取方式 |
|---|
| NEYNARAPIKEY | Farcaster 搜索 + 趋势 | 在 neynar.com 免费获取 |
| BLUESKY_IDENTIFIER |
Bluesky 搜索 | 您的用户名(例如 user.bsky.social) |
| BLUESKY
APPPASSWORD | Bluesky 搜索 | bsky.app/settings/app-passwords |
如果没有密钥,该网络将被静默跳过。其他所有功能正常运行。
在运行命令前检查哪些网络可用:
bash
echo Neynar: ${NEYNARAPIKEY:+已设置}
echo Bluesky ID: ${BLUESKY_IDENTIFIER:+已设置}
echo Bluesky PW: ${BLUESKYAPPPASSWORD:+已设置}
根据可用密钥告知用户将包含哪些网络。
核心工作流
1. 搜索内容
使用 search 查找关于某个主题的帖子。始终使用 --format compact 格式供代理消费。
bash
在所有可用网络中基本搜索
deso-ag search ethereum --format compact --limit 20
多词 AND 搜索(所有词必须匹配)
deso-ag search AI crypto --format compact --limit 15
指定网络搜索
deso-ag search NFT --sources farcaster --format compact
指定频道(仅 Farcaster)
deso-ag search --channel dev --sources farcaster --format compact
按最新排序获取最新讨论
deso-ag search base chain --sort recent --format compact --limit 10
2. 获取趋势内容
使用 trending 查看当前热门内容。
bash
所有网络趋势
deso-ag trending --format compact --limit 20
指定网络趋势
deso-ag trending --sources farcaster,lens --format compact
过去一周的趋势
deso-ag trending --timeframe week --format compact
3. 提取讨论术语
使用 terms 发现讨论最多的主题,按参与度加权。
bash
每个平台前 3 个术语,最近 24 小时
deso-ag terms --format json
本周 Farcaster 前 5 个术语
deso-ag terms --top 5 --sources farcaster --timeframe week --format json
指定网络中的术语
deso-ag terms --top 5 --sources farcaster,nostr --format json
4. 浏览 Farcaster 频道
bash
deso-ag channels --limit 20
输出处理
始终对搜索和趋势命令使用 --format compact。compact 格式返回一个针对代理分析优化的单一 JSON 对象:
json
{
meta: {
query: ...,
totalPosts: 42,
sources: [{name: farcaster, count: 15}, ...],
timeframe: 24h,
fetchedAt: 2025-01-01T00:00:00.000Z
},
posts: [
{
id: ...,
source: farcaster,
author: username,
content: 完整未截断内容...,
timestamp: 2025-01-01T00:00:00.000Z,
url: https://...,
score: 523,
engagement: {likes: 400, reposts: 50, replies: 23},
tags: []
}
]
}
score 字段是预计算的:点赞数 + 转发数×2 + 回复数。可用于排序。
对于 terms,使用 --format json,它会返回结构化的术语频率数据。
分析指南
收集数据后,将发现综合为洞察。切勿直接将原始 JSON 转储给用户。
- 1. 总结概况: 找到多少帖子,来自哪些网络,什么时间范围
- 突出顶级内容: 展示参与度最高的帖子,包含作者、来源和简要总结
- 识别主题: 对相关帖子进行分组并提取共同线索
- 提供参与度背景: 哪些内容最受关注及其原因
- 链接到原文: 包含帖子 URL,方便用户直接参与
仅当用户明确要求跨网络比较时,才比较不同网络的活动。
分析输出示例
在过去 24 小时内,从 Farcaster(15 条)、Lens(12 条)和 Nostr(15 条)中提取了 42 条关于AI 代理的帖子。
主导讨论围绕无需人工批准即可在链上交易的自主代理展开。@dwr 的帖子(评分:523)通过演示一个基于实时收益数据自主跨 DeFi 协议分配资金的代理引发了讨论。回复存在分歧——构建者对可组合性感到兴奋(代理通过链上消息相互调用),而其他人则对代理做出错误交易时的责任问题表示担忧。@jessepollak 回应指出 Base 的账户抽象工作可作为潜在的安全防护层。
第二个讨论线索围绕代理间通信标准展开。几条帖子引用了一份链上代理间消息传递协议的草案规范。Lens 上的 @stani(评分:312)认为,如果没有共享标准,我们将陷入无法互操作的围墙代理生态系统——这与早期社交媒体 API 的情况类似。回复中存在质疑,认为考虑到该领域发展速度之快,标准化是否为时过早。
较小但值得注意: Nostr 上有 3-4 条帖子在讨论隐私保护代理,这些代理使用零知识证明来验证操作,同时不透露代理的策略或持仓。尚处于早期阶段,但值得关注。
此话题需关注的关键人物:
- - @dwr(Farcaster)—— 正在积极构建和演示代理基础设施
- @jessepollak(Farcaster)—— 将其与 Base 生态系统工作联系起来
- @stani(Lens)—— 构建标准/互操作性讨论框架
来源帖子:
快速命令参考
| 命令 | 用途 | 默认排序 | 默认格式 |
|---|
| search [query] | 查找关于某个主题的帖子 | 相关性 | markdown |
| trending |
当前热门内容 | 参与度 | summary |
| terms | 热门讨论术语 | — | — |
| channels | 浏览 Farcaster 频道 | — | — |
常用选项
| 选项 | 简写 | 可选值 | 默认值 |
|---|
| --sources | -s | farcaster,lens,nostr,bluesky | 全部 |
| --timeframe |
-t | 24h, 48h, week | 24h |
| --format | -f | json, markdown, summary, compact | 因命令而异 |
| --limit | -l | 任意正整数 | 25 |
| --sort | -o | engagement, recent, relevance | 因命令而异 |
| --channel | -c | 频道 ID(仅 Farcaster) | 无 |
| --top | -n | 任意正整数(仅 terms) | 3 |
有关包含输出模式和库用法的完整命令参考,请参阅 references/command-reference.md。
错误处理
- - 如果未找到 deso-ag,请安装它:npm install -g deso-ag
- 如果某个网络没有返回结果,很可能缺少该网络的 API 密钥——请告知用户
- Nostr 可能较慢或不