Планирование еды на неделю или душевысасывающая обязанность
(можно проскролить если вам интереснее техническая часть)

Не знаю, как вы, а я недостаточно осознанный человек, у которого вся еда под контролем. Каждый раз, когда в мою жизнь врывается что угодно (в виде аврала или отпуска), моё здоровое осознанное питание идёт в известном направлении.
Годы попыток что-либо с этим сделать ни к чему не приводили: консультации с нутрициологами, курсы по правильному питанию, подписки на всех, кого не лень, заканчивались одним и тем же. Меня хватало на две недели, а потом всё снова слетало.
И раз уж ИИ грозится заменить кучу профессий, подумала я, пусть заменит мне шеф-повара. Да, конечно, пока что он не умеет готовить сам, но это дело времени.
Психанув в очередной раз, я создала своего ИИ-агента, который парсит мои рецепты, знает мою динамику покупок и готовки, составляет меню на неделю, генерирует из него список покупок и сам перебрасывает всё в корзину Knuspr (немецкий онлайн-магазин по типу «Утконоса»).
Как работает
...
Рецепты и инструкция по работе хранится в Obsidian.
ИИ-агент работает на Claude Desktop (Codex и любые другие агентные решения тоже подойдут).
Knuspr подключен по MCP.
...
Самого агента я собрала буквально за пару часов.
А вот подготовка базы рецептов заняла на порядок больше времени. Но это разовая инвестиция: дальше новые рецепты добавляются по мере появления. Благо многое у меня уже было оцифровано после того как мы с семьей собирали рецепты для публикации семейной книги, но это другая история. Мне же оставалось только перенести всё в Obsidian.
Как устроено хранилище Obsidian
В хранилище четыре раздела:
Профиль
Тут хранится документ с моими предпочтениями: как я предпочитаю готовить (в мультиварке или духовке), один раз на три дня или каждый день, хочу увеличить норму овощей или белка и т.д.
Рецепты
Здесь хранятся рецепты и шаблон, чтобы все карточки были одинаковыми.
Меню
Сюда Claude складывает понедельное меню и список продуктов после того, как я их согласовываю.
Фидбек
Говорит сам за себя.

Устройство Obsidian
Этапы работы агента

По таймеру он идёт в хранилище и по инструкции собирает меню на неделю, после чего присылает его мне.
Я комментирую меню. Например, в пятницу придут гости, а значит, надо заложить дополнительные порции. А на следующей неделе я еду в командировку, значит, меню надо сократить.
После согласования агент формирует список продуктов. Я проверяю его вручную, поскольку он не знает, что уже есть в моём холодильнике, какие есть специи и прочее. Я заложила в логику pantry assumptions, что всегда в наличии есть соль, растительное масло, сахар и т.д., но он всё равно уточняет, так ли это. Это помогает не продолбаться если соль предательски закончилась в неподходящий момент.
После согласования списка продуктов агент идёт в Knuspr и подбирает товары сразу в корзину.
Я захожу в корзину, ещё раз проверяю, всё ли на месте, добавляю всякие вкусняшки и оплачиваю заказ. Мне некомфортно делегировать этот этап полностью.
(Мои заморочки) Принципы планирования
...
Мне было важно, чтобы агент был именно моим «недо-шеф-поваром». «Недо» — потому что готовить сам он всё-таки не может. Зато и стоит это удовольствие в разы дешевле.
...
Отсюда родились основные части инструкции или принципы:
Состав семьи
Очевидно, что меню на двоих офисных работяг и на семью с четырьмя детьми будет разительно отличаться.
Задачи
Собственно, на что агент должен оптимизировать меню. Например, дефицит калорий, экономию денег или времени на готовку. Отдельный пункт — не допускать, чтобы продукты умирали в холодильнике. Мне хотелось по максимуму этого избегать.
Приёмы пищи
Какие приёмы пищи реально готовятся дома. Потому что, опять же, одно дело, когда вся семья ест дома три раза в день, и совсем другое — если только завтракает перед работой.
Частота и длительность готовки
Кто-то готовит каждый день, кто-то — раз в неделю. Рецепты и продукты надо подбирать соответственно.
Мой максимум в рабочий день — за 20 минут закинуть что-то в мультиварку или аэрогриль. А в выходные я могу под настроение и час готовить.
Частота закупок
Поскольку думать о еде и контролировать закупки меня задолбало (отсюда и идея агента), я закупаюсь раз в неделю онлайн и совершаю ad hoc набеги на магазин или рынок, если хочется чего-то конкретного.
Кухонная утварь
Полгода назад в нашей жизни появился Ninja Speedi, и я практически перестала пользоваться чем-либо ещё. Но многие рецепты не заточены под этот чудо-аппарат. Поэтому для оптимизации меню я оставила в списке также духовку и плиту. Не забудьте это настроить под себя, ведь духовки есть не во всех квартирах, а готовить на сковороде вы, возможно, просто ненавидите.
Расписание недели
Это описание того, сколько времени на готовку у вас есть в разные дни недели. Например, в моём случае это ограниченное время по будням и предпочтение простым рецептам, а по выходным — больше свободного времени и возможность приготовить что-то, что можно есть несколько дней.
Непереносимости или еда-которую-я-ненавижу-без-причины
Я не признаю тофу и всякие субпродукты. Это можно учесть при подборе рецептов, но я все равно просписала это дополнительно. Как говорят немцы, Sicher ist sicher. Или, как у нас, «бережёного Бог бережёт».
Pantry assumptions
Примерный список того, что всегда есть на кухне, чтобы агент каждый раз не добавлял вам пачку соли к каждому блюду.
Бюджет
Моё целевое значение — 100–110 евро в неделю на двоих, из которых 80% — на блюда и 20% — на всякую хрень вроде газированной воды или сладостей. Бюджет может быть увеличен, если я попрошу конкретное блюдо или к нам приезжают гости.
Оптимизация
Принцип 1: переиспользование продуктов. Уж если покупать пачку йогурта, её надо съесть, а не выбрасывать половину.
Принцип 2: отдавать предпочтение сезонным овощам и фруктам.
Принцип 3: планировать меню с учётом остатков. Например, если приготовили четыре порции пармиджаны, добавь в меню так, чтобы оставшиеся две порции пошли на завтра.

Я сознательно не учитывала калораж, потому что для такой готовки он, честно говоря, считается очень геморройно.
Под капотом (техническая часть)
По сути, чтобы собрать такого агента, многого не надо.
Соберите рецепты в хранилище. Если у вас ещё нет Obsidian, скачайте и установите — это бесплатно.
Включите Community Plugins (Dataview - чтобы делать теги к рецептам, Local REST API with MCP - апишка для коннекта с агентом).
Если у вас ещё не установлен агент, скачайте его, авторизуйтесь и подключите платную версию (мне хватает для этих задач тарифа за $20).
Подключите хранилище к агенту. Использовала плагин Local REST API with MCP.
Пропишите агенту его задачу: как часто и что именно он должен делать по шагам. Убедитесь, что у него есть доступ на чтение и запись тех частей хранилища, которые необходимы для выполнения задач.
Подключите корзину вашего интернет-магазина (в моём случае Knuspr). Я использую MCP для Knuspr.
Готово, вы великолепны.
Лайфхак
Есть Community Plugin для Obsidian, который парсит рецепты по ссылке и добавляет их в хранилище: Recipe Grabber.
В целом он работает неплохо, но у него нет тех полей, которые я использую для своих рецептов (приём пищи, время готовки, количество персон и пр.).
Цена вопроса
- Claude Pro — €20/месяц
- Obsidian — бесплатно
- Obsidian API MCP — бесплатно
- Knuspr MCP — бесплатно
- время сборки агента — 2 часа
- время подготовки рецептов — ориентировочно 4 часа на 43 рецепта из которых 10 - новые, 33 - были "в базе". Это, конечно, напрямую зависит от того, есть ли у вас оцифрованная база рецентов. С другой стороны, это можно считать инвестицией. Когда роботы придут вам помогать с уборкой и готовкой будет что ему передать 🤣
Результат
Вот уже почти месяц в моей жизни больше нет головной боли "что мы будем есть на этой неделе". Никаких больше рандомных рецептов в 15 местах и ощущения "купили продуктов на неделю, а опять все к среде кончилось" и "хотели приготовить мясо, но забыли купить мясо"... Нам хотелось начать больше есть овощей, но не было идей что с ними делать - в итоге эту проблему удалось решить на уровне меню: овощи есть в том или ином виде каждый день. Хотя тут еще есть над чем работать.

Голубика, добытая ИИ-агентом


Крутая идея! Не знал, что у Knuspr есть свой MCP.
А как ты отслеживаешь срок годности новых продуктов, чтобы ничего не пропадало - вручную после каждой покупки?