{
  "schemaVersion": "1.0",
  "item": {
    "slug": "deso-research",
    "name": "deso-research",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/mtple/deso-research",
    "canonicalUrl": "https://clawhub.ai/mtple/deso-research",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/deso-research",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=deso-research",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "references/command-reference (1).md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-07T17:22:31.273Z",
      "expiresAt": "2026-05-14T17:22:31.273Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
        "contentDisposition": "attachment; filename=\"afrexai-annual-report-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/deso-research"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/deso-research",
    "agentPageUrl": "https://openagent3.xyz/skills/deso-research/agent",
    "manifestUrl": "https://openagent3.xyz/skills/deso-research/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/deso-research/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "deso-research",
        "body": "Research and analyze content across decentralized social networks using 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."
      },
      {
        "title": "Check Installation",
        "body": "which deso-ag || echo \"deso-ag not found — install with: npm install -g deso-ag\"\n\nIf deso-ag is missing, install it:\n\nnpm install -g deso-ag"
      },
      {
        "title": "API Keys (Optional)",
        "body": "deso-ag works without any keys — Lens, Nostr, and Bluesky trending all function keyless. For full functionality, these environment variables unlock additional networks:\n\nVariableUnlocksHow to GetNEYNAR_API_KEYFarcaster search + trendingFree at neynar.comBLUESKY_IDENTIFIERBluesky searchYour handle (e.g. user.bsky.social)BLUESKY_APP_PASSWORDBluesky searchbsky.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\necho \"Neynar: ${NEYNAR_API_KEY:+set}\"\necho \"Bluesky ID: ${BLUESKY_IDENTIFIER:+set}\"\necho \"Bluesky PW: ${BLUESKY_APP_PASSWORD:+set}\"\n\nInform the user which networks will be included based on available keys."
      },
      {
        "title": "1. Search for Content",
        "body": "Use search to find posts about a topic. Always use --format compact for agent consumption.\n\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"
      },
      {
        "title": "2. Get Trending Content",
        "body": "Use trending to see what's popular right now.\n\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"
      },
      {
        "title": "3. Extract Discussion Terms",
        "body": "Use terms to discover the most-discussed topics, weighted by engagement.\n\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"
      },
      {
        "title": "4. Browse Farcaster Channels",
        "body": "deso-ag channels --limit 20"
      },
      {
        "title": "Output Handling",
        "body": "Always use --format compact for search and trending commands. The compact format returns a single JSON object optimized for agent analysis:\n\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\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."
      },
      {
        "title": "Analysis Guidelines",
        "body": "After gathering data, synthesize findings into insights. Never just dump raw JSON to the user.\n\nSummarize the landscape: How many posts found, across which networks, what timeframe\nHighlight top content: Surface the highest-engagement posts with author, source, and brief summary\nIdentify themes: Group related posts and extract common threads\nProvide engagement context: What content resonates most and why\nLink 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."
      },
      {
        "title": "Example Analysis Output",
        "body": "Pulled 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"
      },
      {
        "title": "Quick Command Reference",
        "body": "CommandPurposeDefault SortDefault Formatsearch [query]Find posts about a topicrelevancemarkdowntrendingPopular content right nowengagementsummarytermsTop discussion terms——channelsBrowse Farcaster channels——"
      },
      {
        "title": "Common Options",
        "body": "OptionShortValuesDefault--sources-sfarcaster,lens,nostr,blueskyall--timeframe-t24h, 48h, week24h--format-fjson, markdown, summary, compactvaries--limit-lany positive integer25--sort-oengagement, recent, relevancevaries--channel-cchannel ID (Farcaster only)none--top-nany positive integer (terms only)3\n\nFor the full command reference with output schemas and library usage, see references/command-reference.md."
      },
      {
        "title": "Error Handling",
        "body": "If deso-ag is not found, install it: npm install -g deso-ag\nIf no results return for a network, that network's API key is likely missing — inform the user\nNostr can be slow or inconsistent — retry once if it times out\nIf you hit rate limit errors, let the user know and suggest they run their own infrastructure for heavy usage"
      }
    ],
    "body": "deso-research\n\nResearch and analyze content across decentralized social networks using 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\nPrerequisites\nCheck Installation\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\nnpm install -g deso-ag\n\nAPI 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\nVariable\tUnlocks\tHow to Get\nNEYNAR_API_KEY\tFarcaster search + trending\tFree at neynar.com\nBLUESKY_IDENTIFIER\tBluesky search\tYour handle (e.g. user.bsky.social)\nBLUESKY_APP_PASSWORD\tBluesky search\tbsky.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\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\nCore Workflows\n1. Search for Content\n\nUse search to find posts about a topic. Always use --format compact for agent consumption.\n\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\n2. Get Trending Content\n\nUse trending to see what's popular right now.\n\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\n3. Extract Discussion Terms\n\nUse terms to discover the most-discussed topics, weighted by engagement.\n\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\n4. Browse Farcaster Channels\ndeso-ag channels --limit 20\n\nOutput Handling\n\nAlways use --format compact for search and trending commands. The compact format returns a single JSON object optimized for agent analysis:\n\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\nAnalysis Guidelines\n\nAfter gathering data, synthesize findings into insights. Never just dump raw JSON to the user.\n\nSummarize the landscape: How many posts found, across which networks, what timeframe\nHighlight top content: Surface the highest-engagement posts with author, source, and brief summary\nIdentify themes: Group related posts and extract common threads\nProvide engagement context: What content resonates most and why\nLink 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\nExample Analysis Output\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\nQuick Command Reference\nCommand\tPurpose\tDefault Sort\tDefault Format\nsearch [query]\tFind posts about a topic\trelevance\tmarkdown\ntrending\tPopular content right now\tengagement\tsummary\nterms\tTop discussion terms\t—\t—\nchannels\tBrowse Farcaster channels\t—\t—\nCommon Options\nOption\tShort\tValues\tDefault\n--sources\t-s\tfarcaster,lens,nostr,bluesky\tall\n--timeframe\t-t\t24h, 48h, week\t24h\n--format\t-f\tjson, markdown, summary, compact\tvaries\n--limit\t-l\tany positive integer\t25\n--sort\t-o\tengagement, recent, relevance\tvaries\n--channel\t-c\tchannel ID (Farcaster only)\tnone\n--top\t-n\tany positive integer (terms only)\t3\n\nFor the full command reference with output schemas and library usage, see references/command-reference.md.\n\nError Handling\nIf deso-ag is not found, install it: npm install -g deso-ag\nIf no results return for a network, that network's API key is likely missing — inform the user\nNostr can be slow or inconsistent — retry once if it times out\nIf you hit rate limit errors, let the user know and suggest they run their own infrastructure for heavy usage"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/mtple/deso-research",
    "publisherUrl": "https://clawhub.ai/mtple/deso-research",
    "owner": "mtple",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/deso-research",
    "downloadUrl": "https://openagent3.xyz/downloads/deso-research",
    "agentUrl": "https://openagent3.xyz/skills/deso-research/agent",
    "manifestUrl": "https://openagent3.xyz/skills/deso-research/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/deso-research/agent.md"
  }
}