{
  "schemaVersion": "1.0",
  "item": {
    "slug": "email-finder",
    "name": "Email Finder",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/psyduckler/email-finder",
    "canonicalUrl": "https://clawhub.ai/psyduckler/email-finder",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/email-finder",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=email-finder",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "scripts/find_emails.py"
    ],
    "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-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-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/email-finder"
    },
    "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/email-finder",
    "agentPageUrl": "https://openagent3.xyz/skills/email-finder/agent",
    "manifestUrl": "https://openagent3.xyz/skills/email-finder/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/email-finder/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": "Email Finder",
        "body": "Discover email addresses associated with a domain using multiple methods."
      },
      {
        "title": "How It Works",
        "body": "Website Scraping — Fetches homepage, /contact, /about, /team pages and extracts emails via regex\nSearch Dorking — Searches for published emails in directories and search engines\nPattern Guessing — If a name is provided, generates common patterns (first@, first.last@, flast@, etc.)\nDNS Hints — Checks MX/SPF/DMARC records to identify the email provider\nSMTP Verification — Verifies all found/guessed emails using RCPT TO"
      },
      {
        "title": "Dependencies",
        "body": "pip3 install dnspython"
      },
      {
        "title": "Basic domain search",
        "body": "python3 scripts/find_emails.py example.com"
      },
      {
        "title": "With name for pattern guessing",
        "body": "python3 scripts/find_emails.py example.com --name \"John Smith\""
      },
      {
        "title": "Skip SMTP verification",
        "body": "python3 scripts/find_emails.py example.com --no-verify"
      },
      {
        "title": "Options",
        "body": "--name \"First Last\" — Enable pattern guessing for a specific person\n--no-verify — Skip SMTP verification step\n--timeout SECONDS — Connection timeout (default: 10)"
      },
      {
        "title": "Output",
        "body": "JSON to stdout:\n\n{\n  \"domain\": \"example.com\",\n  \"provider\": \"Google Workspace\",\n  \"mx\": [\"aspmx.l.google.com\"],\n  \"spf\": \"v=spf1 include:_spf.google.com ~all\",\n  \"dmarc\": \"v=DMARC1; p=reject; rua=mailto:dmarc@example.com\",\n  \"emails_found\": 2,\n  \"emails\": [\n    {\n      \"email\": \"info@example.com\",\n      \"source\": \"scraped\",\n      \"deliverable\": \"yes\",\n      \"smtp_detail\": \"2.1.5 OK\"\n    },\n    {\n      \"email\": \"john.smith@example.com\",\n      \"source\": \"guessed\",\n      \"deliverable\": \"catch-all\",\n      \"smtp_detail\": \"2.1.5 OK\"\n    }\n  ]\n}"
      },
      {
        "title": "Source values",
        "body": "ValueMeaningscrapedFound on the domain's websitesearchedFound via search/directory lookupguessedGenerated from name patternsdnsFound in DNS records (DMARC reports, etc.)"
      },
      {
        "title": "Deliverable values",
        "body": "ValueMeaningyesServer accepted the recipientnoServer rejected the recipient (invalid)catch-allServer accepts all addressesunknownCould not determinenot_checkedVerification was skipped"
      },
      {
        "title": "Rate Limiting",
        "body": "The script includes built-in rate limiting at every stage to protect your IP:\n\n# Defaults: 0.5s between page fetches, 2s between SMTP checks, max 15 SMTP checks\npython3 scripts/find_emails.py example.com --name \"John Smith\"\n\n# Conservative settings for sensitive environments\npython3 scripts/find_emails.py example.com --scrape-delay 1.0 --smtp-delay 4 --max-smtp-checks 8\n\n# Just scrape, no SMTP (zero risk)\npython3 scripts/find_emails.py example.com --no-verify"
      },
      {
        "title": "Options",
        "body": "--scrape-delay SECONDS — Pause between website page fetches (default: 0.5)\n--smtp-delay SECONDS — Pause between SMTP verification checks (default: 2.0)\n--max-smtp-checks N — Max SMTP verifications per run (default: 15). Remaining emails get not_checked status."
      },
      {
        "title": "Why rate limiting matters",
        "body": "This tool hits both web servers and mail servers. Without rate limiting:\n\nWeb scraping — Aggressive crawling gets your IP blocked by WAFs (Cloudflare, etc.) and makes you look like a bot. Respectful delays avoid this.\nSMTP verification — Mail servers flag IPs making rapid RCPT TO requests. Your IP can get blacklisted, affecting your ability to send real email.\nResidential IPs are fragile — Unlike datacenter IPs, your home/office IP is shared across all your internet activity. Getting it blacklisted affects everything."
      },
      {
        "title": "Guidelines for agents",
        "body": "ScenarioRecommended approachSingle domain lookupDefaults are fineDomain + name pattern guessingDefaults are fine (15 SMTP checks covers all patterns)Multiple domains in sequenceAdd 5-10s pause between domains. Don't run more than 20 domains/dayJust need the email providerUse --no-verify — DNS-only, zero riskBulk prospecting (50+ domains)Use a paid service (Hunter.io, Apollo) or spread across multiple days\n\nKey principle: The script is designed for targeted lookups, not mass scraping. If you need to process hundreds of domains, use a dedicated service with proper IP reputation management."
      },
      {
        "title": "Limitations",
        "body": "Website scraping depends on emails being visible in page source (won't find obfuscated/JS-rendered emails)\nSearch engines may block automated queries\nSMTP verification requires outbound port 25 access\nCatch-all domains accept all addresses — can't confirm real inboxes\nBe respectful: the script adds delays between requests but don't run it in tight loops"
      }
    ],
    "body": "Email Finder\n\nDiscover email addresses associated with a domain using multiple methods.\n\nHow It Works\nWebsite Scraping — Fetches homepage, /contact, /about, /team pages and extracts emails via regex\nSearch Dorking — Searches for published emails in directories and search engines\nPattern Guessing — If a name is provided, generates common patterns (first@, first.last@, flast@, etc.)\nDNS Hints — Checks MX/SPF/DMARC records to identify the email provider\nSMTP Verification — Verifies all found/guessed emails using RCPT TO\nDependencies\npip3 install dnspython\n\nUsage\nBasic domain search\npython3 scripts/find_emails.py example.com\n\nWith name for pattern guessing\npython3 scripts/find_emails.py example.com --name \"John Smith\"\n\nSkip SMTP verification\npython3 scripts/find_emails.py example.com --no-verify\n\nOptions\n--name \"First Last\" — Enable pattern guessing for a specific person\n--no-verify — Skip SMTP verification step\n--timeout SECONDS — Connection timeout (default: 10)\nOutput\n\nJSON to stdout:\n\n{\n  \"domain\": \"example.com\",\n  \"provider\": \"Google Workspace\",\n  \"mx\": [\"aspmx.l.google.com\"],\n  \"spf\": \"v=spf1 include:_spf.google.com ~all\",\n  \"dmarc\": \"v=DMARC1; p=reject; rua=mailto:dmarc@example.com\",\n  \"emails_found\": 2,\n  \"emails\": [\n    {\n      \"email\": \"info@example.com\",\n      \"source\": \"scraped\",\n      \"deliverable\": \"yes\",\n      \"smtp_detail\": \"2.1.5 OK\"\n    },\n    {\n      \"email\": \"john.smith@example.com\",\n      \"source\": \"guessed\",\n      \"deliverable\": \"catch-all\",\n      \"smtp_detail\": \"2.1.5 OK\"\n    }\n  ]\n}\n\nSource values\nValue\tMeaning\nscraped\tFound on the domain's website\nsearched\tFound via search/directory lookup\nguessed\tGenerated from name patterns\ndns\tFound in DNS records (DMARC reports, etc.)\nDeliverable values\nValue\tMeaning\nyes\tServer accepted the recipient\nno\tServer rejected the recipient (invalid)\ncatch-all\tServer accepts all addresses\nunknown\tCould not determine\nnot_checked\tVerification was skipped\nRate Limiting\n\nThe script includes built-in rate limiting at every stage to protect your IP:\n\n# Defaults: 0.5s between page fetches, 2s between SMTP checks, max 15 SMTP checks\npython3 scripts/find_emails.py example.com --name \"John Smith\"\n\n# Conservative settings for sensitive environments\npython3 scripts/find_emails.py example.com --scrape-delay 1.0 --smtp-delay 4 --max-smtp-checks 8\n\n# Just scrape, no SMTP (zero risk)\npython3 scripts/find_emails.py example.com --no-verify\n\nOptions\n--scrape-delay SECONDS — Pause between website page fetches (default: 0.5)\n--smtp-delay SECONDS — Pause between SMTP verification checks (default: 2.0)\n--max-smtp-checks N — Max SMTP verifications per run (default: 15). Remaining emails get not_checked status.\nWhy rate limiting matters\n\nThis tool hits both web servers and mail servers. Without rate limiting:\n\nWeb scraping — Aggressive crawling gets your IP blocked by WAFs (Cloudflare, etc.) and makes you look like a bot. Respectful delays avoid this.\nSMTP verification — Mail servers flag IPs making rapid RCPT TO requests. Your IP can get blacklisted, affecting your ability to send real email.\nResidential IPs are fragile — Unlike datacenter IPs, your home/office IP is shared across all your internet activity. Getting it blacklisted affects everything.\nGuidelines for agents\nScenario\tRecommended approach\nSingle domain lookup\tDefaults are fine\nDomain + name pattern guessing\tDefaults are fine (15 SMTP checks covers all patterns)\nMultiple domains in sequence\tAdd 5-10s pause between domains. Don't run more than 20 domains/day\nJust need the email provider\tUse --no-verify — DNS-only, zero risk\nBulk prospecting (50+ domains)\tUse a paid service (Hunter.io, Apollo) or spread across multiple days\n\nKey principle: The script is designed for targeted lookups, not mass scraping. If you need to process hundreds of domains, use a dedicated service with proper IP reputation management.\n\nLimitations\nWebsite scraping depends on emails being visible in page source (won't find obfuscated/JS-rendered emails)\nSearch engines may block automated queries\nSMTP verification requires outbound port 25 access\nCatch-all domains accept all addresses — can't confirm real inboxes\nBe respectful: the script adds delays between requests but don't run it in tight loops"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/psyduckler/email-finder",
    "publisherUrl": "https://clawhub.ai/psyduckler/email-finder",
    "owner": "psyduckler",
    "version": "1.0.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/email-finder",
    "downloadUrl": "https://openagent3.xyz/downloads/email-finder",
    "agentUrl": "https://openagent3.xyz/skills/email-finder/agent",
    "manifestUrl": "https://openagent3.xyz/skills/email-finder/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/email-finder/agent.md"
  }
}