{"_id":"@activeset/cms-alt","_rev":"7-9f5a8a1fccd526124fcb46804fa7b42a","name":"@activeset/cms-alt","dist-tags":{"latest":"0.6.0"},"versions":{"0.1.0":{"name":"@activeset/cms-alt","version":"0.1.0","keywords":["webflow","cms","alt-text","accessibility","ollama","gemma","webp","image-compression","sharp"],"author":{"name":"ActiveSet"},"license":"MIT","_id":"@activeset/cms-alt@0.1.0","maintainers":[{"name":"rehankhurshid","email":"rehankhurshid1@gmail.com"}],"bin":{"cms-alt":"dist/cli.js"},"dist":{"shasum":"8018bcae9704ba80dbc71b4129626c535ce9b752","tarball":"https://registry.npmjs.org/@activeset/cms-alt/-/cms-alt-0.1.0.tgz","fileCount":11,"integrity":"sha512-eVTVGORwZbNoewzp/jelZF4c1QB0rL07SmOLulZkAn2J+nu0udCytSydBnvWfHlbl9NqYtlxLiECP9qGF4Neug==","signatures":[{"sig":"MEQCID0FBzU45OL4GdbhrPbeFH4uM5/2yTtTTSeieO3QDe3+AiBlObSq+70ATudL/6byYGrJAISBKe69hx+V8TqpmvlKHA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":48962},"type":"commonjs","engines":{"node":">=20"},"scripts":{"dev":"tsc --watch","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"rehankhurshid","email":"rehankhurshid1@gmail.com"},"_npmVersion":"11.6.4","description":"Webflow CMS ALT text & lossless WebP compression pipeline powered by local Ollama (Gemma 3 4B by default).","directories":{},"_nodeVersion":"23.11.0","dependencies":{"sharp":"^0.33.5","dotenv":"^16.4.5","cheerio":"^1.0.0","commander":"^12.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.3","@types/node":"^20.14.10"},"_npmOperationalInternal":{"tmp":"tmp/cms-alt_0.1.0_1776155529342_0.7212757123422828","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@activeset/cms-alt","version":"0.1.1","keywords":["webflow","cms","alt-text","accessibility","ollama","gemma","webp","image-compression","sharp"],"author":{"name":"ActiveSet"},"license":"MIT","_id":"@activeset/cms-alt@0.1.1","maintainers":[{"name":"rehankhurshid","email":"rehankhurshid1@gmail.com"}],"bin":{"cms-alt":"dist/cli.js"},"dist":{"shasum":"0c75a0548d04be2ae4c2de9bf9307d8c275c368f","tarball":"https://registry.npmjs.org/@activeset/cms-alt/-/cms-alt-0.1.1.tgz","fileCount":11,"integrity":"sha512-jrdKJX2WlDweoN1TuOZknuVYFeurgRY+TZymhFQcHBXtgoIb22naDSn9PDTVjb54UXQz2RTpBk0CIKP3np1D9g==","signatures":[{"sig":"MEYCIQCdqhc6SK+eRjvdf3273FHyPI02mGYiI4fzFgclQxSpBAIhAPEcl9tT7UfHnUfRsgf06GeXF+fg9Ok4NtMYbaPzeMeB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50890},"type":"commonjs","engines":{"node":">=20"},"scripts":{"dev":"tsc --watch","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"rehankhurshid","email":"rehankhurshid1@gmail.com"},"_npmVersion":"11.6.4","description":"Webflow CMS ALT text & lossless WebP compression pipeline powered by local Ollama (Gemma 3 4B by default).","directories":{},"_nodeVersion":"23.11.0","dependencies":{"sharp":"^0.33.5","dotenv":"^16.4.5","cheerio":"^1.0.0","commander":"^12.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.3","@types/node":"^20.14.10"},"_npmOperationalInternal":{"tmp":"tmp/cms-alt_0.1.1_1776165209942_0.8574140429891037","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@activeset/cms-alt","version":"0.2.0","keywords":["webflow","cms","alt-text","accessibility","ollama","gemma","webp","image-compression","sharp"],"author":{"name":"ActiveSet"},"license":"MIT","_id":"@activeset/cms-alt@0.2.0","maintainers":[{"name":"rehankhurshid","email":"rehankhurshid1@gmail.com"}],"bin":{"cms-alt":"dist/cli.js"},"dist":{"shasum":"651f2bd8ef9ea6016ae9fbf6c998297f0b1b17d2","tarball":"https://registry.npmjs.org/@activeset/cms-alt/-/cms-alt-0.2.0.tgz","fileCount":12,"integrity":"sha512-9S3W6LpPsqrgiFED4KVIRXSdRKZKIaLCKdP+V/b4sJq0amu4iomFIejayH1uxmMQamJo2YTGsyUpq1RFqtRLkw==","signatures":[{"sig":"MEYCIQC0r8vnMdJljOA69Js5eZQsuSYJw5Mx6eupkKRBXmPbYQIhANwE3n9I45m6HCTiGyXu/sE7/oRCFmuCIfCZ9m/iYm4I","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59987},"type":"commonjs","engines":{"node":">=20"},"scripts":{"dev":"tsc --watch","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"rehankhurshid","email":"rehankhurshid1@gmail.com"},"_npmVersion":"11.6.4","description":"Webflow CMS ALT text & lossless WebP compression pipeline powered by local Ollama (Gemma 3 4B by default).","directories":{},"_nodeVersion":"23.11.0","dependencies":{"sharp":"^0.33.5","dotenv":"^16.4.5","cheerio":"^1.0.0","commander":"^12.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.3","@types/node":"^20.14.10"},"_npmOperationalInternal":{"tmp":"tmp/cms-alt_0.2.0_1776166151823_0.7180250711694205","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@activeset/cms-alt","version":"0.3.0","keywords":["webflow","cms","alt-text","accessibility","ollama","gemma","webp","image-compression","sharp"],"author":{"name":"ActiveSet"},"license":"MIT","_id":"@activeset/cms-alt@0.3.0","maintainers":[{"name":"rehankhurshid","email":"rehankhurshid1@gmail.com"}],"bin":{"cms-alt":"dist/cli.js"},"dist":{"shasum":"deae1d5c5bafe79ddabf5d6be88251d36d8d9b3e","tarball":"https://registry.npmjs.org/@activeset/cms-alt/-/cms-alt-0.3.0.tgz","fileCount":12,"integrity":"sha512-fa1r8jf9h65ZObWUTVfnLh8VELu9NXdvwvqMybnk4HFviXZXJV7ses7ytCrAQhWLe0YQBqG3gF5hQa6B/+7tig==","signatures":[{"sig":"MEYCIQD1ZCtPqlx0BgTxh9PuzJXzboQO+4iKNcpW9FkGFBPTBwIhAMq86X5pWrDYSzq9Fj7XdVFwR9pBtwLfFy4Zq/Ym3NTU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63509},"type":"commonjs","engines":{"node":">=20"},"scripts":{"dev":"tsc --watch","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"rehankhurshid","email":"rehankhurshid1@gmail.com"},"_npmVersion":"11.6.4","description":"Webflow CMS ALT text & lossless WebP compression pipeline powered by local Ollama (Gemma 3 4B by default).","directories":{},"_nodeVersion":"23.11.0","dependencies":{"sharp":"^0.33.5","dotenv":"^16.4.5","cheerio":"^1.0.0","commander":"^12.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.3","@types/node":"^20.14.10"},"_npmOperationalInternal":{"tmp":"tmp/cms-alt_0.3.0_1776167896055_0.4971717758399301","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@activeset/cms-alt","version":"0.4.0","keywords":["webflow","cms","alt-text","accessibility","ollama","gemma","webp","image-compression","sharp"],"author":{"name":"ActiveSet"},"license":"MIT","_id":"@activeset/cms-alt@0.4.0","maintainers":[{"name":"rehankhurshid","email":"rehankhurshid1@gmail.com"}],"bin":{"cms-alt":"dist/cli.js"},"dist":{"shasum":"aa63e804f5ed6bdf88514178b914be79d87dd173","tarball":"https://registry.npmjs.org/@activeset/cms-alt/-/cms-alt-0.4.0.tgz","fileCount":12,"integrity":"sha512-xOv4yrzNp+PV1VxW6Xcgc/uCe2TmAkBqJHGgB+yo8wk2MFRDyqpPlsSpovT9JMvlpT7nnfzwg4HDtdTRE0rMeA==","signatures":[{"sig":"MEUCIEEXQxTmBsRP0KGn9w0EVlCTjDn61ipS8NjjIiqyZ8zrAiEA0FweIZAuhEu6R/ZeaGDdmO4KvaDCDw1A+ueWPEYqoc8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":70478},"type":"commonjs","engines":{"node":">=20"},"scripts":{"dev":"tsc --watch","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"rehankhurshid","email":"rehankhurshid1@gmail.com"},"_npmVersion":"11.6.4","description":"Webflow CMS ALT text & lossless WebP compression pipeline powered by local Ollama (Gemma 3 4B by default).","directories":{},"_nodeVersion":"23.11.0","dependencies":{"sharp":"^0.33.5","dotenv":"^16.4.5","cheerio":"^1.0.0","commander":"^12.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.3","@types/node":"^20.14.10"},"_npmOperationalInternal":{"tmp":"tmp/cms-alt_0.4.0_1776168137482_0.9854571061075159","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@activeset/cms-alt","version":"0.5.0","keywords":["webflow","cms","alt-text","accessibility","ollama","gemma","webp","image-compression","sharp"],"author":{"name":"ActiveSet"},"license":"MIT","_id":"@activeset/cms-alt@0.5.0","maintainers":[{"name":"rehankhurshid","email":"rehankhurshid1@gmail.com"}],"bin":{"cms-alt":"dist/cli.js"},"dist":{"shasum":"70ca1d898f6154ab70aa9ada50d071d305409986","tarball":"https://registry.npmjs.org/@activeset/cms-alt/-/cms-alt-0.5.0.tgz","fileCount":12,"integrity":"sha512-c3upSo/U7C3/6JXavS5W78SwaZQ2cBb1vB0bML/ztwpg8h/GsNKBb8UkL9BN/yuw9xeLgG9uu7MHkTi/NWOiqw==","signatures":[{"sig":"MEYCIQCJWe9Osifq6xZI4PkzOaWXFCov0oGjnDi1ulxtqRkTowIhAKcsmHB1VWDwFq7bFtOvd2anaSPGuxAi0tkDlCzHQm99","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":71371},"type":"commonjs","engines":{"node":">=20"},"scripts":{"dev":"tsc --watch","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"rehankhurshid","email":"rehankhurshid1@gmail.com"},"_npmVersion":"11.6.4","description":"Webflow CMS ALT text & lossless WebP compression pipeline powered by local Ollama (Gemma 3 4B by default).","directories":{},"_nodeVersion":"23.11.0","dependencies":{"sharp":"^0.33.5","dotenv":"^16.4.5","cheerio":"^1.0.0","commander":"^12.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.3","@types/node":"^20.14.10"},"_npmOperationalInternal":{"tmp":"tmp/cms-alt_0.5.0_1776168656822_0.1002899431365305","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@activeset/cms-alt","version":"0.6.0","description":"Webflow CMS ALT text & lossless WebP compression pipeline powered by local Ollama (Gemma 3 4B by default).","keywords":["webflow","cms","alt-text","accessibility","ollama","gemma","webp","image-compression","sharp"],"license":"MIT","author":{"name":"ActiveSet"},"type":"commonjs","bin":{"cms-alt":"dist/cli.js"},"engines":{"node":">=20"},"scripts":{"build":"tsc","dev":"tsc --watch","prepublishOnly":"npm run build"},"dependencies":{"cheerio":"^1.0.0","commander":"^12.1.0","dotenv":"^16.4.5","sharp":"^0.33.5"},"devDependencies":{"@types/node":"^20.14.10","typescript":"^5.5.3"},"publishConfig":{"access":"public"},"_id":"@activeset/cms-alt@0.6.0","_nodeVersion":"23.11.0","_npmVersion":"11.6.4","dist":{"integrity":"sha512-h4u9MC6rig5tZk8tVgvS0pz4Y/uQf6EJsgDBNn5UEUU3I73+BVOjdDSqsywYJ6g27PvDAX83sA66iX52d88+8g==","shasum":"8ff0b063128adb73199474b5e9a1e9a721b2451a","tarball":"https://registry.npmjs.org/@activeset/cms-alt/-/cms-alt-0.6.0.tgz","fileCount":12,"unpackedSize":74632,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCNpgaZzE8hXNq6hK9BUM2nEWvTx0CYZUhMjAF4/UpvhAIgB3zwejAJkLjdmc90WOIdrcPoH4mY2a1q08OfRvs58RY="}]},"_npmUser":{"name":"rehankhurshid","email":"rehankhurshid1@gmail.com"},"directories":{},"maintainers":[{"name":"rehankhurshid","email":"rehankhurshid1@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cms-alt_0.6.0_1776248494408_0.9008661707151502"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-14T08:32:09.247Z","modified":"2026-04-15T10:21:34.752Z","0.1.0":"2026-04-14T08:32:09.467Z","0.1.1":"2026-04-14T11:13:30.069Z","0.2.0":"2026-04-14T11:29:11.964Z","0.3.0":"2026-04-14T11:58:16.191Z","0.4.0":"2026-04-14T12:02:17.687Z","0.5.0":"2026-04-14T12:10:57.006Z","0.6.0":"2026-04-15T10:21:34.571Z"},"author":{"name":"ActiveSet"},"license":"MIT","keywords":["webflow","cms","alt-text","accessibility","ollama","gemma","webp","image-compression","sharp"],"description":"Webflow CMS ALT text & lossless WebP compression pipeline powered by local Ollama (Gemma 3 4B by default).","maintainers":[{"name":"rehankhurshid","email":"rehankhurshid1@gmail.com"}],"readme":"# @activeset/cms-alt\n\nWebflow CMS ALT text & lossless WebP compression pipeline, powered by local Ollama (Gemma 3 4B by default). No API keys. No cloud AI.\n\n## Quick start\n\n```bash\n# 1. Pull the local model (one-time)\nollama pull gemma3:4b\n\n# 2. Run the full pipeline\nexport WEBFLOW_API_TOKEN=your_token\nnpx @activeset/cms-alt run --site <siteId> --ai --compress --publish\n```\n\nThe UI at your admin dashboard generates the exact command for you — pick collections & fields, copy, paste, go.\n\n## Commands\n\n```\ncms-alt scan       — list CMS collections + image/richtext field counts\ncms-alt export     — dump every image entry to CSV\ncms-alt generate   — fill empty new_alt cells via Ollama\ncms-alt compress   — re-encode to lossless WebP + upload to Webflow Assets\ncms-alt import     — push CSV changes back to Webflow\ncms-alt publish    — publish changed items\ncms-alt run        — full pipeline: export → generate → compress → import → publish\n```\n\n## Auth\n\nSet `WEBFLOW_API_TOKEN` in `.env.local` (or pass `--token`).\nSet `WEBFLOW_SITE_ID` (or pass `--site`).\n\n## Ollama config\n\n- Host: `OLLAMA_HOST` env or `--ollama-host` (default `http://localhost:11434`)\n- Model: `OLLAMA_MODEL` env or `--model` (default `gemma3:4b`)\n\n## Requirements\n\n- Node.js ≥ 20\n- [Ollama](https://ollama.com) running locally\n- Any multimodal model pulled (Gemma 3 4B recommended)\n\n## License\n\nMIT\n","readmeFilename":"README.md"}