PullMD — страницы и файлы в Markdown для агента
PullMD
Свой сервис на Docker превращает ссылки, документы, YouTube и ветки Reddit в чистый Markdown. К агенту подключается как MCP, скилл Claude Code или API
- 492 ★ репозитория
- Последний коммит
- AGPL-3.0
Расширенный доступ
Почему такой уровень
- Сервис ходит по адресам, которые ему передал агент, и отдает агенту их содержимое, а текст чужой страницы может содержать инструкции
- Побочные модули подключают ключи для изображений, аудио, OCR и Reddit, а при выключенной авторизации сервис доступен любому в сети
Установка
- Работает в
В терминале, через SkillFoxx CLI
npx skillfoxx add mcp/pullmdОпределит агенты на машине, покажет уровень доступа и зафиксирует версию.
Другие способы установки
Доступ и проверки
Как мы проверяемРасширенный доступИнструмент запускает код или ходит в сеть, а внешние данные только читает.
- Сервис ходит по адресам, которые ему передал агент, и отдает агенту их содержимое, а текст чужой страницы может содержать инструкции
- Побочные модули подключают ключи для изображений, аудио, OCR и Reddit, а при выключенной авторизации сервис доступен любому в сети
Это чужой код. Посмотрите файлы в репозитории перед установкой.
Что делает
PullMD принимает адрес страницы или файл и возвращает Markdown без навигации, баннеров и скриптов. Источник и метаданные лежат в YAML-шапке, а не в тексте. Для веб-страниц сервис пробует цепочку: готовый Markdown от Cloudflare, затем Readability с Trafilatura, затем `headless` Chromium для страниц на JavaScript. Сервис умеет разбирать ветки Reddit и Hacker News вместе с деревом комментариев, PDF, Word, PowerPoint, Excel и EPUB, а также расшифровку YouTube с кликабельными таймкодами без ключа API. Картинки и аудио обрабатывает любая OpenAI-совместимая или локальная модель. В запросе параметр `query` возвращает только разделы, подходящие под вопрос, и сокращает вывод на 70–95 процентов токенов. К агенту сервис подключается тремя путями. Удаленный MCP-сервер по адресу `/mcp` дает инструменты read_url, get_share и list_recent. Скилл Claude Code ставят из архива pullmd.zip, а универсальный промпт годится для любого чата. Работает все это на вашем сервере через docker `compose`.
Для кого. Для разработчиков и команд, которые держат свой сервер и хотят, чтобы агенты читали сайты, документы и видео дешевле по токенам, чем сырой HTML.
Подходит, если
- Встроенный инструмент выборки не справляется с PDF, сайтами на JavaScript или ветками Reddit, где бот-проверка блокирует обычный запрос
- Агенту нужен ответ из длинной статьи, а целиком она не помещается в контекст: параметр `query` вернет только подходящие разделы
- Нужна расшифровка YouTube с таймкодами, которая попадает в заметки или отчет
- Нужна постоянная ссылка /s/<id> на разобранную страницу: сервис обновит копию старше часа и отдаст последний удачный снимок, если источник пропал
- Вы подключаете агента из Claude Desktop или с claude.ai: для них в PullMD есть OAuth 2.1
Не подходит, если
- У вас нет сервера или нельзя запускать Docker: сервис ставится только на собственную машину
- Нужно обходить закрытый доступ или платные стены: PullMD читает общедоступные страницы и документы
- Мало места на диске: дополнительный контейнер Playwright добавляет около 3,7 ГБ к кэшу образов, хотя его можно не подключать
- Подойдет облачный сервис без обслуживания: PullMD нужно развернуть, обновлять и защищать самостоятельно
Пример запроса к агенту
Прочитай эту статью через PullMD и ответь только на вопрос о лимитах запросов, не загружая страницу целикомMCP
- Транспорт
- http
- Авторизация
- ключ необязателен
Переменные окружения
PUBLIC_URL- Публичный адрес сервиса, по умолчанию http://localhost:3000
OAUTH_JWT_SECRETсекрет- Секрет для OAuth 2.1, нужен для Claude Desktop и claude.ai
PULLMD_TRUST_PROXY- Включает доверие к обратному прокси
PLAYWRIGHT_URL- Адрес побочного контейнера Playwright для страниц на JavaScript
Ограничения
- Сервис нужно развернуть и обновлять самостоятельно. Лицензия AGPL-3.0.
- Все побочные контейнеры (Trafilatura, Playwright, MarkItDown) необязательны, без них качество разбора страниц и документов снижается, о чем сервис сообщает в метаданных.
- Claude Desktop не принимает заголовок Bearer в форме подключения, поэтому для него нужен включенный OAuth через `OAUTH_JWT_SECRET` или прокси с токеном в пути адреса.
- За обратным прокси с версии 3.13 нужна переменная `PULLMD_TRUST_PROXY`.
- Ответ YouTube может прийти со статусом `blocked` или `error`. Это временные состояния, в кэш они не попадают.
Как отключить. Выполните claude mcp `remove` `pullmd` и удалите папку ~/.claude/skills/pullmd, если ставили скилл. Сам сервис останавливает команда docker `compose` `down` в папке с docker-compose.yml, данные лежат в каталоге ./data.
Частые вопросы
Как поставить PullMD в Claude Code?
Сначала запустите сервис: скачайте docker-compose.yml и выполните docker `compose` up -d. Затем подключите MCP командой claude mcp `add` --transport http `pullmd` https://ваш-адрес/mcp. Вместо MCP можно скачать pullmd.zip с вашего сервиса и распаковать в ~/.claude/skills/.
Какие инструменты дает MCP-сервер PullMD?
Три: read_url читает адрес, get_share открывает постоянную ссылку, list_recent показывает недавние преобразования. При включенной авторизации list_recent выводит только ваши.
Сколько токенов экономит PullMD?
Автор измерил на трех страницах с токенизатором cl100k_base: статья энциклопедии 99 458 токенов у curl против 12 549 у PullMD, страница документации 48 611 против 6 591. С параметром `query` выходит 662 и 454 токена.
Читает ли PullMD Reddit, если обычный запрос блокируется?
Да. Ветки Reddit распознаются автоматически, включая короткие ссылки redd.it. В измерении автора обычный curl получил бот-проверку, а PullMD вернул ветку с комментариями на 6 381 токен.
Какую лицензию имеет PullMD и где хранятся данные?
AGPL-3.0. Кэш и история лежат в каталоге ./data, который docker-compose подключает как том.
Обсуждение
Вопросов и отзывов пока нет.
Похожие
MCP-серверыMCP-сервер, который открывает страницы в безголовом Chromium через Playwright и отдает агенту основной текст в Markdown даже с сайтов на JavaScript
Скилл читает ссылку и отдает агенту полный текст в Markdown: выбирает отдельный путь для страниц WeChat, документов Feishu, PDF и статей arXiv
Сервер на Rust превращает страницы в Markdown или JSON: поиск, скрейпинг, карта сайта, обход и PDF через MCP, CLI и API, совместимый с Firecrawl
Краулер с открытым кодом превращает сайты в чистый Markdown для ИИ-агентов: ставится из PyPI, запускается в Docker и подключается к Claude Code по MCP
Веб-поиск через DuckDuckGo и чтение страниц для агента без API-ключей, с ограничением частоты запросов
MCP сервер для Reddit: агент читает горячие треды сабреддита и разбирает посты вместе с комментариями
Сравнение с похожими
Записи с тем же главным запросом: чем они отличаются.
| Запись | Официальный | Авторизация | Звезды репозитория | Главное отличие |
|---|---|---|---|---|
| PullMD — страницы и файлы в Markdown для агента (эта запись) | нет | ключ необязателен | 492 | |
| MarkItDown | да | не нужна | 191 832 | утилита Microsoft для конвертации файлов в Markdown, без цепочки веб-запросов и сервера с кэшем |
| Jina AI MCP | да | ключ необязателен | 893 | облачный сервис Jina, а PullMD работает на вашем сервере |
| webclaw | нет | не нужна | 2 388 | локальный инструмент на Rust для извлечения данных со страниц и обхода сайтов |
Коротко о README
Раздел «Зачем» объясняет задачу: сырой HTML тратит контекст на навигацию, баннеры и скрипты, а встроенные инструменты выборки спотыкаются о JavaScript, PDF и обсуждения. Дальше идут таблица экономии токенов, перечень форматов, быстрый старт с docker `compose` и описание трех путей подключения агентов. Отдельно разобраны режимы авторизации, совместимость клиентов MCP, OAuth для claude.ai и Claude Desktop и настройка за обратным прокси. В конце лежат справочники по API и параметрам.