lychee
Проект lycheeverse, авторы Matthias Endler и Thomas Zahner · лицензия Apache-2.0 или MIT
Проверяет ссылки сайта, HTML и Markdown перед выкладкой и находит страницы, которых нет, пропавшие картинки и якоря на несуществующие разделы. В прогоне у битых ссылок отчёт показал файл и строку.
✓ Проверено 14.10.2026: Ubuntu 24.04 (x86_64) в одноразовом контейнере Docker на сервере, от root: lychee 0.24.2 из архива выпуска на GitHub, локальный сервер python3 http.server для внешних ссылок. Что именно проверяли
Какую задачу решает
Находит битые ссылки в собранном сайте, папке с HTML, заметках и документации в Markdown. Агент запускает его перед выкладкой и получает список битых ссылок с файлом, строкой и причиной: страницы нет, картинка пропала, раздела с таким якорем нет, сервер ответил 404.
- Проверяет ссылки на файлы рядом: страницы, картинки, документы. В нашем прогоне нашёл пропавшие price.html, img/missing.png и old-notes.md.
- С ключом --include-fragments проверяет якоря, то есть ссылки на раздел страницы вида about.html#team. В прогоне ссылка на #nope попала в ошибки, потому что такого раздела на странице нет, а ссылка на #team прошла.
- Внешние адреса открывает сам и отмечает ответы 404 и другие ошибки сервера. Ключ --offline оставляет одни файлы на диске и не выходит в сеть.
- Отдаёт отчёт строками для человека, в JSON для агента или в Markdown. Код выхода 2 значит, что нашлись битые ссылки, 0 - что всё в порядке.
- Лишнее убирают ключом --exclude или файлом .lycheeignore. Адреса example.com и ссылки mailto по умолчанию не проверяет.
Пример результата
Говоришь агенту
Сайт собран в папку site. Проверь все ссылки, включая якоря, абсолютные пути считай от этой папки. Покажи битые ссылки с файлом и строкой.
Что получится
Мы прогнали этот сценарий на тестовом сайте из трёх страниц HTML, файла Markdown и картинки, внешние ссылки вели на локальный сервер. lychee нашёл 13 разных ссылок и вернул код 2 с пятью ошибками. Страницы price.html и файла old-notes.md не оказалось на месте, картинка img/missing.png пропала, на about.html нет раздела #nope, а страница gone.html на сервере ответила 404. Ссылки на #team, на /docs/guide.html и на живую страницу сервера прошли. Сами файлы сайта программа не меняла, контрольные суммы до и после совпали.
Паспорт
- Кто делает
- Проект lycheeverse, авторы Matthias Endler и Thomas Zahner
- Сайт
- lychee.cli.rs
- Исходный код
- github.com/lycheeverse/lychee
- Инструкция
- lychee.cli.rs/guides/getting-started
- Лицензия
- Apache-2.0 или MIT
- Версия
- 0.24.2 на 14.10.2026
- Системы
- macOS · Windows · Linux
- Где работает
- На компьютере, на сервере и в контейнере
- Цена
- Бесплатно
- Проверка
- Проверено 14.10
Установить агентом
Установи программу «lychee». Работай по шагам и после каждого коротко говори, что сделал.
Что это за программа (каталог smyslokod.ru, официальные источники сверены 14.10.2026):
- официальный сайт: https://lychee.cli.rs/
- исходный код: https://github.com/lycheeverse/lychee
- инструкция по установке: https://lychee.cli.rs/guides/getting-started/
- актуальная версия на 14.10.2026: 0.24.2
- лицензия: Apache-2.0 или MIT
- для работы нужно (в отдельных случаях): Токен GitHub - документация советует токен в GITHUB_TOKEN, чтобы GitHub реже ограничивал частоту запросов при проверке ссылок на github.com. Сколько отказов он убирает, мы не проверяли
Правила:
1. Ничего не устанавливай и не меняй, пока я не скажу «да» на твой план.
2. Ставь только способами из этого промпта. Сторонние сборки, скрипты с форумов и из чужих репозиториев не бери.
3. Мои проекты не трогай: не меняй их файлы, виртуальные окружения и списки зависимостей (package.json, requirements.txt, pyproject.toml).
4. Команды с sudo, правку профиля оболочки (~/.zshrc, ~/.bashrc) и переменной PATH делай только после моего отдельного «да» на каждую.
5. Не проси у меня пароли и ключи и не выводи их. Если нужен пароль администратора, дай команду, я выполню её сам.
6. Для разбора бери --format json и --output. По README код 2 значит, что нашлись битые ссылки, код 3 - ошибку в файле настройки, код 1 - что не нашёлся вход или случился другой сбой.
7. Сначала проверь проект с --offline, по сети проверяй отдельным «да»: программа откроет внешние ссылки из файлов, кроме исключённых.
8. Ключ --preprocess и строку preprocess в lychee.toml добавляй только по «да» человека. Если такая строка уже есть в чужом проекте, покажи её до запуска.
9. Битые ссылки в файлах правь только в тех файлах, которые назвал человек, и покажи, что поменял.
Шаги:
0. Определи, где ты работаешь: мой компьютер, сервер или контейнер. Какая система и процессор, какие менеджеры пакетов есть (Homebrew, apt, winget, uv, pipx). Ставить нужно туда, где ты сам запускаешь команды.
- на компьютере: работает в терминале без окна, отчёт печатает туда или в файл.
- на сервере: подходит для проверки сайта перед выкладкой: при битых ссылках код выхода 2, на него можно остановить выкладку.
- в контейнере: мы проверяли в контейнере Ubuntu 24.04 от root. По README и документации у проекта есть свой образ Docker lycheeverse/lychee, его мы не запускали.
1. Проверь, не стоит ли программа уже: lychee --version ; which -a lychee. Если стоит и запускается, ничего не ставь и переходи к шагу 5.
2. Обязательных зависимостей у программы нет, то, что нужно в отдельных случаях, перечислено выше. Проверь свободное место на диске: нужно Архив для Linux x86-64 весит 7 626 970 байт, файл lychee внутри 19 827 680 байт (около 18,9 МиБ), больше команда из карточки ничего не ставит. Для Windows архив весит 6 868 524 байт. Сколько займёт установка через Homebrew, мы не мерили..
3. Составь план: каким одним способом из списка ниже будешь ставить, что появится на диске и сколько места займёт, что поменяется в системе и как потом удалить. Покажи план и жди моего «да».
Способы из официальных источников:
- macOS, Homebrew: brew install lychee (так советует README, формула на 14.10.2026 ставит 0.24.2. Ни установку, ни удаление через Homebrew мы не проверяли)
- Windows, winget: winget install --id lycheeverse.lychee (так советует README. По описанию пакета в каталоге winget ставит 0.24.2 из архива выпуска на GitHub и тянет Microsoft Visual C++ Redistributable. Ни установку, ни удаление мы не проверяли)
- Linux, готовый файл с GitHub: mkdir -p ~/.local/bin /tmp/lx && curl -fsSL -o /tmp/lychee-x86_64-unknown-linux-gnu.tar.gz https://github.com/lycheeverse/lychee/releases/download/lychee-v0.24.2/lychee-x86_64-unknown-linux-gnu.tar.gz && echo "1f4e0ef7f6554a6ed33dd7ac144fb2e1bbed98598e7af973042fc5cd43951c9a /tmp/lychee-x86_64-unknown-linux-gnu.tar.gz" | sha256sum -c - && tar -xzf /tmp/lychee-x86_64-unknown-linux-gnu.tar.gz -C /tmp/lx && install -m 755 /tmp/lx/lychee-x86_64-unknown-linux-gnu/lychee ~/.local/bin/lychee && rm -rf /tmp/lx /tmp/lychee-x86_64-unknown-linux-gnu.tar.gz (это архив для x86-64, для ARM64 на странице выпуска лежит lychee-aarch64-unknown-linux-gnu.tar.gz со своей суммой. Архив 7 626 970 байт, сумму мы сверили с файлом .sha256 со страницы выпуска. Команда кладёт один файл lychee в ~/.local/bin, эта папка должна быть в PATH. Мы ставили ровно так, за 1 секунду)
4. Установи по согласованному плану. Если что-то идёт не так, как в плане, остановись и спроси.
5. Проверь результат:
- lychee --version: программа запускается без ошибки;
- Сделай тестовый сайт: несколько страниц HTML и файл Markdown, ссылки на существующие и пропавшие страницы, картинку, якоря, абсолютную ссылку, адрес в блоке кода, а для внешних адресов подними локальный сервер, где одна страница есть, а другой нет. Проверь папку с --offline и полностью, с --include-fragments и --root-dir, выведи JSON и сверь каждую ошибку. Отдельно прогони --exclude, код 0 на чистой папке, код 1 без входного файла и контрольные суммы файлов до и после. Делай это во временной папке и не трогай мои файлы.
export PATH=$HOME/.local/bin:$PATH
lychee --version
lychee --dump site/
lychee --offline --no-progress --include-fragments --root-dir /work/site --format json --output offline.json site/
lychee --no-progress --include-fragments --root-dir /work/site --format json --output full.json site/
lychee --no-progress --include-fragments --root-dir /work/site site/
lychee --no-progress --offline --root-dir /work/site --exclude 'price\.html' --format json --output exclude.json site/index.html
lychee --no-progress clean/
lychee --no-progress --offline site/about.html
lychee --no-progress nosuch.md
cd clean && lychee --no-progress --cache .
- если ты работаешь в папке моего проекта, покажи git status: от установки в проекте не должно появиться изменений.
6. Итог одним сообщением: что установлено, какой версии и куда, сколько места заняло, что поменялось в системе и как всё удалить (macOS, Homebrew: brew uninstall lychee; Windows, winget: winget uninstall --id lycheeverse.lychee; Linux, готовый файл с GitHub: rm -f ~/.local/bin/lychee).
Если на любом шаге ошибка, не чини наугад: покажи текст ошибки и скажи, что, по-твоему, случилось. Частые проблемы: https://smyslokod.ru/cli/lychee#problemyПромпт собран из официальных инструкций, сверенных 14.10.2026. Агент сначала проверит, что уже стоит, покажет план с местом на диске и способом удаления и без твоего «да» ничего не поставит.
Как ставят вручную
Способы из официальных источников, у каждого ссылка на первоисточник.
macOS · Homebrew · источник
brew install lychee
так советует README, формула на 14.10.2026 ставит 0.24.2. Ни установку, ни удаление через Homebrew мы не проверяли
Windows · winget · источник
winget install --id lycheeverse.lychee
так советует README. По описанию пакета в каталоге winget ставит 0.24.2 из архива выпуска на GitHub и тянет Microsoft Visual C++ Redistributable. Ни установку, ни удаление мы не проверяли
Linux · готовый файл с GitHub · источник
mkdir -p ~/.local/bin /tmp/lx && curl -fsSL -o /tmp/lychee-x86_64-unknown-linux-gnu.tar.gz https://github.com/lycheeverse/lychee/releases/download/lychee-v0.24.2/lychee-x86_64-unknown-linux-gnu.tar.gz && echo "1f4e0ef7f6554a6ed33dd7ac144fb2e1bbed98598e7af973042fc5cd43951c9a /tmp/lychee-x86_64-unknown-linux-gnu.tar.gz" | sha256sum -c - && tar -xzf /tmp/lychee-x86_64-unknown-linux-gnu.tar.gz -C /tmp/lx && install -m 755 /tmp/lx/lychee-x86_64-unknown-linux-gnu/lychee ~/.local/bin/lychee && rm -rf /tmp/lx /tmp/lychee-x86_64-unknown-linux-gnu.tar.gz
это архив для x86-64, для ARM64 на странице выпуска лежит lychee-aarch64-unknown-linux-gnu.tar.gz со своей суммой. Архив 7 626 970 байт, сумму мы сверили с файлом .sha256 со страницы выпуска. Команда кладёт один файл lychee в ~/.local/bin, эта папка должна быть в PATH. Мы ставили ровно так, за 1 секунду
Как удалить
- macOS, Homebrew:
brew uninstall lychee - Windows, winget:
winget uninstall --id lycheeverse.lychee - Linux, готовый файл с GitHub:
rm -f ~/.local/bin/lychee
Что нужно для работы
- Токен GitHub (в отдельных случаях) - документация советует токен в GITHUB_TOKEN, чтобы GitHub реже ограничивал частоту запросов при проверке ссылок на github.com. Сколько отказов он убирает, мы не проверяли
Системы
- macOS - README советует Homebrew, на странице выпуска есть готовые архивы для Intel и Apple Silicon. На Mac мы не проверяли.
- Windows - winget ставит lychee.exe из архива выпуска на GitHub, только для x64. На Windows мы не проверяли.
- Linux - мы проверяли на Ubuntu 24.04 x86-64: готовый файл из архива выпуска, нужны только системные библиотеки, они в образе уже были. На странице выпуска есть архивы и для ARM64.
Где запускать
Ставить нужно туда, где работает агент: на твой компьютер, сервер или в контейнер.
- На компьютере - работает в терминале без окна, отчёт печатает туда или в файл.
- На сервере - подходит для проверки сайта перед выкладкой: при битых ссылках код выхода 2, на него можно остановить выкладку.
- В контейнере - мы проверяли в контейнере Ubuntu 24.04 от root. По README и документации у проекта есть свой образ Docker lycheeverse/lychee, его мы не запускали.
Сколько ресурсов нужно
- Место на диске
- Архив для Linux x86-64 весит 7 626 970 байт, файл lychee внутри 19 827 680 байт (около 18,9 МиБ), больше команда из карточки ничего не ставит. Для Windows архив весит 6 868 524 байт. Сколько займёт установка через Homebrew, мы не мерили.
- Память
- Память мы не мерили. Полная проверка тестового сайта вместе с запуском программы заняла 500 мс.
- Видеокарта
- Видеокарта не нужна.
- Сеть
- Для установки нужна сеть: архив скачивается с github.com, в нашем прогоне соединения шли к 20.250.119.67 и 185.199.108-111.133 (адреса GitHub). Внутри контейнера netwatch записал его DNS 127.0.0.11. При проверке программа открывает внешние ссылки из файлов, кроме исключённых настройкой и встроенным списком (example.com и похожие учебные адреса), по умолчанию до 128 запросов сразу и до 10 на один сайт. В нашем прогоне она ходила только на локальный сервер 127.0.0.1:8765, а с --offline соединений не было.
Лицензия и платные замены
Лицензия Apache-2.0 или MIT. Лицензию выбираете сами из двух свободных, так сказано в README. Текст лицензии
Цена: Бесплатно. Программа бесплатная, лицензия Apache-2.0 или MIT на выбор.
Платные замены
- Screaming Frog SEO Spider - Обходит сайт по ссылкам и находит битые страницы, ошибки и переадресации. Бесплатно до 500 адресов за обход, дальше 279 долларов в год за лицензию.
О чём помнить
- Безопасность. Агент запускает lychee в терминале сам (exec). Программа читает файлы и папки, которые ей передали, файл .lycheeignore и настройку lychee.toml из текущей папки, а без lychee.toml по исходному коду ищет раздел lychee в Cargo.toml, pyproject.toml и package.json там же (read). Отчёт пишет в файл по пути из --output, с ключом --cache создаёт .lycheecache в текущей папке (write). Сами проверяемые файлы в нашем прогоне не изменились. Входа в учётные записи программа не просит.
- Ключ --preprocess и строка preprocess в lychee.toml запускают указанную программу на каждом входном файле (exec). Перед проверкой чужого проекта посмотри его lychee.toml: такая строка запустит чужую команду с твоими правами.
- Программа сама открывает внешние адреса из файлов, кроме исключённых, в том числе адреса внутренней сети и localhost, если они есть в ссылках. Чтобы этого не было, есть ключ --exclude-all-private, а --offline не выходит в сеть совсем. Заголовки из -H, логин из --basic-auth и токен GitHub уходят вместе с запросами, -H по документации ко всем сайтам сразу.
- Абсолютные ссылки вида /docs/guide.html без ключа --root-dir считаются ошибкой: в нашем прогоне вышло «Cannot resolve root-relative link». Для собранного сайта передай папку сайта в --root-dir.
- Сайты с защитой от роботов и GitHub при частых запросах могут отвечать отказом, хотя страница жива. В TROUBLESHOOTING.md для таких случаев есть токен GitHub, заголовок вида --header 'Accept: text/html' для сайтов, которые без него отвечают 404, и ключ --accept со списком допустимых кодов ответа. С настоящими сайтами мы программу не прогоняли, проверка внешних адресов шла на локальном сервере.
Частые проблемы
Cannot resolve root-relative link '/docs/guide.html': To resolve root-relative links in local files, provide a root dir
В локальных файлах есть ссылки от корня сайта, а папку корня программе не назвали. В прогоне такая ссылка дала ошибку и код 2. Добавь --root-dir с полным путём к папке собранного сайта.
Input 'nosuch.md' not found as file and not a valid URL
Входного файла по такому пути нет. Программа вернула код 1 и ничего не проверила. Проверь путь или запусти lychee из папки проекта.
Ссылка на раздел страницы (#раздел) с опечаткой не попала в ошибки
По справке программы проверка якорей включается ключом --include-fragments. В нашем прогоне с этим ключом ссылка на #nope дала ошибку «Cannot find fragment», без ключа мы её не запускали. Добавь --include-fragments.
Проверка
✓ Проверено 14.10.2026: Ubuntu 24.04 (x86_64) в одноразовом контейнере Docker на сервере, от root: lychee 0.24.2 из архива выпуска на GitHub, локальный сервер python3 http.server для внешних ссылок.
- Когда
- 14.10.2026
- Среда
- Ubuntu 24.04 (x86_64) в одноразовом контейнере Docker на сервере, от root: lychee 0.24.2 из архива выпуска на GitHub, локальный сервер python3 http.server для внешних ссылок
- Объём
- Установили и прогнали задачу на тестовых данных
- Что именно сделали
- Одноразовый контейнер Ubuntu 24.04 без данных и ключей. Скачали архив lychee-x86_64-unknown-linux-gnu.tar.gz со страницы выпуска, сверили sha256 с файлом .sha256 выпуска и положили файл lychee в ~/.local/bin. lychee --version вывел «lychee 0.24.2».
- Скрипт прогона сам сделал тестовый сайт: три страницы HTML, файл Markdown, картинку, ссылки на пропавшие страницу, картинку и файл, якорь #team и несуществующий #nope, абсолютную ссылку и адрес в блоке кода. Рядом поднял локальный сервер, где одна страница есть, а второй нет.
- Список ссылок через --dump: 13 строк, адреса из блока кода среди них нет.
- Проверка с --offline нашла 4 ошибки по файлам и якорю, внешние адреса пропустила, соединений netwatch не записал. Код выхода 2.
- Полная проверка с якорями и --root-dir за 500 мс: 13 разных ссылок, 5 ошибок, к четырём добавилась страница сервера с ответом 404. Живая страница, #team и абсолютная ссылка прошли, example.com и mailto программа пропустила. Каждую ошибку скрипт сверил по JSON.
- Ключ --exclude убрал из ошибок одну страницу. Чистая папка прошла с кодом 0, без --root-dir абсолютная ссылка дала ошибку и код 2, отсутствующий входной файл дал код 1. Файл .lycheecache появился только с ключом --cache.
- Файлы сайта после всех проверок совпали по sha256. Скрипт сверил каждый результат сам и только после этого напечатал TASK_OK.
- Удалили файл lychee и проверили, что команда больше не находится. Контейнер после прогона удалён вместе с тестовыми файлами.
| Дата | Версия | Объём | Где | Итог |
|---|---|---|---|---|
| 14.10.2026 | 0.24.2 | задача | контейнер, Linux | получилось |
«Проверено» ставим, только когда сами поставили программу и прогнали её на задаче. Сверка ссылок и вывод версии так не называются.
Похожие программы
- HugoПревращает тексты в Markdown в статичный сайт или блог: HTML-страницы, карта сайта и лента RSS. Показывает сайт на компьютере, папку public кладут на хостинг статичных сайтов.
- CaddyВеб-сервер, который раздаёт собранный сайт из папки. По документации сам получает HTTPS-сертификат для домена, если DNS указывает на сервер и порты 80 и 443 открыты.
Программу делают её авторы. Мы сверяем официальные источники и описываем, что ей нужно, но код остаётся чужим. Перед установкой посмотри план агента: что он поставит и что поменяет в системе.