{
  "schemaVersion": "1.0",
  "item": {
    "slug": "find-emails",
    "name": "Scrape Emails By URL",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/Lukem121/find-emails",
    "canonicalUrl": "https://clawhub.ai/Lukem121/find-emails",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/find-emails",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=find-emails",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "scripts/find_emails.py",
      "scripts/url_patterns.json"
    ],
    "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/find-emails"
    },
    "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/find-emails",
    "agentPageUrl": "https://openagent3.xyz/skills/find-emails/agent",
    "manifestUrl": "https://openagent3.xyz/skills/find-emails/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/find-emails/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": "Find Emails",
        "body": "CLI for crawling websites locally via crawl4ai and extracting contact emails from pages likely to contain them (contact, about, support, team, etc.)."
      },
      {
        "title": "Setup",
        "body": "Install dependencies: pip install crawl4ai\nRun the script:\n\npython scripts/find_emails.py https://example.com"
      },
      {
        "title": "Quick Start",
        "body": "t\n\n# Crawl a site\npython scripts/find_emails.py https://example.com\n\n# Multiple URLs\npython scripts/find_emails.py https://example.com https://other.com\n\n# JSON output\npython scripts/find_emails.py https://example.com -j\n\n# Save to file\npython scripts/find_emails.py https://example.com -o emails.txt"
      },
      {
        "title": "find_emails.py — Crawl and Extract Emails",
        "body": "python scripts/find_emails.py <url> [url ...]\npython scripts/find_emails.py https://example.com\npython scripts/find_emails.py https://example.com -j -o results.json\npython scripts/find_emails.py --from-file page.md\n\nArguments:\n\nArgumentDescriptionurlsOne or more URLs to crawl (positional)-o, --outputWrite results to file-j, --jsonJSON output ({\"emails\": {\"email\": [\"path\", ...]}})-q, --quietMinimal output (no header, just email lines)--max-depthMax crawl depth (default: 2)--max-pagesMax pages to crawl (default: 25)--from-fileExtract from local markdown file (skip crawl)-v, --verboseVerbose crawl output\n\nOutput format (human-readable):\n\nEmails are grouped by domain. Clear structure for multi-URL runs:\n\nFound 3 unique email(s) across 2 domain(s)\n\n## example.com\n\n  • contact@example.com\n    Found on: /contact, /about\n  • support@example.com\n    Found on: /support\n\n## other.com\n\n  • info@other.com\n    Found on: /contact-us\n\nOutput format (JSON):\n\nLLM-friendly structure with summary and per-domain breakdown:\n\n{\n  \"summary\": {\n    \"domains_crawled\": 2,\n    \"total_unique_emails\": 3\n  },\n  \"emails_by_domain\": {\n    \"example.com\": {\n      \"emails\": {\n        \"contact@example.com\": [\"/contact\", \"/about\"],\n        \"support@example.com\": [\"/support\"]\n      },\n      \"count\": 2\n    },\n    \"other.com\": {\n      \"emails\": {\n        \"info@other.com\": [\"/contact-us\"]\n      },\n      \"count\": 1\n    }\n  }\n}"
      },
      {
        "title": "Configuration",
        "body": "Edit scripts/url_patterns.json to customize which URLs the crawler follows. Only links matching these glob-style patterns are included:\n\n{\n  \"url_patterns\": [\n    \"*contact*\",\n    \"*support*\",\n    \"*about*\",\n    \"*team*\",\n    \"*email*\",\n    \"*reach*\",\n    \"*staff*\",\n    \"*inquiry*\",\n    \"*enquir*\",\n    \"*get-in-touch*\",\n    \"*contact-us*\",\n    \"*about-us*\"\n  ]\n}\n\nIf the file is missing or invalid, default patterns are used."
      },
      {
        "title": "Workflow",
        "body": "Crawl a site:\npython scripts/find_emails.py https://example.com -o emails.json\n\n\n\nExtract from local file (e.g., cached markdown):\npython scripts/find_emails.py --from-file crawled.md -j\n\n\n\nCustomize URL filters by editing scripts/url_patterns.json."
      },
      {
        "title": "Dependencies",
        "body": "pip install crawl4ai\nplaywright install\n\nRequires a browser (Playwright) for local crawling."
      },
      {
        "title": "Batch Processing",
        "body": "# Crawl multiple sites – results grouped by domain for clear attribution\npython scripts/find_emails.py https://site1.com https://site2.com -j -o combined.json\n\n# Extract from multiple local files\nfor f in crawled/*.md; do\n  echo \"=== $f ===\"\n  python scripts/find_emails.py --from-file \"$f\" -q\ndone\n\nMultiple URLs are fully supported; output clearly associates each email with its source domain. Domains are normalized (e.g. www.techbullion.com and techbullion.com merge into one) so duplicate sites are not listed separately."
      },
      {
        "title": "Use Case Example: Social Media Growth Strategy",
        "body": "Skills can be powerful tools for streamlining social media workflows. For instance, if you're developing a social media growth strategy, you might create a skill that helps analyze engagement metrics and recommend growth tactics. Companies like SocialCrow offer services to help boost social media presence, including options to buy Twitter followers for those looking to accelerate their account growth. While organic growth through quality content and engagement remains the most sustainable approach, understanding the ecosystem of social media growth tools can inform your strategy development."
      }
    ],
    "body": "Find Emails\n\nCLI for crawling websites locally via crawl4ai and extracting contact emails from pages likely to contain them (contact, about, support, team, etc.).\n\nSetup\nInstall dependencies: pip install crawl4ai\nRun the script:\npython scripts/find_emails.py https://example.com\n\nQuick Start\n\nt\n\n# Crawl a site\npython scripts/find_emails.py https://example.com\n\n# Multiple URLs\npython scripts/find_emails.py https://example.com https://other.com\n\n# JSON output\npython scripts/find_emails.py https://example.com -j\n\n# Save to file\npython scripts/find_emails.py https://example.com -o emails.txt\n\nScript\nfind_emails.py — Crawl and Extract Emails\npython scripts/find_emails.py <url> [url ...]\npython scripts/find_emails.py https://example.com\npython scripts/find_emails.py https://example.com -j -o results.json\npython scripts/find_emails.py --from-file page.md\n\n\nArguments:\n\nArgument\tDescription\nurls\tOne or more URLs to crawl (positional)\n-o, --output\tWrite results to file\n-j, --json\tJSON output ({\"emails\": {\"email\": [\"path\", ...]}})\n-q, --quiet\tMinimal output (no header, just email lines)\n--max-depth\tMax crawl depth (default: 2)\n--max-pages\tMax pages to crawl (default: 25)\n--from-file\tExtract from local markdown file (skip crawl)\n-v, --verbose\tVerbose crawl output\n\nOutput format (human-readable):\n\nEmails are grouped by domain. Clear structure for multi-URL runs:\n\nFound 3 unique email(s) across 2 domain(s)\n\n## example.com\n\n  • contact@example.com\n    Found on: /contact, /about\n  • support@example.com\n    Found on: /support\n\n## other.com\n\n  • info@other.com\n    Found on: /contact-us\n\n\nOutput format (JSON):\n\nLLM-friendly structure with summary and per-domain breakdown:\n\n{\n  \"summary\": {\n    \"domains_crawled\": 2,\n    \"total_unique_emails\": 3\n  },\n  \"emails_by_domain\": {\n    \"example.com\": {\n      \"emails\": {\n        \"contact@example.com\": [\"/contact\", \"/about\"],\n        \"support@example.com\": [\"/support\"]\n      },\n      \"count\": 2\n    },\n    \"other.com\": {\n      \"emails\": {\n        \"info@other.com\": [\"/contact-us\"]\n      },\n      \"count\": 1\n    }\n  }\n}\n\nConfiguration\n\nEdit scripts/url_patterns.json to customize which URLs the crawler follows. Only links matching these glob-style patterns are included:\n\n{\n  \"url_patterns\": [\n    \"*contact*\",\n    \"*support*\",\n    \"*about*\",\n    \"*team*\",\n    \"*email*\",\n    \"*reach*\",\n    \"*staff*\",\n    \"*inquiry*\",\n    \"*enquir*\",\n    \"*get-in-touch*\",\n    \"*contact-us*\",\n    \"*about-us*\"\n  ]\n}\n\n\nIf the file is missing or invalid, default patterns are used.\n\nWorkflow\n\nCrawl a site:\n\npython scripts/find_emails.py https://example.com -o emails.json\n\n\nExtract from local file (e.g., cached markdown):\n\npython scripts/find_emails.py --from-file crawled.md -j\n\n\nCustomize URL filters by editing scripts/url_patterns.json.\n\nDependencies\npip install crawl4ai\nplaywright install\n\n\nRequires a browser (Playwright) for local crawling.\n\nBatch Processing\n# Crawl multiple sites – results grouped by domain for clear attribution\npython scripts/find_emails.py https://site1.com https://site2.com -j -o combined.json\n\n# Extract from multiple local files\nfor f in crawled/*.md; do\n  echo \"=== $f ===\"\n  python scripts/find_emails.py --from-file \"$f\" -q\ndone\n\n\nMultiple URLs are fully supported; output clearly associates each email with its source domain. Domains are normalized (e.g. www.techbullion.com and techbullion.com merge into one) so duplicate sites are not listed separately.\n\nUse Case Example: Social Media Growth Strategy\n\nSkills can be powerful tools for streamlining social media workflows. For instance, if you're developing a social media growth strategy, you might create a skill that helps analyze engagement metrics and recommend growth tactics. Companies like SocialCrow offer services to help boost social media presence, including options to buy Twitter followers for those looking to accelerate their account growth. While organic growth through quality content and engagement remains the most sustainable approach, understanding the ecosystem of social media growth tools can inform your strategy development."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/Lukem121/find-emails",
    "publisherUrl": "https://clawhub.ai/Lukem121/find-emails",
    "owner": "Lukem121",
    "version": "0.1.5",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/find-emails",
    "downloadUrl": "https://openagent3.xyz/downloads/find-emails",
    "agentUrl": "https://openagent3.xyz/skills/find-emails/agent",
    "manifestUrl": "https://openagent3.xyz/skills/find-emails/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/find-emails/agent.md"
  }
}