Разбор

Claude читает твои Google Таблицы и объясняет что происходит: аналитик за 5 рублей в день

Большинство таблиц с данными так и остаются непрочитанными — некому интерпретировать. Python + gspread + Claude: агент читает продажи, трафик и расходы, пишет текстовый вывод на русском. 5 рублей в день вместо штатного аналитика для первичной интерпретации.

• 7 мин чтения

У меня есть знакомый — владелец небольшой сети кофеен. Каждый понедельник его операционный директор скидывает Excel с продажами за неделю. Тот открывает, смотрит на числа… и закрывает. Потому что непонятно что с ними делать. Цифры есть, смысла нет.

Это не исключение. Это норма для 90% компаний малого бизнеса.

5 ₽
стоит один ежедневный анализ через Claude API — при типичном объёме данных в 30–100 строк таблицы

Таблицы есть у всех. Выводов нет

Данные собираются. Продажи по дням, заявки из рекламы, расходы по статьям, остатки на складе. Всё это оседает в Google Таблицах — аккуратно, по столбцам, иногда с подсветкой.

Проблема не в сборе данных. Проблема в том, что между числами и решением — пропасть. Что значит «продажи 340 000 в апреле»? Хорошо это или плохо? Почему так? Что делать в мае?

Нанять аналитика на 80 000 рублей в месяц ради одной сводной таблицы — перебор. Ждать ежеквартального отчёта от агентства — слишком долго. Разбираться самому каждый понедельник — нет времени.

Агент закрывает ровно это. Не строит дашборды, не заменяет BI-систему. Читает таблицу и пишет по-русски: вот что изменилось, вот почему это тревожно, вот что можно сделать прямо сейчас.

Что конкретно делает агент

Четыре типа анализа — в зависимости от того, что написать в промпте.

Тип анализаЧто ищетПример вывода
Сравнение периодовИзменения неделя/неделя, месяц/месяц«Продажи выросли на 23% — с 280 до 345 тыс. руб. Рост во всех категориях кроме кофе навынос (−8%)»
Поиск аномалийЗначения выбивающиеся из паттерна«Среда 15 апреля: 12 заказов вместо обычных 28–34. Похоже на сбой приёма заказов или проблему с сайтом»
Прогноз по трендуЛинейная экстраполяция за 4+ периода«При текущей динамике в мае выйдете на 370–390 тыс. руб. Если ничего не изменится»
Зависимости между столбцамиКорреляции между показателями«Недели с рекламным бюджетом выше 15 тыс. дают +40% заявок. Три недели без рекламы — провал на 35%»

Claude не просто выдаёт числа обратно. Он объясняет. «Продажи выросли на 23%» — это не вывод, это констатация. Вывод — «рост в категории “обеды” на 38% совпал с запуском бизнес-ланчей 12 апреля, при этом утренний трафик остался на том же уровне, значит новые клиенты приходят именно на обед, а не конвертируются из завтраков».

Где предприниматели теряют время без автоматической интерпретации данных
«Не знаю что делать с числами»
67%
«Смотрю раз в месяц если вспомню»
54%
«Аналитик слишком дорого»
48%
«Данные есть, выводов нет»
71%
Опрос владельцев и руководителей малого бизнеса, аудитория блога axdigital.ru, 2025–2026, n=200+. Выборка не репрезентативна, но паттерн узнаваем.

Как устроена схема

📊Google Sheetsтаблица с данными
🐍Python + gspreadчтение и подготовка
🤖Claude Sonnetанализ и вывод
✈️Telegramдайджест каждый день

gspread — это Python-библиотека которая обращается к Google Sheets API. Авторизация через Service Account: создаёшь технический аккаунт в Google Cloud, выдаёшь ему права на таблицу, скачиваешь JSON с ключом. После этого скрипт читает любой лист как двумерный массив.

Python форматирует данные в читаемый текст и передаёт Claude одним запросом. Claude не трогает таблицу — он только читает то что ему дали и пишет вывод. Это простая схема без агентного цикла — предсказуемо, дёшево, достаточно для 80% задач.

Код который работает

📄 analyze_sheets.py — pip install anthropic gspread requests
import gspread
import anthropic
import requests
import json
from datetime import datetime

# Токены
SERVICE_ACCOUNT_FILE = "service_account.json"  # скачать из Google Cloud Console
SPREADSHEET_ID = "YOUR_SPREADSHEET_ID"          # из URL таблицы
SHEET_NAME = "Продажи"                          # название листа
CLAUDE_API_KEY = "YOUR_CLAUDE_KEY"
TELEGRAM_TOKEN = "YOUR_BOT_TOKEN"
CHAT_ID = "YOUR_CHAT_ID"

def read_sheet():
  """Читаем данные из Google Таблицы через Service Account."""
  gc = gspread.service_account(filename=SERVICE_ACCOUNT_FILE)
  sh = gc.open_by_key(SPREADSHEET_ID)
  worksheet = sh.worksheet(SHEET_NAME)

  # Все данные включая заголовки
  all_data = worksheet.get_all_values()

  if len(all_data) < 2:
      return None, "Таблица пустая или нет данных"

  headers = all_data[0]
  rows = all_data[1:]

  # Берём последние 30 строк — обычно достаточно для анализа
  recent_rows = rows[-30:] if len(rows) > 30 else rows

  # Форматируем в читаемый текст для Claude
  formatted = f"Заголовки: {', '.join(headers)}\n\nДанные (последние {len(recent_rows)} строк):\n"
  for i, row in enumerate(recent_rows, 1):
      formatted += f"Строка {i}: {', '.join(row)}\n"

  return formatted, None

def analyze_with_claude(data_text, analysis_type="general"):
  """Передаём данные Claude, получаем текстовый анализ."""
  client = anthropic.Anthropic(api_key=CLAUDE_API_KEY)

  prompts = {
      "general": """Ты аналитик данных. Проанализируй эти данные из Google Таблицы.

Напиши структурированный отчёт на русском:
1. Главный тренд (1-2 предложения, конкретные цифры)
2. Тревожные сигналы (если есть — что именно и почему это проблема)
3. Позитивные изменения (конкретно, с числами)
4. Три действия на следующую неделю (конкретные, измеримые)

Пиши кратко и по делу. Никаких общих слов.""",

      "comparison": """Ты аналитик. Сравни первую половину данных со второй.
Найди: что выросло (на сколько %), что упало, где аномалии.
Выдай вывод в 4-6 предложений с конкретными числами.""",

      "anomaly": """Найди в этих данных аномалии — значения которые сильно отличаются от остальных.
Для каждой аномалии: что именно, насколько отличается от нормы, возможная причина.
Если аномалий нет — скажи об этом прямо."""
  }

  prompt = prompts.get(analysis_type, prompts["general"])

  message = client.messages.create(
      model="claude-sonnet-4-6",
      max_tokens=1200,
      messages=[{
          "role": "user",
          "content": f"{prompt}\n\nДанные:\n{data_text}"
      }]
  )
  return message.content[0].text

def send_telegram(report_text, sheet_name):
  """Отправляем готовый отчёт в Telegram."""
  date_str = datetime.now().strftime("%d.%m.%Y")
  message = (
      f"📊 <b>Анализ таблицы: {sheet_name}</b>\n"
      f"<i>{date_str}</i>\n\n"
      f"{report_text}"
  )

  requests.post(
      f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendMessage",
      json={
          "chat_id": CHAT_ID,
          "text": message,
          "parse_mode": "HTML"
      }
  )

if __name__ == "__main__":
  print(f"Читаем таблицу '{SHEET_NAME}'...")
  data, error = read_sheet()

  if error:
      print(f"Ошибка: {error}")
      exit(1)

  print("Анализируем через Claude...")
  report = analyze_with_claude(data, analysis_type="general")

  print("Отправляем в Telegram...")
  send_telegram(report, SHEET_NAME)
  print("Готово.")

Несколько деталей, которые нужно знать до запуска.

Service Account создаётся в Google Cloud Console — это занимает 10 минут. После создания скачиваешь JSON с ключом и шеришь таблицу с email сервис-аккаунта (выглядит как name@project.iam.gserviceaccount.com). Без этого шаринга скрипт получит ошибку 403.

SPREADSHEET_ID — это часть URL таблицы между /d/ и /edit. Для https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgVE2upms/edit идентификатор — 1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgVE2upms.

get_all_values() возвращает все ячейки включая пустые. Если у тебя таблица с 500 строками — передавай Claude последние 30–60, иначе контекст разрастётся и стоимость запроса вырастет пропорционально.

Как выглядит реальный вывод

Вот что Claude написал по таблице с 30 строками данных продаж кофейни (апрель 2026):

🤖 Вывод Claude — анализ данных кофейни, апрель 2026

+23%  Общая выручка за апрель составила 347 200 руб. против 282 100 руб. в марте. Рост произошёл преимущественно за счёт категории «обеды» — плюс 38% к марту.

Тревога  Средняя сумма чека в категории «напитки» снизилась с 310 до 268 руб. при том, что число заказов выросло на 11%. Люди приходят чаще, но берут дешевле — возможно, переходят с фирменных позиций на стандартные. Это стоит проверить в разбивке по позициям.

Аномалия  15 апреля (вторник) — 9 заказов, хотя типичное значение для вторника 27–33. Пропуск или сбой CRM, либо было закрыто. На следующей неделе посмотрите лог.

Три действия: (1) разобраться с просадкой среднего чека по напиткам — посмотреть топ-10 позиций апреля vs марта; (2) выяснить что случилось 15 апреля; (3) если обеды растут — проверить достаточность кухонной мощности на май, рост на 38% в тихом месяце может обернуться очередями в мае.

Это не магия и не ИИ-хайп. Это просто первичная интерпретация которую раньше нужно было делать вручную или платить кому-то. Теперь она приходит сама каждое утро в Telegram — пока ты пьёшь кофе.

Как настроить ежедневный запуск

1
Создать Service Account в Google Cloud

Зайти на console.cloud.google.com, создать новый проект (или использовать существующий), включить Google Sheets API, создать Service Account и скачать JSON с ключом.

console.cloud.google.com → APIs → Sheets API → Credentials
2
Расшарить таблицу сервис-аккаунту

Открыть таблицу → Поделиться → вставить email сервис-аккаунта (из JSON-файла, поле client_email). Дать права «Читатель» — запись скрипту не нужна.

email из JSON: “client_email”: “name@project.iam.gserviceaccount.com
3
Установить зависимости и прогнать первый тест

Три библиотеки: anthropic, gspread, requests. Запустить скрипт вручную — убедиться что данные читаются и отчёт приходит в Telegram.

pip install anthropic gspread requests
4
Настроить cron на сервере или GitHub Actions

На Linux-сервере — добавить в crontab. В GitHub Actions — workflow с on.schedule (бесплатно для публичных репо и 2000 минут/мес для приватных). Запрос занимает 10–20 секунд.

0 9 * * * python /path/to/analyze_sheets.py
5
Добавить несколько таблиц или листов

Скрипт легко расширяется: передать несколько листов, сделать один сводный отчёт. Или запускать отдельно для каждой таблицы с разными промптами под разные задачи.

worksheet = sh.worksheet(“Трафик”) # другой лист

Проверь себя: готов ли ты к агенту?

Насколько тебе нужен этот агент

3 вопроса — поймёшь стоит ли тратить вечер на настройку

Вопрос 1 из 3
Как часто ты открываешь таблицы с данными бизнеса?
Вопрос 2 из 3
Есть ли у тебя штатный аналитик или регулярный анализ от агентства?
Вопрос 3 из 3
Бывало ли что проблема выяснялась слишком поздно — когда деньги уже потеряны?

Где агент не справится

Честно про ограничения. Claude хорошо интерпретирует то что видит — но он не знает контекст твоего бизнеса. Если в марте продажи упали на 30% потому что был переезд офиса — агент напишет «аномальное падение, проверьте», не зная реальной причины. Это нормально: он сигнализирует, ты объясняешь.

Сложная когортная аналитика, LTV-расчёты, сегментация клиентов по поведению — это не сюда. Для этого нужны BI-инструменты: Looker Studio, Metabase, DataLens от Яндекса. Агент на Claude — для первичного слоя: заметить изменение, назвать размер, сформулировать вопрос.

Ещё один момент: Claude не имеет доступа к историческим данным между запусками. Каждый раз — чистый лист. Если нужно сравнение с прошлым месяцем — передавай оба диапазона в одном запросе.

И последнее: при больших таблицах (тысячи строк) агрегируй данные на стороне Python до отправки. Claude-3-7-Sonnet стоит дороже при росте контекста, а 2 000 строк в одном запросе — это уже заметные деньги.


Тот владелец кофеен, с которого я начал — настроил агент за один вечер. Теперь каждое утро в 9:00 ему приходит сообщение в Telegram. Иногда там написано «всё в норме, тренд положительный». Иногда — «средний чек в среду упал на 18%, посмотрите что происходит». Он говорит что за три месяца раза два это помогло поймать проблему раньше чем она стала дорогой.

Стоит это 80 рублей в месяц.

Источники

Источники

Часто задаваемые вопросы

Что умеет Claude-агент для анализа Google Таблиц?
Агент подключается к Google Sheets API через gspread, читает данные из указанных листов и передаёт их Claude с инструкцией проанализировать. Claude сравнивает периоды, находит аномалии, выделяет тренды и пишет текстовый вывод на русском — конкретно: какой показатель вырос/упал, на сколько процентов, что это значит и что делать.
Сколько стоит ежедневный анализ данных через Claude API?
При типичном объёме данных (30–100 строк, один лист) один запрос к Claude Sonnet стоит 1–5 рублей. При ежедневном запуске — 30–150 рублей в месяц. Для еженедельного дайджеста — 4–20 рублей в месяц. Сравните с зарплатой аналитика от 80 000 рублей или агентским аудитом от 15 000 рублей разово.
Какие типы анализа делает агент?
Четыре основных: сравнение периодов (неделя к неделе, месяц к месяцу), поиск аномалий (значения выбивающиеся из паттерна), прогноз по тренду (линейная экстраполяция с оговорками), выявление зависимостей между столбцами (например, корреляция расходов на рекламу и числа заявок). Тип анализа задаётся в промпте.
Нужно ли программировать для настройки?
Нужен базовый Python: установить pip-зависимости, создать Service Account в Google Cloud Console, скопировать ключ. Весь код — в статье. Если Python пугает, скрипт можно запустить через n8n или Make без кода — те же принципы, визуальный интерфейс.
Чем агент не заменит настоящего аналитика?
Агент не строит дашборды, не делает сложную когортную аналитику, не знает контекста бизнеса (почему в марте продажи всегда падают — сезонность или это был форс-мажор). Он хорошо справляется с первичной интерпретацией: заметить изменение, назвать его размер, сформулировать гипотезу. Решение принимает человек.
Как настроить ежедневную отправку отчёта в Telegram?
Добавить в скрипт функцию отправки через Telegram Bot API (requests.post к sendMessage). Запустить скрипт по расписанию через cron: '0 9 * * * python /path/to/analyze.py'. На Windows — Task Scheduler. В облаке — GitHub Actions с cron-триггером бесплатно.
Обсуждение

    Пока без комментариев. Будьте первым.

    Войдите, чтобы отправить комментарий

    Вы сможете комментировать статьи, сохранять материалы

    или войдите по email

    Бесплатная диагностика · 30 минут · без обязательств

    Маркетинг работает, но продажи не растут?

    Отвечу на 3–5 вопросов о вашем бизнесе — и мы вместе разберём, где именно теряются клиенты и что с этим делать.

    Без продаж. Без навязчивых звонков.