{"_id":"@a1local/adpages-replacement-tool-finder","_rev":"2-7326a6c667dd549e9a2e54559c281e11","name":"@a1local/adpages-replacement-tool-finder","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@a1local/adpages-replacement-tool-finder","version":"0.1.0","keywords":["backlinks","link-building","replacement-tool","local-seo","resource-pages","broken-links","agency"],"license":"MIT","_id":"@a1local/adpages-replacement-tool-finder@0.1.0","maintainers":[{"name":"a1local","email":"extensions@a1local.com.au"}],"homepage":"https://github.com/a1local/adpages-replacement-tool-finder#readme","bugs":{"url":"https://github.com/a1local/adpages-replacement-tool-finder/issues"},"bin":{"adpages-replacement-tool-finder":"bin/adpages-replacement-tool-finder.mjs"},"dist":{"shasum":"0eb42f356f45a1d023165df979b3a39aa89c3c49","tarball":"https://registry.npmjs.org/@a1local/adpages-replacement-tool-finder/-/adpages-replacement-tool-finder-0.1.0.tgz","fileCount":9,"integrity":"sha512-FWUO7GHPiYbEWUK8vIDGSkCfUh8oQJ7lxwDrmDWn+l4eMiAQWPf4yoy5HAuve3BhYttUx0a2eFXLtfHfPbsIRQ==","signatures":[{"sig":"MEUCIQDiKfr2YgpMddlB1GOcMylpm+HcqAvBPQ/gBUaDQkqCEwIge+SdEWa/rhPvop5lFPv9ovkYE+Jtq3OnAn2N9F/jsB8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33236},"main":"./src/index.mjs","type":"module","exports":{".":"./src/index.mjs"},"funding":{"url":"https://a1local.com.au/extensions/","type":"custom"},"gitHead":"0051b08e303680b1f851a3980ab4207b2b954405","scripts":{"check":"node scripts/check.mjs","smoke":"node scripts/smoke.mjs","pack:dry-run":"npm pack --dry-run","prepublishOnly":"npm run check && npm run smoke"},"_npmUser":{"name":"a1local","email":"extensions@a1local.com.au"},"repository":{"url":"git+https://github.com/a1local/adpages-replacement-tool-finder.git","type":"git"},"_npmVersion":"11.12.1","description":"Dependency-free CLI for prioritizing replacement-tool backlink opportunities from local backlink and resource-page exports.","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/adpages-replacement-tool-finder_0.1.0_1779692707033_0.519754824033438","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@a1local/adpages-replacement-tool-finder","version":"0.1.1","description":"Dependency-free CLI for prioritizing replacement-tool backlink opportunities from local backlink and resource-page exports.","type":"module","license":"MIT","sideEffects":false,"main":"./src/index.mjs","exports":{".":"./src/index.mjs"},"bin":{"adpages-replacement-tool-finder":"bin/adpages-replacement-tool-finder.mjs"},"scripts":{"check":"node scripts/check.mjs","smoke":"node scripts/smoke.mjs","pack:dry-run":"npm pack --dry-run","prepublishOnly":"npm run check && npm run smoke"},"keywords":["backlinks","link-building","replacement-tool","local-seo","resource-pages","broken-links","agency"],"repository":{"type":"git","url":"git+https://github.com/a1local/adpages-replacement-tool-finder.git"},"homepage":"https://github.com/a1local/adpages-replacement-tool-finder#readme","bugs":{"url":"https://github.com/a1local/adpages-replacement-tool-finder/issues"},"funding":{"type":"custom","url":"https://a1local.com.au/extensions/"},"publishConfig":{"access":"public"},"gitHead":"0051b08e303680b1f851a3980ab4207b2b954405","_id":"@a1local/adpages-replacement-tool-finder@0.1.1","_nodeVersion":"25.9.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-t+1jbABYRQnZ6om/TdPmh6If+3AB1xOUjzFofDjyDyAgmIirr4N2Cpcwf3N3Rjzwv9Q7Yk2mlgFKEOIidmwUSQ==","shasum":"6f9df16c596a6e5556952eb956a21745cc2c94b1","tarball":"https://registry.npmjs.org/@a1local/adpages-replacement-tool-finder/-/adpages-replacement-tool-finder-0.1.1.tgz","fileCount":9,"unpackedSize":33234,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDewNBQdoGJLhL8UL6cXX+YOiZQ9En7cCHDcF/VBTbQmAiEAuOc2owoMGHib28qhhksSYeZzJZShQfL4nTURegpelm4="}]},"_npmUser":{"name":"a1local","email":"extensions@a1local.com.au"},"directories":{},"maintainers":[{"name":"a1local","email":"extensions@a1local.com.au"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/adpages-replacement-tool-finder_0.1.1_1779692799451_0.5772605095046641"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-25T07:05:06.904Z","modified":"2026-05-25T07:06:39.720Z","0.1.0":"2026-05-25T07:05:07.181Z","0.1.1":"2026-05-25T07:06:39.631Z"},"bugs":{"url":"https://github.com/a1local/adpages-replacement-tool-finder/issues"},"license":"MIT","homepage":"https://github.com/a1local/adpages-replacement-tool-finder#readme","keywords":["backlinks","link-building","replacement-tool","local-seo","resource-pages","broken-links","agency"],"repository":{"type":"git","url":"git+https://github.com/a1local/adpages-replacement-tool-finder.git"},"description":"Dependency-free CLI for prioritizing replacement-tool backlink opportunities from local backlink and resource-page exports.","maintainers":[{"name":"a1local","email":"extensions@a1local.com.au"}],"readme":"# AdPages Replacement Tool Opportunity Finder\n\nA dependency-free npm/CLI scaffold for finding replacement-tool backlink campaigns from local backlink, broken-link, or resource-page exports.\n\nIt helps an agency or tool builder answer: which old tools with backlinks are broken, outdated, abandoned, or weak enough that a better free replacement is worth building and pitching?\n\n## What It Does\n\n- Reads local CSV or JSON exports from backlink tools, crawlers, resource-page reviews, or manual research sheets.\n- Normalizes common field names such as `referring_page_url`, `target_url`, `anchor_text`, `status`, `domain_authority`, and `notes`.\n- Scores each target for broken/outdated evidence, resource-page intent, relevance, authority, traffic, and link quality.\n- Classifies opportunities into practical replacement ideas:\n  - schema validator\n  - local business website checker\n  - click-to-call tester\n  - form endpoint checker\n  - GBP link checker\n  - mobile CTA checker\n- Outputs JSON or CSV for human review.\n\nIt does not scrape websites, verify live status codes, send outreach, enrich contacts, or use credentials. Bring your own local exports and verify the final targets manually before outreach.\n\n## Usage\n\n```bash\nnpm --prefix packages/adpages-replacement-tool-finder run smoke\nnode packages/adpages-replacement-tool-finder/bin/adpages-replacement-tool-finder.mjs \\\n  packages/adpages-replacement-tool-finder/examples/input.csv \\\n  --pretty \\\n  --min-score 55 \\\n  --top 25\n```\n\nCSV output:\n\n```bash\nnode packages/adpages-replacement-tool-finder/bin/adpages-replacement-tool-finder.mjs \\\n  --input packages/adpages-replacement-tool-finder/examples/input.csv \\\n  --format csv \\\n  --output replacement-tool-opportunities.csv\n```\n\nExpected input columns are flexible. The tool recognizes common aliases for:\n\n| Concept | Example fields |\n| --- | --- |\n| Referring page | `referring_page_url`, `source_url`, `linking_page_url`, `resource_page_url` |\n| Old tool URL | `target_url`, `destination_url`, `broken_url`, `tool_url`, `outbound_url` |\n| Link text | `anchor_text`, `anchor`, `link_text` |\n| Status | `status`, `http_status`, `status_code` |\n| Authority | `domain_authority`, `dr`, `domain_rating`, `page_authority` |\n| Traffic | `estimated_monthly_visits`, `organic_traffic`, `traffic` |\n| Context | `page_title`, `tool_name`, `notes`, `last_checked` |\n\nJSON input can be an array, or an object with `records[]` or `links[]`.\n\n## Scoring Model\n\nThe score is intentionally simple and explainable:\n\n- Broken or unavailable target evidence gets the biggest lift.\n- Outdated, abandoned, deprecated, or stale-year evidence adds priority.\n- Resource/course/checklist/tool-roundup pages score higher because they are natural editorial placements.\n- Stronger authority or traffic signals raise the priority.\n- Nofollow, sponsored, UGC, missing URLs, or low-context rows are penalized.\n\nThe output includes `scoreBreakdown` so every priority can be reviewed before anyone builds a replacement tool or writes outreach.\n\n## Publishing Position\n\nThis is a link-building research utility, not an automation or scraper. The publishable angle is:\n\n> Find resource pages still linking to broken or outdated marketing tools, then prioritize which replacement tools are worth building and pitching manually.\n\nThe natural landing page should pair the CLI with a free example workflow:\n\n1. Export backlinks or outbound resource-page links from your existing SEO tool.\n2. Run the local finder.\n3. Review the highest-priority broken or outdated tools.\n4. Build a genuinely better no-login replacement.\n5. Pitch editors with the old URL, the issue, and the replacement.\n\n## Publish Blockers\n\n- Validate against real exports from Ahrefs, Semrush, Screaming Frog, Sitebulb, and manual Google Sheets research.\n- Add public example exports that do not expose private client data.\n- Finalize package license, repository URL, privacy URL, and support URL.\n- Confirm the final brand/package name before npm publication.\n- Add a landing page with screenshots, a sample report, and a clear no-scraping/no-outreach policy.\n- Have a human review all outreach positioning before contacting any site owner.\n\n## Local Checks\n\n```bash\nnpm --prefix packages/adpages-replacement-tool-finder run check\nnpm --prefix packages/adpages-replacement-tool-finder run smoke\n```\n\n## Publisher\n\nBuilt by [AdPages from A1 Local](https://a1local.com.au/extensions/) as a free, dependency-light tool for local-service marketers, agencies, and small business site owners.\n","readmeFilename":"README.md"}