{"_id":"@duskydots/seo-audit","_rev":"7-55246682b14fa47add3b3e0ff26ca7a8","name":"@duskydots/seo-audit","dist-tags":{"latest":"1.0.7"},"versions":{"1.0.0":{"name":"@duskydots/seo-audit","version":"1.0.0","keywords":["seo","crawler","audit","bun","playwright"],"license":"MIT","_id":"@duskydots/seo-audit@1.0.0","maintainers":[{"name":"lucasduskydots","email":"lucas.santos@duskydots.com"}],"homepage":"https://github.com/duskydots/seo-audit#readme","bugs":{"url":"https://github.com/duskydots/seo-audit/issues"},"dist":{"shasum":"69e14f2cdae155f6cbfadeeb92d3c02c3395dc73","tarball":"https://registry.npmjs.org/@duskydots/seo-audit/-/seo-audit-1.0.0.tgz","fileCount":64,"integrity":"sha512-nC0P4btQkp4aOStH2yXtHawWWqG2hLpo7iHKN7bWSUrKR1EmxOdn9VSNky76saBUZ/Vh1Qo3Q3N6q/FrfJ7ZWA==","signatures":[{"sig":"MEUCIQDVWm8JudSYeF6PLi+Rd4uC6RmkC/bOIOjJt5dNGmkppAIgeWOmC5l55W/zQsEM3hHA4jUw864vQ48NmnMWlMPUGMU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":141249},"type":"module","_from":"file:/Users/lucas/Dev/DuskyDots/seo-audit/.release-1.0.0-6Q3oqH/duskydots-seo-audit-1.0.0.tgz","engines":{"bun":">=1.3.0"},"exports":{".":"./src/index.ts","./reporting":"./src/reporting.ts","./internal/render-worker":"./src/domain/render/render-worker.ts"},"scripts":{"test":"bun test ../../tests/unit","check":"tsc --noEmit -p tsconfig.json","pack:dry-run":"bun pm pack --dry-run"},"_npmUser":{"name":"lucasduskydots","email":"lucas.santos@duskydots.com"},"_resolved":"/Users/lucas/Dev/DuskyDots/seo-audit/.release-1.0.0-6Q3oqH/duskydots-seo-audit-1.0.0.tgz","_integrity":"sha512-nC0P4btQkp4aOStH2yXtHawWWqG2hLpo7iHKN7bWSUrKR1EmxOdn9VSNky76saBUZ/Vh1Qo3Q3N6q/FrfJ7ZWA==","repository":{"url":"git+https://github.com/duskydots/seo-audit.git","type":"git","directory":"packages/seo-audit"},"_npmVersion":"11.12.1","description":"Deterministic Bun technical SEO crawling, graph analysis, rules, and Markdown reporting engine.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"zod":"^4.4.3","cheerio":"^1.2.0","playwright":"1.62.1","fast-xml-parser":"^5.10.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/seo-audit_1.0.0_1786680787927_0.2249850425831168","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@duskydots/seo-audit","version":"1.0.1","keywords":["seo","crawler","audit","bun","playwright"],"license":"MIT","_id":"@duskydots/seo-audit@1.0.1","maintainers":[{"name":"lucasduskydots","email":"lucas.santos@duskydots.com"}],"homepage":"https://github.com/duskydots/seo-audit#readme","bugs":{"url":"https://github.com/duskydots/seo-audit/issues"},"dist":{"shasum":"6eba7ae5d064817711133f35b6193a7ee8ad6734","tarball":"https://registry.npmjs.org/@duskydots/seo-audit/-/seo-audit-1.0.1.tgz","fileCount":67,"integrity":"sha512-DC2WV8RnRs7Om2pmniMwt1IdZ+3ofp7U73V2h1f2jJY8Jtq1kfKA2wG/DY24RT0JMY8Ghtb4kfpCCj9Gq3wuJQ==","signatures":[{"sig":"MEUCIEAdZAeQVq57sRINDXJr3Ihq/4Kh17EvKoSFRSYAm49CAiEAyBYpvqBZnRHLf617UwKA347pRwX+in7cqQpTYBW51hU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":156370},"type":"module","_from":"file:/Users/lucas/Dev/DuskyDots/seo-audit/.release-1.0.1-UX1O33/duskydots-seo-audit-1.0.1.tgz","engines":{"bun":">=1.3.0"},"exports":{".":"./src/index.ts","./reporting":"./src/reporting.ts","./internal/render-worker":"./src/domain/render/render-worker.ts"},"scripts":{"test":"bun test ../../tests/unit","check":"tsc --noEmit -p tsconfig.json","pack:dry-run":"bun pm pack --dry-run"},"_npmUser":{"name":"lucasduskydots","email":"lucas.santos@duskydots.com"},"_resolved":"/Users/lucas/Dev/DuskyDots/seo-audit/.release-1.0.1-UX1O33/duskydots-seo-audit-1.0.1.tgz","_integrity":"sha512-DC2WV8RnRs7Om2pmniMwt1IdZ+3ofp7U73V2h1f2jJY8Jtq1kfKA2wG/DY24RT0JMY8Ghtb4kfpCCj9Gq3wuJQ==","repository":{"url":"git+https://github.com/duskydots/seo-audit.git","type":"git","directory":"packages/seo-audit"},"_npmVersion":"11.12.1","description":"Deterministic Bun technical SEO crawling, graph analysis, rules, and Markdown reporting engine.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"zod":"^4.4.3","cheerio":"^1.2.0","playwright":"1.62.1","fast-xml-parser":"^5.10.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/seo-audit_1.0.1_1786683509241_0.11203775140190397","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@duskydots/seo-audit","version":"1.0.2","keywords":["seo","crawler","audit","bun","playwright"],"license":"MIT","_id":"@duskydots/seo-audit@1.0.2","maintainers":[{"name":"lucasduskydots","email":"lucas.santos@duskydots.com"}],"homepage":"https://github.com/duskydots/seo-audit#readme","bugs":{"url":"https://github.com/duskydots/seo-audit/issues"},"dist":{"shasum":"903663747e35b820c8de952d819d9bf4a44e83e1","tarball":"https://registry.npmjs.org/@duskydots/seo-audit/-/seo-audit-1.0.2.tgz","fileCount":69,"integrity":"sha512-Ynu1x7x8PKmWfXjehbMMxM14xCMabJOxLn7BR/fwpiGOOavh1HzztLCUPe0puXKAMZaVQud+PrM8p/9WuBKgcA==","signatures":[{"sig":"MEQCIBPQ10LgqwbnocKsDKonNJy+gvQaWoVhE0InklfBZvJ7AiBto6OLee8EbYblHXRO3gbJgvdhp/FiC9oj/YWJcrDBKg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":160416},"type":"module","_from":"file:/Users/lucas/Dev/DuskyDots/seo-audit/.release-1.0.2-MwFGqv/duskydots-seo-audit-1.0.2.tgz","engines":{"bun":">=1.3.0"},"exports":{".":"./src/index.ts","./reporting":"./src/reporting.ts","./internal/render-worker":"./src/domain/render/render-worker.ts"},"scripts":{"test":"bun test ../../tests/unit","check":"tsc --noEmit -p tsconfig.json","pack:dry-run":"bun pm pack --dry-run"},"_npmUser":{"name":"lucasduskydots","email":"lucas.santos@duskydots.com"},"_resolved":"/Users/lucas/Dev/DuskyDots/seo-audit/.release-1.0.2-MwFGqv/duskydots-seo-audit-1.0.2.tgz","_integrity":"sha512-Ynu1x7x8PKmWfXjehbMMxM14xCMabJOxLn7BR/fwpiGOOavh1HzztLCUPe0puXKAMZaVQud+PrM8p/9WuBKgcA==","repository":{"url":"git+https://github.com/duskydots/seo-audit.git","type":"git","directory":"packages/seo-audit"},"_npmVersion":"11.12.1","description":"Deterministic Bun technical SEO crawling, graph analysis, rules, and Markdown reporting engine.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"zod":"^4.4.3","cheerio":"^1.2.0","playwright":"1.62.1","fast-xml-parser":"^5.10.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/seo-audit_1.0.2_1786690314524_0.7059854177187856","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@duskydots/seo-audit","version":"1.0.3","keywords":["seo","crawler","audit","bun","playwright"],"license":"MIT","_id":"@duskydots/seo-audit@1.0.3","maintainers":[{"name":"lucasduskydots","email":"lucas.santos@duskydots.com"}],"homepage":"https://github.com/duskydots/seo-audit#readme","bugs":{"url":"https://github.com/duskydots/seo-audit/issues"},"dist":{"shasum":"3b01846fc08d5983f8963717fb6f10b15cb0c117","tarball":"https://registry.npmjs.org/@duskydots/seo-audit/-/seo-audit-1.0.3.tgz","fileCount":81,"integrity":"sha512-7hUMKLc/lB5bm0c6VF+v2DmLlteRvwglWAVZ5H4TCx8E+KRPrFF6i0d+lI26Bgai9FxQONIOfwBvOu+M3G1HjA==","signatures":[{"sig":"MEQCIEuBUJY7d+M6WjJR00Ch0PZ0R1JnS2IHvBYpO9ks3ydMAiAv8SNl5JpkSXBjBa/4m8BUAyzQFBbCXGOixgkcQ3yUBQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":195186},"type":"module","_from":"file:/Users/lucas/Dev/DuskyDots/seo-audit/.release-1.0.3-MuD58K/duskydots-seo-audit-1.0.3.tgz","engines":{"bun":">=1.3.0"},"exports":{".":"./src/index.ts","./reporting":"./src/reporting.ts","./internal/render-worker":"./src/domain/render/render-worker.ts"},"scripts":{"test":"bun test ../../tests/unit","check":"tsc --noEmit -p tsconfig.json","pack:dry-run":"bun pm pack --dry-run"},"_npmUser":{"name":"lucasduskydots","email":"lucas.santos@duskydots.com"},"_resolved":"/Users/lucas/Dev/DuskyDots/seo-audit/.release-1.0.3-MuD58K/duskydots-seo-audit-1.0.3.tgz","_integrity":"sha512-7hUMKLc/lB5bm0c6VF+v2DmLlteRvwglWAVZ5H4TCx8E+KRPrFF6i0d+lI26Bgai9FxQONIOfwBvOu+M3G1HjA==","repository":{"url":"git+https://github.com/duskydots/seo-audit.git","type":"git","directory":"packages/seo-audit"},"_npmVersion":"11.12.1","description":"Deterministic Bun technical SEO crawling, graph analysis, rules, and Markdown reporting engine.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"zod":"^4.4.3","tldts":"^7.4.10","cheerio":"^1.2.0","playwright":"1.62.1","fast-xml-parser":"^5.10.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/seo-audit_1.0.3_1786770344582_0.38327963125235476","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@duskydots/seo-audit","version":"1.0.4","keywords":["seo","crawler","audit","bun","playwright"],"license":"MIT","_id":"@duskydots/seo-audit@1.0.4","maintainers":[{"name":"lucasduskydots","email":"lucas.santos@duskydots.com"}],"homepage":"https://github.com/duskydots/seo-audit#readme","bugs":{"url":"https://github.com/duskydots/seo-audit/issues"},"dist":{"shasum":"04deca8fbec9a888498024d08c4457c2960f5274","tarball":"https://registry.npmjs.org/@duskydots/seo-audit/-/seo-audit-1.0.4.tgz","fileCount":81,"integrity":"sha512-grJvlxck5eKONeGzKYQWohpQqpMNhAPnvWqRUo0DHso6jO/b0nWXSYFZsR2BTKqGnZcGBIg5JerhSs8XIml08A==","signatures":[{"sig":"MEUCIQC2y0iB611wXYNBHosRYwXfEgpDQehAz9/fW7vD1v7WvQIgKgU/tWmWTHvWg6gBrhyiP2z8FbySIX9GBvfl8rY8iD4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":195186},"type":"module","_from":"file:/Users/lucas/Dev/DuskyDots/seo-audit/.release-1.0.4-Fljz1G/duskydots-seo-audit-1.0.4.tgz","engines":{"bun":">=1.3.0"},"exports":{".":"./src/index.ts","./reporting":"./src/reporting.ts","./internal/render-worker":"./src/domain/render/render-worker.ts"},"scripts":{"test":"bun test ../../tests/unit","check":"tsc --noEmit -p tsconfig.json","pack:dry-run":"bun pm pack --dry-run"},"_npmUser":{"name":"lucasduskydots","email":"lucas.santos@duskydots.com"},"_resolved":"/Users/lucas/Dev/DuskyDots/seo-audit/.release-1.0.4-Fljz1G/duskydots-seo-audit-1.0.4.tgz","_integrity":"sha512-grJvlxck5eKONeGzKYQWohpQqpMNhAPnvWqRUo0DHso6jO/b0nWXSYFZsR2BTKqGnZcGBIg5JerhSs8XIml08A==","repository":{"url":"git+https://github.com/duskydots/seo-audit.git","type":"git","directory":"packages/seo-audit"},"_npmVersion":"11.12.1","description":"Deterministic Bun technical SEO crawling, graph analysis, rules, and Markdown reporting engine.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"zod":"^4.4.3","tldts":"^7.4.10","cheerio":"^1.2.0","playwright":"1.62.1","fast-xml-parser":"^5.10.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/seo-audit_1.0.4_1786776411473_0.8509530326338486","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@duskydots/seo-audit","version":"1.0.6","keywords":["seo","crawler","audit","bun","playwright"],"license":"MIT","_id":"@duskydots/seo-audit@1.0.6","maintainers":[{"name":"lucasduskydots","email":"lucas.santos@duskydots.com"}],"homepage":"https://github.com/duskydots/seo-audit#readme","bugs":{"url":"https://github.com/duskydots/seo-audit/issues"},"dist":{"shasum":"4227ba30658b6edbca2a0b69d7f1784ad5dcad69","tarball":"https://registry.npmjs.org/@duskydots/seo-audit/-/seo-audit-1.0.6.tgz","fileCount":132,"integrity":"sha512-upMuQ/OnSuByZhBZO+hLcdPJhTDe/hB31QlbwW9RlbBiB4zyIq9eI//cgEi8joJJG1FK6SlWxoha3UzwuwhDWw==","signatures":[{"sig":"MEQCIF8vm6D/SDQup5/DzbUr+5NlDleYZVvzIWrYzY0znPO8AiAAwHoUrYgipSKrx6v7LjyQD/anuetIMPUIZTH8z3p/ZA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":259242},"type":"module","_from":"file:/Users/lucas/Dev/DuskyDots/seo-audit/.release-1.0.6-LUhetB/duskydots-seo-audit-1.0.6.tgz","engines":{"bun":">=1.3.0"},"exports":{".":"./src/index.ts","./reporting":"./src/reporting.ts","./internal/render-worker":"./src/domain/render/render-worker.ts"},"scripts":{"test":"bun test ../../tests/unit","check":"tsc --noEmit -p tsconfig.json","pack:dry-run":"bun pm pack --dry-run"},"_npmUser":{"name":"lucasduskydots","email":"lucas.santos@duskydots.com"},"_resolved":"/Users/lucas/Dev/DuskyDots/seo-audit/.release-1.0.6-LUhetB/duskydots-seo-audit-1.0.6.tgz","_integrity":"sha512-upMuQ/OnSuByZhBZO+hLcdPJhTDe/hB31QlbwW9RlbBiB4zyIq9eI//cgEi8joJJG1FK6SlWxoha3UzwuwhDWw==","repository":{"url":"git+https://github.com/duskydots/seo-audit.git","type":"git","directory":"packages/seo-audit"},"_npmVersion":"11.12.1","description":"Deterministic Bun technical SEO crawling, graph analysis, rules, and Markdown reporting engine.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"zod":"^4.4.3","tldts":"^7.4.10","cheerio":"^1.2.0","playwright":"1.62.1","fast-xml-parser":"^5.10.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/seo-audit_1.0.6_1786855646876_0.12294214640444423","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@duskydots/seo-audit","version":"1.0.7","license":"MIT","repository":{"type":"git","url":"git+https://github.com/duskydots/seo-audit.git","directory":"packages/seo-audit"},"dependencies":{"cheerio":"^1.2.0","fast-xml-parser":"^5.10.1","playwright":"1.62.1","tldts":"^7.4.10","zod":"^4.4.3"},"description":"Deterministic Bun technical SEO crawling, graph analysis, rules, and Markdown reporting engine.","homepage":"https://github.com/duskydots/seo-audit#readme","bugs":{"url":"https://github.com/duskydots/seo-audit/issues"},"keywords":["seo","crawler","audit","bun","playwright"],"type":"module","exports":{".":"./src/index.ts","./reporting":"./src/reporting.ts","./internal/render-worker":"./src/domain/render/render-worker.ts"},"engines":{"bun":">=1.3.0"},"publishConfig":{"access":"public"},"scripts":{"check":"tsc --noEmit -p tsconfig.json","test":"bun test ../../tests/unit","pack:dry-run":"bun pm pack --dry-run"},"_id":"@duskydots/seo-audit@1.0.7","_integrity":"sha512-hREqwvYgKdWY36afLb3GJf3UOzxgFHvSO5aHaMMTzmJhxxSQkyCY5ErRAEvPrvvAebbUss4yvI6DyFJEKSLlZA==","_resolved":"/Users/lucas/Dev/DuskyDots/seo-audit/.release-1.0.7-nziiva/duskydots-seo-audit-1.0.7.tgz","_from":"file:/Users/lucas/Dev/DuskyDots/seo-audit/.release-1.0.7-nziiva/duskydots-seo-audit-1.0.7.tgz","_nodeVersion":"24.15.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-hREqwvYgKdWY36afLb3GJf3UOzxgFHvSO5aHaMMTzmJhxxSQkyCY5ErRAEvPrvvAebbUss4yvI6DyFJEKSLlZA==","shasum":"1455f507a2d155fa4def4e584ba8649dc2d83583","tarball":"https://registry.npmjs.org/@duskydots/seo-audit/-/seo-audit-1.0.7.tgz","fileCount":135,"unpackedSize":271376,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCID1fnXLxbS76EmnVm938GBw9MgW5lCE/JE75EIxQrX55AiBLCCWvjJLJPWG6HDxfUDiaDT++0h0cuUZlIvkaDUttTA=="}]},"_npmUser":{"name":"lucasduskydots","email":"lucas.santos@duskydots.com"},"directories":{},"maintainers":[{"name":"lucasduskydots","email":"lucas.santos@duskydots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/seo-audit_1.0.7_1786861869034_0.09077907765960425"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-14T04:13:07.764Z","modified":"2026-08-16T06:31:09.340Z","1.0.0":"2026-08-14T04:13:08.077Z","1.0.1":"2026-08-14T04:58:29.434Z","1.0.2":"2026-08-14T06:51:54.673Z","1.0.3":"2026-08-15T05:05:44.746Z","1.0.4":"2026-08-15T06:46:51.631Z","1.0.6":"2026-08-16T04:47:27.020Z","1.0.7":"2026-08-16T06:31:09.173Z"},"bugs":{"url":"https://github.com/duskydots/seo-audit/issues"},"license":"MIT","homepage":"https://github.com/duskydots/seo-audit#readme","keywords":["seo","crawler","audit","bun","playwright"],"repository":{"type":"git","url":"git+https://github.com/duskydots/seo-audit.git","directory":"packages/seo-audit"},"description":"Deterministic Bun technical SEO crawling, graph analysis, rules, and Markdown reporting engine.","maintainers":[{"name":"lucasduskydots","email":"lucas.santos@duskydots.com"}],"readme":"# @duskydots/seo-audit\n\nStrict TypeScript and Zod-validated technical SEO crawl engine for Bun. It exposes the crawler, audit schemas, graph and rule contracts, rendering comparisons, Markdown reporting data, and deterministic execution resource planning.\n\n```ts\nimport { CrawlConfigSchema, crawlSite } from \"@duskydots/seo-audit\";\n\nconst audit = await crawlSite(CrawlConfigSchema.parse({\n  seed: \"https://example.com/\",\n  outputDirectory: \"audit-example\",\n  concurrency: 8,\n  render: \"off\",\n  renderWorkers: 1,\n  maxRenderPages: 0,\n}));\n```\n\nThis package requires Bun. Browser rendering uses the package's exact Playwright version and the CLI-managed Chromium setup.\n`CrawlConfigSchema` defaults to rendering all eligible HTML pages within the render safety bound. Browser observations include bounded resource status, size and timing evidence, service-worker provenance, console events, uncaught runtime errors, lifecycle checkpoints, and raw-to-rendered SEO deltas. Set `render: \"smart\"` for cost-saving selection or `render: \"off\"` explicitly when embedding the engine without Chromium.\n","readmeFilename":"README.md"}