{
  "schemaVersion": "1.0",
  "item": {
    "slug": "trawl",
    "name": "Trawl",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/audsmith28/trawl",
    "canonicalUrl": "https://clawhub.ai/audsmith28/trawl",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/trawl",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=trawl",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "config.example.json",
      "references/adapter-interface.md",
      "references/moltbook-api.md",
      "scripts/leads.sh",
      "scripts/qualify.sh"
    ],
    "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/trawl"
    },
    "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/trawl",
    "agentPageUrl": "https://openagent3.xyz/skills/trawl/agent",
    "manifestUrl": "https://openagent3.xyz/skills/trawl/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/trawl/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": "Trawl — Autonomous Agent Lead Gen",
        "body": "You sleep. Your agent networks.\n\nTrawl sweeps agent social networks (MoltBook) for business-relevant connections using semantic search. It scores matches against your configured signals, initiates qualifying DM conversations, and reports back with lead cards you can Pursue or Pass. Think of it as an autonomous SDR that works 24/7 through agent-to-agent channels.\n\nWhat makes it different: Trawl doesn't just search — it runs a full lead pipeline. Discover → Profile → Score → DM → Qualify → Report. Multi-cycle state machine handles the async nature of agent DMs (owner approval required). Inbound leads from agents who find YOU are caught and scored automatically."
      },
      {
        "title": "Setup",
        "body": "Run scripts/setup.sh to initialize config and data directories\nEdit ~/.config/trawl/config.json with identity, signals, and source credentials\nStore MoltBook API key in ~/.clawdbot/secrets.env as MOLTBOOK_API_KEY\nTest with: scripts/sweep.sh --dry-run"
      },
      {
        "title": "Config",
        "body": "Config lives at ~/.config/trawl/config.json. See config.example.json for full schema.\n\nKey sections:\n\nidentity — Who you are (name, headline, skills, offering)\nsignals — What you're hunting for (semantic queries + categories)\nsources.moltbook — MoltBook settings (submolts, enabled flag)\nscoring — Confidence thresholds for discovery and qualification\nqualify — DM strategy, intro template, qualifying questions, auto_approve_inbound\nreporting — Channel, frequency, format\n\nSignals have category labels for multi-profile hunting (e.g., \"consulting\", \"sales\", \"recruiting\")."
      },
      {
        "title": "Scripts",
        "body": "ScriptPurposescripts/setup.shInitialize config and data directoriesscripts/sweep.shSearch → Score → Handle inbound → DM → Reportscripts/qualify.shAdvance DM conversations, ask qualifying questionsscripts/report.shFormat lead report (supports --category filter)scripts/leads.shManage leads: list, get, decide, archive, stats, reset\n\nAll scripts support --dry-run for testing with mock data (no API key needed)."
      },
      {
        "title": "Sweep Cycle",
        "body": "Run scripts/sweep.sh on schedule (cron every 6h recommended). The sweep:\n\nRuns semantic search for each configured signal\nDeduplicates against seen-posts index (no repeat processing)\nFetches + scores agent profiles (similarity + bio keywords + karma + activity)\nChecks for inbound DM requests (agents contacting YOU)\nInitiates outbound DMs for high-scoring leads\nGenerates report JSON"
      },
      {
        "title": "Qualify Cycle",
        "body": "Run scripts/qualify.sh after each sweep (or independently). It:\n\nShows inbound leads awaiting your approval\nChecks outbound DM requests for approvals (marks stale after 48h)\nAsks qualifying questions in active conversations (1 per cycle, max 3 total)\nGraduates leads to QUALIFIED when all questions asked\nAlerts you when qualified leads need your review"
      },
      {
        "title": "Lead States",
        "body": "DISCOVERED → PROFILE_SCORED → DM_REQUESTED → QUALIFYING → QUALIFIED → REPORTED\n                                                                         ↓\n                                                               human: PURSUE or PASS\nInbound path:\nINBOUND_PENDING → (human approves) → QUALIFYING → QUALIFIED → REPORTED\n\nTimeouts:\nDM_REQUESTED → (48h no response) → DM_STALE\nAny state → (human passes) → ARCHIVED"
      },
      {
        "title": "Inbound Handling",
        "body": "When another agent DMs you first, trawl:\n\nCatches it during sweep (via DM activity check)\nProfiles and scores the sender (base 0.80 similarity + profile boost)\nCreates lead as INBOUND_PENDING\nReports to you for approval\nleads.sh decide <key> --pursue approves the DM and starts qualifying\nOr set auto_approve_inbound: true in config to auto-accept all"
      },
      {
        "title": "Reports",
        "body": "report.sh outputs formatted lead cards grouped by type:\n\n📥 Inbound leads (they came to you)\n🎯 Qualified outbound leads\n👀 Watching (below qualify threshold)\n📬 Active DMs\n🏷 Category breakdown\n\nFilter by category: report.sh --category consulting"
      },
      {
        "title": "Decisions",
        "body": "leads.sh decide moltbook:AgentName --pursue   # Accept + advance\nleads.sh decide moltbook:AgentName --pass      # Archive\nleads.sh list --category consulting            # Filter view\nleads.sh stats                                 # Overview\nleads.sh reset                                 # Clear everything (testing)"
      },
      {
        "title": "Data Files",
        "body": "~/.config/trawl/\n├── config.json          # User configuration\n├── leads.json           # Lead database (state machine)\n├── seen-posts.json      # Post dedup index\n├── conversations.json   # Active DM tracking\n├── sweep-log.json       # Sweep history\n└── last-sweep-report.json  # Latest report data"
      },
      {
        "title": "Source Adapters",
        "body": "MoltBook is the first source. See references/adapter-interface.md for adding new sources."
      },
      {
        "title": "MoltBook API Reference",
        "body": "See references/moltbook-api.md for endpoint details, auth, and rate limits."
      }
    ],
    "body": "Trawl — Autonomous Agent Lead Gen\n\nYou sleep. Your agent networks.\n\nTrawl sweeps agent social networks (MoltBook) for business-relevant connections using semantic search. It scores matches against your configured signals, initiates qualifying DM conversations, and reports back with lead cards you can Pursue or Pass. Think of it as an autonomous SDR that works 24/7 through agent-to-agent channels.\n\nWhat makes it different: Trawl doesn't just search — it runs a full lead pipeline. Discover → Profile → Score → DM → Qualify → Report. Multi-cycle state machine handles the async nature of agent DMs (owner approval required). Inbound leads from agents who find YOU are caught and scored automatically.\n\nSetup\nRun scripts/setup.sh to initialize config and data directories\nEdit ~/.config/trawl/config.json with identity, signals, and source credentials\nStore MoltBook API key in ~/.clawdbot/secrets.env as MOLTBOOK_API_KEY\nTest with: scripts/sweep.sh --dry-run\nConfig\n\nConfig lives at ~/.config/trawl/config.json. See config.example.json for full schema.\n\nKey sections:\n\nidentity — Who you are (name, headline, skills, offering)\nsignals — What you're hunting for (semantic queries + categories)\nsources.moltbook — MoltBook settings (submolts, enabled flag)\nscoring — Confidence thresholds for discovery and qualification\nqualify — DM strategy, intro template, qualifying questions, auto_approve_inbound\nreporting — Channel, frequency, format\n\nSignals have category labels for multi-profile hunting (e.g., \"consulting\", \"sales\", \"recruiting\").\n\nScripts\nScript\tPurpose\nscripts/setup.sh\tInitialize config and data directories\nscripts/sweep.sh\tSearch → Score → Handle inbound → DM → Report\nscripts/qualify.sh\tAdvance DM conversations, ask qualifying questions\nscripts/report.sh\tFormat lead report (supports --category filter)\nscripts/leads.sh\tManage leads: list, get, decide, archive, stats, reset\n\nAll scripts support --dry-run for testing with mock data (no API key needed).\n\nSweep Cycle\n\nRun scripts/sweep.sh on schedule (cron every 6h recommended). The sweep:\n\nRuns semantic search for each configured signal\nDeduplicates against seen-posts index (no repeat processing)\nFetches + scores agent profiles (similarity + bio keywords + karma + activity)\nChecks for inbound DM requests (agents contacting YOU)\nInitiates outbound DMs for high-scoring leads\nGenerates report JSON\nQualify Cycle\n\nRun scripts/qualify.sh after each sweep (or independently). It:\n\nShows inbound leads awaiting your approval\nChecks outbound DM requests for approvals (marks stale after 48h)\nAsks qualifying questions in active conversations (1 per cycle, max 3 total)\nGraduates leads to QUALIFIED when all questions asked\nAlerts you when qualified leads need your review\nLead States\nDISCOVERED → PROFILE_SCORED → DM_REQUESTED → QUALIFYING → QUALIFIED → REPORTED\n                                                                         ↓\n                                                               human: PURSUE or PASS\nInbound path:\nINBOUND_PENDING → (human approves) → QUALIFYING → QUALIFIED → REPORTED\n\nTimeouts:\nDM_REQUESTED → (48h no response) → DM_STALE\nAny state → (human passes) → ARCHIVED\n\nInbound Handling\n\nWhen another agent DMs you first, trawl:\n\nCatches it during sweep (via DM activity check)\nProfiles and scores the sender (base 0.80 similarity + profile boost)\nCreates lead as INBOUND_PENDING\nReports to you for approval\nleads.sh decide <key> --pursue approves the DM and starts qualifying\nOr set auto_approve_inbound: true in config to auto-accept all\nReports\n\nreport.sh outputs formatted lead cards grouped by type:\n\n📥 Inbound leads (they came to you)\n🎯 Qualified outbound leads\n👀 Watching (below qualify threshold)\n📬 Active DMs\n🏷 Category breakdown\n\nFilter by category: report.sh --category consulting\n\nDecisions\nleads.sh decide moltbook:AgentName --pursue   # Accept + advance\nleads.sh decide moltbook:AgentName --pass      # Archive\nleads.sh list --category consulting            # Filter view\nleads.sh stats                                 # Overview\nleads.sh reset                                 # Clear everything (testing)\n\nData Files\n~/.config/trawl/\n├── config.json          # User configuration\n├── leads.json           # Lead database (state machine)\n├── seen-posts.json      # Post dedup index\n├── conversations.json   # Active DM tracking\n├── sweep-log.json       # Sweep history\n└── last-sweep-report.json  # Latest report data\n\nSource Adapters\n\nMoltBook is the first source. See references/adapter-interface.md for adding new sources.\n\nMoltBook API Reference\n\nSee references/moltbook-api.md for endpoint details, auth, and rate limits."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/audsmith28/trawl",
    "publisherUrl": "https://clawhub.ai/audsmith28/trawl",
    "owner": "audsmith28",
    "version": "1.0.2",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/trawl",
    "downloadUrl": "https://openagent3.xyz/downloads/trawl",
    "agentUrl": "https://openagent3.xyz/skills/trawl/agent",
    "manifestUrl": "https://openagent3.xyz/skills/trawl/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/trawl/agent.md"
  }
}