{"_id":"@ariesfish/feedloom","_rev":"8-47edfb1bd5284f957f998e8fbe8f1966","name":"@ariesfish/feedloom","dist-tags":{"latest":"0.2.2"},"versions":{"0.1.0":{"name":"@ariesfish/feedloom","version":"0.1.0","author":{"name":"ariesfish"},"license":"MIT","_id":"@ariesfish/feedloom@0.1.0","maintainers":[{"name":"ariesfish","email":"zzlyldy@gmail.com"}],"homepage":"https://github.com/ariesfish/feedloom#readme","bugs":{"url":"https://github.com/ariesfish/feedloom/issues"},"bin":{"feedloom":"dist/cli.js"},"dist":{"shasum":"2bf6f63e9e8a88c91143ff35c3b978d5ad39d4e2","tarball":"https://registry.npmjs.org/@ariesfish/feedloom/-/feedloom-0.1.0.tgz","fileCount":5,"integrity":"sha512-mL/PXIGeDqVoLex2FdMC+OpNP3Tq0XkYv0BTBiSbXmlBc3mCq+xfXgyuB9Xxb0Bud81YF6A4uBpgeZoguc5FJA==","signatures":[{"sig":"MEQCIH6HUCBZc6zT0Lw30ikN3x/YuqiogLZv+w41Y9fFIWlSAiAb+Be8v0BCDjLgeuIguuEcOaftuMUYhqADZAGonFsZ+w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ariesfish%2ffeedloom@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":74655},"type":"module","engines":{"node":">=24"},"gitHead":"543ce5748fe067e9a697c04c44d1730cdff352b1","scripts":{"dev":"tsx src/cli.ts","test":"vitest run","build":"tsup src/cli.ts --format esm --dts --clean","typecheck":"tsc --noEmit","prepublishOnly":"npm run typecheck && npm test && npm run build"},"_npmUser":{"name":"ariesfish","email":"zzlyldy@gmail.com"},"repository":{"url":"git+ssh://git@github.com/ariesfish/feedloom.git","type":"git"},"_npmVersion":"11.11.0","description":"Archive long-form web content as clean Markdown with local assets.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"defuddle":"^0.18.1","linkedom":"^0.18.12","turndown":"^7.2.4","commander":"^14.0.0","patchright":"^1.59.4","@iarna/toml":"^2.2.5","fast-xml-parser":"^5.7.2","turndown-plugin-gfm":"^1.0.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.1","vitest":"^3.2.4","typescript":"^5.9.3","@types/node":"^24.0.0","@types/turndown":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/feedloom_0.1.0_1777455628610_0.7121417605337668","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@ariesfish/feedloom","version":"0.1.1","author":{"name":"ariesfish"},"license":"MIT","_id":"@ariesfish/feedloom@0.1.1","maintainers":[{"name":"ariesfish","email":"zzlyldy@gmail.com"}],"homepage":"https://github.com/ariesfish/feedloom#readme","bugs":{"url":"https://github.com/ariesfish/feedloom/issues"},"bin":{"feedloom":"dist/cli.js"},"dist":{"shasum":"93bc8695655172df93e08030b96ecd953221f81b","tarball":"https://registry.npmjs.org/@ariesfish/feedloom/-/feedloom-0.1.1.tgz","fileCount":6,"integrity":"sha512-xOngRMMHvcbFR7h0m92eVVdCx7PEBRGgfJA+7yQCNBnQO1cBObgw/Sd93VMmA//NHqmZe+eG+J43olkjk65OKw==","signatures":[{"sig":"MEQCIF87JtkCsfXQNbswwZ+QWC8PCbTsrVwVKk3uefXUGTlaAiBLnsW/N8+aYhu28tGH0gpuThTcDCQ5uiFmEhmv8OMhpw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ariesfish%2ffeedloom@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":79177},"type":"module","engines":{"node":">=24"},"gitHead":"465a16ecf287b64b472d29e1de50937243f681f1","scripts":{"dev":"tsx src/cli.ts","test":"vitest run","build":"tsup src/cli.ts --format esm --dts --clean","typecheck":"tsc --noEmit","prepublishOnly":"npm run typecheck && npm test && npm run build"},"_npmUser":{"name":"ariesfish","email":"zzlyldy@gmail.com"},"repository":{"url":"git+ssh://git@github.com/ariesfish/feedloom.git","type":"git"},"_npmVersion":"11.11.0","description":"Archive long-form web content as clean Markdown with local assets.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"defuddle":"^0.18.1","linkedom":"^0.18.12","turndown":"^7.2.4","commander":"^14.0.0","patchright":"^1.59.4","@iarna/toml":"^2.2.5","fast-xml-parser":"^5.7.2","turndown-plugin-gfm":"^1.0.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.1","vitest":"^3.2.4","typescript":"^5.9.3","@types/node":"^24.0.0","@types/turndown":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/feedloom_0.1.1_1777470355349_0.6335842497585351","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@ariesfish/feedloom","version":"0.1.2","author":{"name":"ariesfish"},"license":"MIT","_id":"@ariesfish/feedloom@0.1.2","maintainers":[{"name":"ariesfish","email":"zzlyldy@gmail.com"}],"homepage":"https://github.com/ariesfish/feedloom#readme","bugs":{"url":"https://github.com/ariesfish/feedloom/issues"},"bin":{"feedloom":"dist/cli.js"},"dist":{"shasum":"01f846b0287951f368ff160a04d32d5e5038c169","tarball":"https://registry.npmjs.org/@ariesfish/feedloom/-/feedloom-0.1.2.tgz","fileCount":6,"integrity":"sha512-FKyTE4rtwKiUaXs4IR96lEz9ySbp9UqBYUcfTuNxU6zWqCbClOci1ou/LkIkEQWPtwM0e/uivDjInXN9OoCVGQ==","signatures":[{"sig":"MEYCIQDoHFW1a6bOgwKxNF7IrYs43FNT7/tcurqbayjKviFcRwIhAKezSPYPiPJtOiSk8VP1UFefW9CI/MBC6w/7O+qnjqf9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ariesfish%2ffeedloom@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":81371},"type":"module","engines":{"node":">=24"},"gitHead":"f1739f1d9a7eb1d78ef6ca07db61ba81993de094","scripts":{"dev":"tsx src/cli.ts","test":"vitest run","build":"tsup src/cli.ts --format esm --dts --clean","typecheck":"tsc --noEmit","prepublishOnly":"npm run typecheck && npm test && npm run build"},"_npmUser":{"name":"ariesfish","email":"zzlyldy@gmail.com"},"repository":{"url":"git+ssh://git@github.com/ariesfish/feedloom.git","type":"git"},"_npmVersion":"11.11.0","description":"Archive long-form web content as clean Markdown with local assets.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"defuddle":"^0.18.1","linkedom":"^0.18.12","turndown":"^7.2.4","commander":"^14.0.0","patchright":"^1.59.4","@iarna/toml":"^2.2.5","fast-xml-parser":"^5.7.2","turndown-plugin-gfm":"^1.0.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.1","vitest":"^3.2.4","typescript":"^5.9.3","@types/node":"^24.0.0","@types/turndown":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/feedloom_0.1.2_1777474257927_0.6390111944283652","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@ariesfish/feedloom","version":"0.1.3","author":{"name":"ariesfish"},"license":"MIT","_id":"@ariesfish/feedloom@0.1.3","maintainers":[{"name":"ariesfish","email":"zzlyldy@gmail.com"}],"homepage":"https://github.com/ariesfish/feedloom#readme","bugs":{"url":"https://github.com/ariesfish/feedloom/issues"},"bin":{"feedloom":"dist/cli.js"},"dist":{"shasum":"ca30d2e3c4ce4f1d34cc1b3a7f83d76bef0aa798","tarball":"https://registry.npmjs.org/@ariesfish/feedloom/-/feedloom-0.1.3.tgz","fileCount":11,"integrity":"sha512-K4xC+wgSpxHDdaRVfs3Qtkq3OVi8mEpTRMhUaQtpq3wWFb7x0bcPS7vTI9VIzj4ZeoSl+1bHuQfTYVZngPrj8A==","signatures":[{"sig":"MEUCIFtu1j5FZkM9UFlmwTOQtB67/Xm8QFOgrZbWRsQGTCIoAiEA0eJ/rPv3LAr0sY3GvceoehD23mK696vfkyRTUevRauM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ariesfish%2ffeedloom@0.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":100614},"type":"module","engines":{"node":">=24"},"gitHead":"10d20247b916e72c413ab522eccae36a7b4e30d3","scripts":{"dev":"tsx src/cli.ts","test":"vitest run","build":"tsup src/cli.ts --format esm --dts --clean && rm -rf dist/site-rules && cp -R src/site-rules dist/site-rules","typecheck":"tsc --noEmit","prepublishOnly":"npm run typecheck && npm test && npm run build"},"_npmUser":{"name":"ariesfish","email":"zzlyldy@gmail.com"},"repository":{"url":"git+ssh://git@github.com/ariesfish/feedloom.git","type":"git"},"_npmVersion":"11.11.0","description":"Archive long-form web content as clean Markdown with local assets.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"defuddle":"^0.18.1","linkedom":"^0.18.12","turndown":"^7.2.4","commander":"^14.0.0","patchright":"^1.59.4","@iarna/toml":"^2.2.5","fast-xml-parser":"^5.7.2","turndown-plugin-gfm":"^1.0.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.1","vitest":"^3.2.4","typescript":"^5.9.3","@types/node":"^24.0.0","@types/turndown":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/feedloom_0.1.3_1778317219573_0.44540648361892354","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@ariesfish/feedloom","version":"0.1.4","author":{"name":"ariesfish"},"license":"MIT","_id":"@ariesfish/feedloom@0.1.4","maintainers":[{"name":"ariesfish","email":"zzlyldy@gmail.com"}],"homepage":"https://github.com/ariesfish/feedloom#readme","bugs":{"url":"https://github.com/ariesfish/feedloom/issues"},"bin":{"feedloom":"dist/cli.js"},"dist":{"shasum":"577139425e7e16515b5fbb0322cf219e5258b954","tarball":"https://registry.npmjs.org/@ariesfish/feedloom/-/feedloom-0.1.4.tgz","fileCount":12,"integrity":"sha512-7K9LECZAX7FCNHE5Xd2Yc4d0+7GbBjyjKfX8gdT41002xeenbQzZrSE/WTneYLPyiusGRrfFUKFrZEsa9EHz9A==","signatures":[{"sig":"MEYCIQD4hR4DeH1aGHqfQRYV1jnxlm9I9TD4hcYo1YapN4g86AIhANOMxMox8WAUEBsrsVVbpS2tetI8HKdV9NV3Zayrq9NQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ariesfish%2ffeedloom@0.1.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":352957},"type":"module","engines":{"node":">=24"},"gitHead":"66199ca5fd1f8b9c2e8282238d2ffe0a271bea01","scripts":{"dev":"tsx src/cli.ts","test":"vitest run","build":"tsup src/cli.ts --format esm --dts --clean && rm -rf dist/site-rules && cp -R src/site-rules dist/site-rules","typecheck":"tsc --noEmit","prepublishOnly":"npm run typecheck && npm test && npm run build"},"_npmUser":{"name":"ariesfish","email":"zzlyldy@gmail.com"},"repository":{"url":"git+ssh://git@github.com/ariesfish/feedloom.git","type":"git"},"_npmVersion":"11.11.0","description":"Archive long-form web content as clean Markdown with local assets.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"defuddle":"^0.18.1","linkedom":"^0.18.12","turndown":"^7.2.4","commander":"^14.0.0","patchright":"^1.59.4","@iarna/toml":"^2.2.5","fast-xml-parser":"^5.7.2","turndown-plugin-gfm":"^1.0.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.1","vitest":"^3.2.4","typescript":"^5.9.3","@types/node":"^24.0.0","@types/turndown":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/feedloom_0.1.4_1778339965560_0.6127935558499265","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@ariesfish/feedloom","version":"0.2.0","author":{"name":"ariesfish"},"license":"MIT","_id":"@ariesfish/feedloom@0.2.0","maintainers":[{"name":"ariesfish","email":"zzlyldy@gmail.com"}],"homepage":"https://github.com/ariesfish/feedloom#readme","bugs":{"url":"https://github.com/ariesfish/feedloom/issues"},"bin":{"feedloom":"dist/cli.js"},"dist":{"shasum":"01314a41695f7cb24eaf0bd7ad10c431bcce6a3e","tarball":"https://registry.npmjs.org/@ariesfish/feedloom/-/feedloom-0.2.0.tgz","fileCount":14,"integrity":"sha512-gHjGj+K/I/wIok5OzuloIEGeGYX+osqlsyKNGzBWwZWVyH/H5vWNoVRgr3Z4R1Ka/eFzvrX/jWMe85LKP3msgw==","signatures":[{"sig":"MEUCIQDMkkTx4RJnyxETjY2j41egTk4+/ph5nj6DSsCju0kCxAIgRZv2VhkKAmzRRUHFXV6+c6aTfCFHg6rdEdt9oM3Zzd4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ariesfish%2ffeedloom@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":354037},"type":"module","engines":{"node":">=24"},"gitHead":"7bac94d8853f636d4990e86fb2c66364cb2d54f0","scripts":{"dev":"tsx src/cli.ts","test":"vitest run","build":"tsup src/cli.ts --format esm --dts --clean && rm -rf dist/site-rules && cp -R src/site-rules dist/site-rules","typecheck":"tsc --noEmit","prepublishOnly":"npm run typecheck && npm test && npm run build"},"_npmUser":{"name":"ariesfish","email":"zzlyldy@gmail.com"},"repository":{"url":"git+ssh://git@github.com/ariesfish/feedloom.git","type":"git"},"_npmVersion":"11.11.0","description":"Archive long-form web content as clean Markdown with local assets.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"defuddle":"^0.18.1","linkedom":"^0.18.12","turndown":"^7.2.4","commander":"^14.0.0","patchright":"^1.59.4","@iarna/toml":"^2.2.5","fast-xml-parser":"^5.7.2","turndown-plugin-gfm":"^1.0.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.1","vitest":"^3.2.4","typescript":"^5.9.3","@types/node":"^24.0.0","@types/turndown":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/feedloom_0.2.0_1778428571569_0.5243272678463444","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@ariesfish/feedloom","version":"0.2.1","author":{"name":"ariesfish"},"license":"MIT","_id":"@ariesfish/feedloom@0.2.1","maintainers":[{"name":"ariesfish","email":"zzlyldy@gmail.com"}],"homepage":"https://github.com/ariesfish/feedloom#readme","bugs":{"url":"https://github.com/ariesfish/feedloom/issues"},"bin":{"feedloom":"dist/cli.js"},"dist":{"shasum":"e651768e821652e9738574e0648f56194500aae9","tarball":"https://registry.npmjs.org/@ariesfish/feedloom/-/feedloom-0.2.1.tgz","fileCount":14,"integrity":"sha512-9XrgoHGU55mkHJESS3EYIsRe/JYWw3NC1BrTZeyz05pBkRzL/fwbPoCES3sJHNHYpWhYde4utNs5y+XR/PGKKA==","signatures":[{"sig":"MEYCIQDGAYGQ0vCOG8G27jU1V13XHFfG1l8XIXvNEjCi6zOKlQIhAMj5Ujy5dgB57xZpoGN0vIA9BrF2/q3iH+evoNcjCPUY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ariesfish%2ffeedloom@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":354163},"type":"module","engines":{"node":">=24"},"gitHead":"a0333d6f1b3c8aa4943c6cb42313d5f54e8db01a","scripts":{"dev":"tsx src/cli.ts","test":"vitest run","build":"tsup src/cli.ts --format esm --dts --clean && rm -rf dist/site-rules && cp -R src/site-rules dist/site-rules","typecheck":"tsc --noEmit","prepublishOnly":"npm run typecheck && npm test && npm run build"},"_npmUser":{"name":"ariesfish","email":"zzlyldy@gmail.com"},"repository":{"url":"git+ssh://git@github.com/ariesfish/feedloom.git","type":"git"},"_npmVersion":"11.11.0","description":"Archive long-form web content as clean Markdown with local assets.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"defuddle":"^0.18.1","linkedom":"^0.18.12","turndown":"^7.2.4","commander":"^14.0.0","patchright":"^1.59.4","@iarna/toml":"^2.2.5","fast-xml-parser":"^5.7.2","turndown-plugin-gfm":"^1.0.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.1","vitest":"^3.2.4","typescript":"^5.9.3","@types/node":"^24.0.0","@types/turndown":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/feedloom_0.2.1_1778464779617_0.2227864580484138","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@ariesfish/feedloom","version":"0.2.2","type":"module","author":{"name":"ariesfish"},"license":"MIT","description":"Archive long-form web content as clean Markdown with local assets.","homepage":"https://github.com/ariesfish/feedloom#readme","repository":{"type":"git","url":"git+ssh://git@github.com/ariesfish/feedloom.git"},"bugs":{"url":"https://github.com/ariesfish/feedloom/issues"},"bin":{"feedloom":"dist/cli.js"},"scripts":{"dev":"tsx src/cli.ts","build":"tsup src/cli.ts --format esm --dts --clean && rm -rf dist/site-rules && cp -R src/site-rules dist/site-rules","typecheck":"tsc --noEmit","test":"vitest run","prepublishOnly":"npm run typecheck && npm test && npm run build"},"dependencies":{"@iarna/toml":"^2.2.5","commander":"^14.0.0","defuddle":"^0.18.1","fast-xml-parser":"^5.7.2","linkedom":"^0.18.12","patchright":"^1.59.4","turndown":"^7.2.4","turndown-plugin-gfm":"^1.0.2"},"devDependencies":{"@types/node":"^24.0.0","@types/turndown":"^5.0.6","tsup":"^8.5.1","tsx":"^4.21.0","typescript":"^5.9.3","vitest":"^3.2.4"},"engines":{"node":">=24"},"gitHead":"b1671d26e0273913952c212ca2e3edace96234b1","_id":"@ariesfish/feedloom@0.2.2","_nodeVersion":"24.14.1","_npmVersion":"11.11.0","dist":{"integrity":"sha512-atVEdCVPCIjeZl8FEqKpMVYaU8Abe8wS+TPvFSGl75NUofLjjdAsw1qX0+VQpZ271+waJS6KqSdwyDdJSJQPBA==","shasum":"63a0608179f55c388293a9911aca9d44c6111145","tarball":"https://registry.npmjs.org/@ariesfish/feedloom/-/feedloom-0.2.2.tgz","fileCount":15,"unpackedSize":193438,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ariesfish%2ffeedloom@0.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGm/8BBN843Cb3UHl7oMOF/HzNGo8ejPrKo6fJDMk6g8AiEA7oBY1jGA4DFK4jutFDG2KrOM8jMCm9Wrk15xUsLUnAg="}]},"_npmUser":{"name":"ariesfish","email":"zzlyldy@gmail.com"},"directories":{},"maintainers":[{"name":"ariesfish","email":"zzlyldy@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/feedloom_0.2.2_1778556131541_0.12125602232791377"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-29T09:40:28.372Z","modified":"2026-05-12T03:22:11.966Z","0.1.0":"2026-04-29T09:40:28.762Z","0.1.1":"2026-04-29T13:45:55.473Z","0.1.2":"2026-04-29T14:50:58.054Z","0.1.3":"2026-05-09T09:00:19.723Z","0.1.4":"2026-05-09T15:19:25.777Z","0.2.0":"2026-05-10T15:56:11.730Z","0.2.1":"2026-05-11T01:59:39.795Z","0.2.2":"2026-05-12T03:22:11.689Z"},"bugs":{"url":"https://github.com/ariesfish/feedloom/issues"},"author":{"name":"ariesfish"},"license":"MIT","homepage":"https://github.com/ariesfish/feedloom#readme","repository":{"type":"git","url":"git+ssh://git@github.com/ariesfish/feedloom.git"},"description":"Archive long-form web content as clean Markdown with local assets.","maintainers":[{"name":"ariesfish","email":"zzlyldy@gmail.com"}],"readme":"<div align=\"center\">\n  <img src=\"assets/logo.png\" alt=\"Feedloom logo\" width=\"160\" style=\"display: block; margin: 0 auto;\">\n  <h1 style=\"margin-top: 8px; margin-bottom: 8px;\">Feedloom</h1>\n  <p><strong>快速剪藏优质内容</strong></p>\n  <p><strong>支持公众号、小红书、知乎、X、YouTube 等各种网站</strong></p>\n  <p>\n    <a href=\"https://www.npmjs.com/package/@ariesfish/feedloom\"><img alt=\"npm version\" src=\"https://img.shields.io/npm/v/@ariesfish/feedloom\"></a>\n    <img alt=\"Node 24 or newer\" src=\"https://img.shields.io/badge/node-24%2B-339933\">\n    <img alt=\"MIT license\" src=\"https://img.shields.io/badge/license-MIT-blue\">\n  </p>\n  <p><a href=\"README.en.md\">English</a></p>\n</div>\n\nFeedloom 是一个 Agent 原生的网页剪藏工具。给它一篇文章、一组链接或一个 RSS 订阅，它会为你提取正文、清理页面噪音、下载图片，并生成适合放进个人知识库、Obsidian、离线阅读目录的完整 Markdown 文档。\n\n它适合这些场景：\n\n- 看到一篇值得收藏的文章，不想只保留一个以后可能失效的链接。\n- 把博客、公众号、知乎、小红书、X、YouTube 等各种网页内容收藏到自己的知识库。\n- 支持批量剪藏，免去一篇篇复制粘贴。\n- 保存文章时同时保留本地图片，方便离线阅读和迁移。\n\n## 主要能力\n\n- 把文章保存为带 YAML frontmatter 的 Markdown。\n- 自动下载页面图片，并改写为本地 Markdown 图片引用。\n- 支持直接输入 URL、读取批量链接列表和 RSS 订阅。\n- 支持静态抓取、浏览器渲染抓取、stealth 模式，适应需要 JavaScript 渲染的页面。\n- 内置常见站点规则，例如微信公众号、知乎、小红书、X、YouTube 等。\n- 可选使用本机登录状态，处理需要登录或反爬较强的页面。\n\n## 安装要求\n\n- Node.js >= 24\n- npm\n- 使用浏览器抓取时需要 Patchright Chromium；`doctor` 命令可以自动检查并安装。\n\n## 直接运行\n\n无需安装，直接用 `npx`：\n\n```bash\nnpx -y @ariesfish/feedloom \"https://example.com/article\"\n```\n\n也可以全局安装：\n\n```bash\nnpm install -g @ariesfish/feedloom\nfeedloom \"https://example.com/article\"\n```\n\n检查并修复浏览器运行环境：\n\n```bash\nnpx -y @ariesfish/feedloom doctor\n```\n\n如果缺少 Patchright Chromium，`doctor` 会自动执行 `npx patchright install chromium`。\n\n## 快速开始\n\n保存单篇文章：\n\n```bash\nnpx -y @ariesfish/feedloom \"https://example.com/article\"\n```\n\n指定输出目录：\n\n```bash\nnpx -y @ariesfish/feedloom --output-dir ./outputs \"https://example.com/article\"\n```\n\n批量保存 URL 列表：\n\n```bash\nnpx -y @ariesfish/feedloom urls.md --limit 10\n```\n\n`urls.md` 可以是普通链接列表，也可以是 Markdown checklist：\n\n```markdown\n- [ ] https://example.com/a\n- [ ] https://example.com/b\n```\n\n成功处理后，对应项会被标记为完成：\n\n```markdown\n- [x] https://example.com/a\n```\n\n保存 RSS 订阅中的文章：\n\n```bash\nnpx -y @ariesfish/feedloom \"https://example.com/feed.xml\" --source-kind rss-feed --since 2026-01-01\n```\n\n处理需要 JavaScript 渲染的页面：\n\n```bash\nnpx -y @ariesfish/feedloom \"https://example.com/article\" --fetch-mode browser --wait-ms 4000 --scroll-to-bottom\n```\n\n普通模式失败时，再尝试 `stealth` 模式：\n\n```bash\nnpx -y @ariesfish/feedloom \"https://example.com/article\" --fetch-mode stealth --solve-cloudflare\n```\n\n## 输出长什么样\n\nFeedloom 默认写入 `clippings/`。生成的 Markdown 大致如下：\n\n```markdown\n---\nsource: \"https://example.com/article\"\nauthor: \"Author Name\"\ncreated: \"2026-04-29\"\n---\n\n# Article Title\n\nArticle content...\n```\n\n## 抓取模式怎么选\n\n| 模式 | 适合情况 |\n| --- | --- |\n| `auto` | 默认模式。先尝试静态抓取，内容不足时再回退到浏览器/stealth。 |\n| `static` | 页面本身已服务端渲染，不需要 JavaScript。速度最快。 |\n| `browser` | 页面需要 JavaScript 渲染、等待元素、点击按钮或滚动加载。 |\n| `stealth` | 普通浏览器模式仍失败，站点有更强的反爬检测。 |\n\n建议先用默认 `auto`。只有结果不完整时，再显式选择 `browser` 或 `stealth`。\n\n## 自定义规则\n\nFeedloom 内置 TOML 站点规则，用于处理常见的动态页面或结构化站点。你也可以把自己的私有规则放在包外，并在运行时指定：\n\n```bash\nnpx -y @ariesfish/feedloom \"https://example.com/article\" --site-rules-dir ./site-rules\n```\n\n私有规则适合为自己的常用网站做精准适配。\n\n## Agent Skill\n\nFeedloom 随包提供 `skills/feedloom`，支持 `skills` CLI 的 Agent 可以直接安装这个网页归档能力：\n\n```bash\nnpx skills add @ariesfish/feedloom --skill feedloom\n```\n\n全局安装到支持的 Agent：\n\n```bash\nnpx skills add @ariesfish/feedloom --skill feedloom --global\n```\n\n## 使用建议\n\n- 大批量归档前，先用 `--limit` 跑几篇确认效果。\n- 静态博客和新闻站通常用默认模式即可；动态站点再尝试 `--fetch-mode browser`。\n- 不要把 Feedloom 当成高并发爬虫。它更适合个人剪藏使用。\n- 遵守 robots.txt、网站服务条款、版权规则和访问频率限制。\n\n## 致谢\n\nFeedloom 受到这些优秀项目启发：\n\n- [Defuddle](https://github.com/kepano/defuddle)：可读正文抽取思路。\n- [Patchright](https://github.com/Kaliiiiiiiiii-Vinyzu/patchright)：浏览器自动化和更真实的页面访问能力。\n- [Scrapling](https://github.com/D4Vinci/Scrapling)：更稳健的抓取 fallback 思路。\n\n## License\n\nMIT License\n","readmeFilename":"README.md"}