A Hermes Agent skill for managing AnyList recipes and shopping lists via the unofficial AnyList API.
- Get Recipes: Fetch your entire AnyList recipe library
- Create Recipes: Add new recipes to AnyList from JSON data (perfect for converting recipe images or URLs)
- Add Items: Add ingredients to your shopping lists
This skill is included with Hermes Agent. To set it up:
cd ~/.hermes/skills/productivity/anylist/scripts
npm installAdd your AnyList credentials to your Hermes .env file:
ANYLIST_EMAIL=your-email@example.com
ANYLIST_PASSWORD=your-password
# First, parse the recipe (from image, URL, or manual entry)
# Then create it via the bridge:
echo '{
"name": "Roasted Chicken Thighs",
"ingredients": [
{"rawIngredient": "2 lbs chicken thighs", "name": "chicken thighs", "quantity": "2", "note": "lbs"},
{"rawIngredient": "3 cloves garlic, minced", "name": "garlic", "quantity": "3", "note": "cloves, minced"}
],
"preparation_steps": [
"Preheat oven to 425F",
"Place chicken on baking sheet",
"Roast for 35 minutes"
],
"servings": "4 servings",
"prep_time_minutes": 10,
"cook_time_minutes": 35,
"source_name": "Serious Eats",
"source_url": "https://seriouseats.com"
}' | node scripts/anylist_bridge.js create-recipenode scripts/anylist_bridge.js get-recipesecho '{
"list": "Alexa Shopping List",
"items": ["3 lbs chicken thighs", "2 cups quinoa", "1 head broccoli"]
}' | node scripts/anylist_bridge.js add-itemsCreate a new recipe in AnyList from JSON input.
Required fields:
name(string) — recipe nameingredients(array) — array of ingredient objects
Optional fields:
preparation_stepsorsteps(array) — cooking instructionsservings(string)prep_time_minutes(number)cook_time_minutes(number)notes(string)rating(number, 1-5)source_name(string)source_url(string)nutritional_info(string)
Fetch your entire recipe library as JSON.
Add items to a named shopping list.
This repository uses Node.js and the anylist npm package, which is a reverse-engineered wrapper for the unofficial AnyList API.
.
├── scripts/
│ ├── anylist_bridge.js # Main CLI bridge to the anylist package
│ ├── package.json
│ └── package-lock.json
├── SKILL.md # Hermes skill documentation
└── README.md # This file
To test the create-recipe command:
export ANYLIST_EMAIL=your-email
export ANYLIST_PASSWORD=your-password
# Test creating a recipe
echo '{"name": "Test Recipe", "ingredients": [{"name": "test"}]}' \
| node scripts/anylist_bridge.js create-recipeThis repository maintains full git history for easy rollback:
# View commit history
git log --oneline
# Revert to a previous version
git checkout <commit-hash>This usually means your AnyList credentials are incorrect or the API has changed.
Double-check the exact name of your shopping list in AnyList (case-sensitive).
The AnyList API can be slow. Give it 30+ seconds. If it continues to timeout, check your network connection and AnyList account status.
MIT
This skill is maintained by Hermes Agent. For issues or improvements, please submit a PR or open an issue on GitHub.