Amazon Modern Widgets (AMW) replaces the dated Amazon affiliate widgets with fast,
responsive product cards. A small Node.js server queries the Amazon Creators API with
your partner tag and caches the results in Redis. A single widget.js turns
<div class="amw" id="ASIN"> placeholders into clickable cards on any website or CMS
(Ghost, WordPress, Drupal, static sites…), with lazy loading, seven languages and
SEO-friendly JSON-LD.
📖 Full documentation: https://ltoinel.github.io/amw/
Credentials are passed as environment variables: copy
.env.example to .env and fill in your Creators API credentials
(all variables).
Docker (port 9080, API under /item):
docker run -d --name amw -p 127.0.0.1:9080:9080 --env-file .env \
ltoinel/amw:latest # or ghcr.io/ltoinel/amw:latest
curl http://localhost:9080/item/healthFrom a clone, ./start.sh runs everything (./start.sh --help):
./start.sh docker # AMW + Redis in Docker, http://localhost:9080/item
./start.sh dev # development container with hot reload
./start.sh # local Node.js 26 run with config/production.yml
./start.sh stop # stop the Docker stacksnpm (Node.js 26):
npm install amazon-modern-widgets
mkdir config && cp node_modules/amazon-modern-widgets/config/sample.yml config/production.yml
# edit config/production.yml (credentials, Server.projectDir, Server.path: /item)
node node_modules/amazon-modern-widgets/dist/main.jsThen proxy /item/ from your website to AMW
(NGINX example).
<html lang="en">
<!-- ... -->
<div class="amw" id="B084DN3XVN"></div>
<script src="/item/widget.js" defer></script>
</html>See Add widgets to your website for the embedding options, JavaScript API and styling, and Product cards for what readers see (languages, savings badge, lazy loading).
Issues and pull requests are welcome. Every change follows issue → branch → pull
request to develop with Conventional Commits:
see AGENTS.md and the
contributing guide.
MIT © Ludovic Toinel
