Перейти к основному содержимому

Auto-Archiver (Bellingcat)

Auto-Archiver — open-source Python-инструмент от Bellingcat для автоматической архивации ссылок из Google Sheets, CSV, Telegram и других источников. С 2023 года используется в OSINT-расследованиях для архивации соцсетей, видео, новостных материалов и веб-страниц.

Главное отличие от Browsertrix и wget: Auto-Archiver не собирает сам сайт — он координирует запуск нужного инструмента под каждый тип ссылки. Пост с Telegram → telegram_extractor, видео YouTube → yt_dlp_extractor, сайт → wacz_extractor, картинка → image_extractor. Всё записывается в Google Sheets с метаданными.

По данным Bellingcat на 2025 год, Auto-Archiver помог сохранить более 150 000 материалов онлайн-доказательств. Включая систематическую архивацию во время конфликта Россия-Украина.

Зачем нужен​

ЗадачаСтандартный способС Auto-Archiver
Архивировать 50 ссылок из Telegram за деньВручную качать каждыйДобавить ссылки в Google Sheets, запустить раз в день
OSINT-расследование по 200 материалов8 часов ручного труда30 мин на запуск + проверить результат
Регулярная архивация соцсетейСложные скриптыШаблон: telegram_extractor + instagram_extractor
Автоматическое обогащение метаданнымиСамописные скриптыИз коробки: hash, MIME, дата, скриншот

Возможности​

Источники (Inputs)​

Тип входаКак
Google SheetsСамая частая схема; рекодёрская колонка url + служебные
CSV-файлauto-archiver run --csv=./urls.csv
AirtableЧерез интеграционный скрипт
AtlosПлатформа расследований Bellingcat
Telegram-ботРегистрация материалов через Telegram
APIИз собственных скриптов

Экстракторы (по типу материала)​

Тип ссылкиЭкстракторЧто делает
Telegram-пост (публичный)telegram_extractorСкачивает текст + медиа + метаданные
Telegram-канал (с логином)telethon_extractorПолная история канала через Telethon
YouTube / Vimeo / видеоyt_dlp_extractorВидео + метаданные + субтитры через yt-dlp
Веб-страницаwacz_extractorWACZ через Browsertrix Cloud или self-hosted
Instagram постinstagram_extractorЧерез instaloader
VKvk_extractorЧерез vk-caching или API
Изображениеimage_extractorОригинал + хеш
PDFpdf_extractorСкачивание + OCR (опционально)
Произвольный URLgeneric_extractorХеш + заголовки + базовая метаинформация

Хранилища (Outputs)​

КудаФорматКогда
Локальная папкаФайлы + JSON-метаданныеРазработка, малые проекты
AWS S3 / BackblazeФайлы + JSONПродакшен
Google DriveФайлыНетехнические пользователи
Hugging Face DatasetsДатасетML-исследования
Локальная БД (SQLite)МетаданныеПоиск по архивам

Установка​

Через pip​

pip install auto-archiver

Через Docker​

docker pull bellingcat/auto-archiver
docker run -v $(pwd)/config.yaml:/app/config.yaml \
-v $(pwd)/output:/app/output \
bellingcat/auto-archiver

Из исходников​

git clone https://github.com/bellingcat/auto-archiver
cd auto-archiver
pip install -e .

Быстрый старт​

1. Подготовьте Google Sheets​

urltagsfolder
https://t.me/example/123"расследование""month-1"
https://youtube.com/watch?v=abc"видео""month-1"
https://example.com/article"""month-1"

Создайте сервисный аккаунт Google, расшарьте таблицу.

2. config.yaml​

input:
google_sheets:
sheet_id: "1AbC..."
credentials_file: "./google-credentials.json"
worksheet: "Sheet1"
url_column: "url"
headers_in_first_row: true

extractors:
telegram_extractor:
enabled: true
yt_dlp_extractor:
enabled: true
wacz_extractor:
enabled: true
browsertrix_url: "http://localhost:3030" # self-hosted Browsertrix Cloud
generic_extractor:
enabled: true

storages:
local:
folder: "./output"
s3:
enabled: false
bucket: "my-bucket"

database:
type: sqlite
file: "./auto-archiver.db"

logging:
level: info
log_file: "./auto-archiver.log"

3. Запуск​

auto-archiver run --config config.yaml

Auto-Archiver читает Google Sheets, обрабатывает каждую строку, записывает результаты обратно в Sheets (статус, путь к файлу, hash, дата).

Сценарии использования​

Сценарий 1. OSINT-расследование (50–500 ссылок)​

  1. Создать Google Sheet, расшарить с командой.
  2. Каждый член команды добавляет найденные ссылки.
  3. Один раз в день — auto-archiver run.
  4. На следующий день — таблица обновлена; можно переходить к анализу.

Сценарий 2. Регулярная архивация Telegram-каналов​

extractors:
telethon_extractor:
enabled: true
api_id: 12345
api_hash: "your_hash"
channels:
- "channelname1"
- "channelname2"

storages:
s3:
enabled: true
bucket: "telegram-archives"

Запуск по cron ежедневно:

0 3 * * *  cd /opt/auto-archiver && auto-archiver run --config telegram-config.yaml

Сценарий 3. Журналистский мониторинг​

Коллеги скидывают ссылки в общий Telegram-бот → Auto-Archiver складывает всё в S3 с метаданными. Через неделю — датасет для редакции.

Сценарий 4. Локальный исследователь​

Несколько папок с разными тегами, auto-archiver бежит по очереди:

input:
csv:
file: "./investigation-2026-11.csv"
url_column: "link"

storages:
local:
folder: "/data/investigations/2026-11"

Метаданные, которые Auto-Archiver собирает​

Для каждого заархивированного URL:

{
"url": "https://t.me/example/123",
"type": "telegram",
"status": "archived",
"hash_md5": "5f4dcc3b...",
"hash_sha256": "...",
"size_bytes": 102400,
"mimetype": "image/jpeg",
"archived_at": "2026-11-09T12:00:00Z",
"downloaded_at": "2026-11-09T12:05:00Z",
"title": "Заголовок поста",
"description": "Текст сообщения",
"author": "Канал Example",
"date_published": "2026-11-08T10:00:00Z",
"screenshot_path": "screenshot.png",
"wacz_path": null,
"thumbnail_path": "thumb.jpg",
"tags": ["расследование", "month-1"],
"folder": "month-1/"
}

Метаданные сохраняются в SQLite, JSON-файл рядом с архивом, и в Google Sheets (для удобства анализа).

Конфигурация расписания​

Однократный запуск​

auto-archiver run

Через cron​

# Каждые 6 часов
0 */6 * * * cd /opt/auto-archiver && auto-archiver run

Через systemd timer​

[Unit]
Description=Auto-Archiver periodic run

[Timer]
OnCalendar=hourly
Persistent=true

[Service]
ExecStart=/usr/local/bin/auto-archiver run --config /etc/auto-archiver.yaml
WorkingDirectory=/var/lib/auto-archiver

Airflow / Prefect / Prefect Cloud​

Auto-Archiver можно встроить в DAG-графы Python-orchestration систем. Каждый шаг (extract, archive, store) — отдельный task.

Production tips​

Изоляция аккаунтов​

Для telethon_extractor используйте отдельный Telegram-аккаунт (не личный). Иначе риск бана.

Лимиты API​

YouTube Data API v3 — есть квоты. Либо используйте только yt_dlp_extractor (без API), либо комбинируйте с yt_dlp_extractor для большинства ссылок.

Хранилище больших файлов​

Видео и Telegram-каналы быстро наполняют диск. Настройте S3 Glacier или холодное хранилище для старых архивов.

Удаление дубликатов​

Auto-Archiver проверяет SHA-256 — если архив уже есть, повторно не скачивает. Это экономит трафик и место.

Антибот-защита​

Для сайтов с Cloudflare DataDome — часто нужен browser-extractor (через WACZ). Если и так не работает — увы, никакой инструмент не поможет без белого списка IP от владельцев.

Когда использовать​

✅ Подходит:

  • OSINT-расследования с десятками/сотнями ссылок из разных источников.
  • Журналистский workflow — материалы приходят в Telegram, автоматически архивируются.
  • Регулярная архивация каналов/аккаунтов с метаданными.
  • Команды без навыков кодинга — UI через Google Sheets проще, чем скрипты.
  • Проекты с лимитом времени — автоматизация убирает рутину.

❌ Не подходит:

  • Один URL — проще Archive.ph.
  • Полная архивация большого сайта — нужен Browsertrix или wparc.
  • Real-time мониторинг — Auto-Archiver пакетный, не непрерывный.
  • Платформы без публичного API/веб-доступа — закрытые чаты, защищённые CDN — нужны специальные инструменты.
  • Юридически чувствительные данные — метаданные с именами авторов, датами публикации нужно проверять до публикации.

Сравнение с аналогами​

ВозможностьAuto-Archiverad-hoc скриптыBrowsertrixArchiveBot
Multi-source вход✅ Sheets, CSV⚠️ только код❌❌
Multi-extractor✅⚠️❌❌
Метаданные автоматически✅⚠️❌❌
WACZ✅⚠️✅✅
Real-time❌✅❌✅
Production-ready✅⚠️✅✅
Простота для нетех. пользователя✅❌⚠️✅
Бесплатный✅✅✅✅

Ресурсы​

Связанные материалы​