{"skill":{"slug":"deso-research","displayName":"deso-research","summary":"Research and analyze content across decentralized social networks (Farcaster, Lens, Nostr, Bluesky) using the deso-ag CLI tool. Use this skill when users want to research topics on decentralized social platforms, analyze trending content, extract discussion terms, browse Farcaster channels, or compare engagement across networks. Trigger on phrases like \"research X on Farcaster\", \"what's trending on Lens\", \"analyze [topic] across deso networks\", \"search deso for [topic]\", \"extract trending terms\", \"browse Farcaster channels\", \"what are people saying about X on Farcaster/Lens/Nostr/Bluesky\", or any query about decentralized social media content. Make sure to use this skill for any decentralized social research tasks, even if the user just says \"check Farcaster\" or \"look up [topic] on Lens\".","description":"---\nname: deso-research\ndescription: Research and analyze content across decentralized social networks (Farcaster, Lens, Nostr, Bluesky) using the deso-ag CLI tool. Use this skill when users want to research topics on decentralized social platforms, analyze trending content, extract discussion terms, browse Farcaster channels, or compare engagement across networks. Trigger on phrases like \"research X on Farcaster\", \"what's trending on Lens\", \"analyze [topic] across deso networks\", \"search deso for [topic]\", \"extract trending terms\", \"browse Farcaster channels\", \"what are people saying about X on Farcaster/Lens/Nostr/Bluesky\", or any query about decentralized social media content. Make sure to use this skill for any decentralized social research tasks, even if the user just says \"check Farcaster\" or \"look up [topic] on Lens\".\nmetadata:\n  openclaw:\n    emoji: \"🔍\"\n    requires:\n      bins:\n        - deso-ag\n    install:\n      - id: npm\n        kind: npm\n        package: deso-ag\n        global: true\n        bins:\n          - deso-ag\n        label: \"Install deso-ag CLI (npm)\"\n---\n\n# deso-research\n\nResearch and analyze content across decentralized social networks using [deso-ag](https://www.npmjs.com/package/deso-ag).\n\ndeso-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.\n\n## Prerequisites\n\n### Check Installation\n\n```bash\nwhich deso-ag || echo \"deso-ag not found — install with: npm install -g deso-ag\"\n```\n\nIf deso-ag is missing, install it:\n\n```bash\nnpm install -g deso-ag\n```\n\n### API Keys (Optional)\n\ndeso-ag works without any keys — Lens, Nostr, and Bluesky trending all function keyless. For full functionality, these environment variables unlock additional networks:\n\n| Variable | Unlocks | How to Get |\n|----------|---------|------------|\n| `NEYNAR_API_KEY` | Farcaster search + trending | Free at neynar.com |\n| `BLUESKY_IDENTIFIER` | Bluesky search | Your handle (e.g. user.bsky.social) |\n| `BLUESKY_APP_PASSWORD` | Bluesky search | bsky.app/settings/app-passwords |\n\nWithout a key, that network is silently skipped. Everything else works normally.\n\nCheck which networks are available before running commands:\n\n```bash\necho \"Neynar: ${NEYNAR_API_KEY:+set}\"\necho \"Bluesky ID: ${BLUESKY_IDENTIFIER:+set}\"\necho \"Bluesky PW: ${BLUESKY_APP_PASSWORD:+set}\"\n```\n\nInform the user which networks will be included based on available keys.\n\n## Core Workflows\n\n### 1. Search for Content\n\nUse `search` to find posts about a topic. Always use `--format compact` for agent consumption.\n\n```bash\n# Basic search across all available networks\ndeso-ag search \"ethereum\" --format compact --limit 20\n\n# Multi-word AND search (all terms must match)\ndeso-ag search \"AI crypto\" --format compact --limit 15\n\n# Network-specific search\ndeso-ag search \"NFT\" --sources farcaster --format compact\n\n# Channel-specific (Farcaster only)\ndeso-ag search --channel dev --sources farcaster --format compact\n\n# Sort by recency for latest discussions\ndeso-ag search \"base chain\" --sort recent --format compact --limit 10\n```\n\n### 2. Get Trending Content\n\nUse `trending` to see what's popular right now.\n\n```bash\n# Trending across all networks\ndeso-ag trending --format compact --limit 20\n\n# Trending on specific networks\ndeso-ag trending --sources farcaster,lens --format compact\n\n# Trending over the past week\ndeso-ag trending --timeframe week --format compact\n```\n\n### 3. Extract Discussion Terms\n\nUse `terms` to discover the most-discussed topics, weighted by engagement.\n\n```bash\n# Top 3 terms per platform, last 24h\ndeso-ag terms --format json\n\n# Top 5 terms from Farcaster this week\ndeso-ag terms --top 5 --sources farcaster --timeframe week --format json\n\n# Terms across specific networks\ndeso-ag terms --top 5 --sources farcaster,nostr --format json\n```\n\n### 4. Browse Farcaster Channels\n\n```bash\ndeso-ag channels --limit 20\n```\n\n## Output Handling\n\n**Always use `--format compact`** for search and trending commands. The compact format returns a single JSON object optimized for agent analysis:\n\n```json\n{\n  \"meta\": {\n    \"query\": \"...\",\n    \"totalPosts\": 42,\n    \"sources\": [{\"name\": \"farcaster\", \"count\": 15}, ...],\n    \"timeframe\": \"24h\",\n    \"fetchedAt\": \"2025-01-01T00:00:00.000Z\"\n  },\n  \"posts\": [\n    {\n      \"id\": \"...\",\n      \"source\": \"farcaster\",\n      \"author\": \"username\",\n      \"content\": \"full untruncated content...\",\n      \"timestamp\": \"2025-01-01T00:00:00.000Z\",\n      \"url\": \"https://...\",\n      \"score\": 523,\n      \"engagement\": {\"likes\": 400, \"reposts\": 50, \"replies\": 23},\n      \"tags\": []\n    }\n  ]\n}\n```\n\nThe `score` field is pre-computed: `likes + reposts×2 + replies`. Use it for ranking.\n\nFor `terms`, use `--format json` which returns structured term frequency data.\n\n## Analysis Guidelines\n\nAfter gathering data, synthesize findings into insights. Never just dump raw JSON to the user.\n\n1. **Summarize the landscape:** How many posts found, across which networks, what timeframe\n2. **Highlight top content:** Surface the highest-engagement posts with author, source, and brief summary\n3. **Identify themes:** Group related posts and extract common threads\n4. **Provide engagement context:** What content resonates most and why\n5. **Link to originals:** Include post URLs so the user can engage directly\n\nOnly compare activity across networks if the user specifically asks for a cross-network comparison.\n\n### Example Analysis Output\n\n```\nPulled 42 posts about \"AI agents\" from Farcaster (15), Lens (12), and Nostr (15) over the last 24h.\n\n**The dominant conversation** is around autonomous agents that can transact onchain\nwithout human approval. @dwr's post (score: 523) kicked this off by demoing an agent\nthat autonomously allocated funds across DeFi protocols based on real-time yield data.\nThe replies are split — builders are excited about composability (agents calling other\nagents via onchain messages), while others are raising concerns about liability when\nan agent makes a bad trade. @jessepollak responded pointing to Base's account\nabstraction work as a potential guardrail layer.\n\n**A second thread** is forming around agent-to-agent communication standards. Several\nposts reference a draft spec for a messaging protocol between onchain agents. @stani\non Lens (score: 312) argued that without a shared standard, we'll end up with walled\nagent ecosystems that can't interoperate — drawing a parallel to early social media\nAPIs. There's skepticism in the replies about whether standardization is premature\ngiven how fast the space is moving.\n\n**Smaller but notable:** 3-4 posts on Nostr are discussing privacy-preserving agents\nthat use zk proofs to verify actions without revealing the agent's strategy or\nholdings. Early stage but worth watching.\n\n**Key voices to follow on this topic:**\n- @dwr (Farcaster) — actively building and demoing agent infra\n- @jessepollak (Farcaster) — connecting this to Base ecosystem work\n- @stani (Lens) — framing the standards/interop conversation\n\n**Source posts:**\n- [dwr's agent demo](https://...) — score: 523\n- [stani on agent standards](https://...) — score: 312\n- [jessepollak on account abstraction](https://...) — score: 287\n```\n\n## Quick Command Reference\n\n| Command | Purpose | Default Sort | Default Format |\n|---------|---------|-------------|----------------|\n| `search [query]` | Find posts about a topic | relevance | markdown |\n| `trending` | Popular content right now | engagement | summary |\n| `terms` | Top discussion terms | — | — |\n| `channels` | Browse Farcaster channels | — | — |\n\n### Common Options\n\n| Option | Short | Values | Default |\n|--------|-------|--------|---------|\n| `--sources` | `-s` | farcaster,lens,nostr,bluesky | all |\n| `--timeframe` | `-t` | 24h, 48h, week | 24h |\n| `--format` | `-f` | json, markdown, summary, compact | varies |\n| `--limit` | `-l` | any positive integer | 25 |\n| `--sort` | `-o` | engagement, recent, relevance | varies |\n| `--channel` | `-c` | channel ID (Farcaster only) | none |\n| `--top` | `-n` | any positive integer (terms only) | 3 |\n\nFor the full command reference with output schemas and library usage, see `references/command-reference.md`.\n\n## Error Handling\n\n- If deso-ag is not found, install it: `npm install -g deso-ag`\n- If no results return for a network, that network's API key is likely missing — inform the user\n- Nostr can be slow or inconsistent — retry once if it times out\n- If you hit rate limit errors, let the user know and suggest they run their own infrastructure for heavy usage","tags":{"latest":"1.0.0"},"stats":{"comments":0,"downloads":1397,"installsAllTime":0,"installsCurrent":0,"stars":2,"versions":1},"createdAt":1770761298565,"updatedAt":1778989672824},"latestVersion":{"version":"1.0.0","createdAt":1770761298565,"changelog":"Initial release","license":null},"metadata":{"setup":[],"os":null,"systems":null},"owner":{"handle":"mtple","userId":"s17dyqnhseeq5a68sjby4cywnh85vyy4","displayName":"Matt Lee","image":"https://avatars.githubusercontent.com/u/73853716?v=4"},"moderation":null}