lychee

Проект lycheeverse, авторы Matthias Endler и Thomas Zahner · лицензия Apache-2.0 или MIT

Проверяет ссылки сайта, HTML и Markdown перед выкладкой и находит страницы, которых нет, пропавшие картинки и якоря на несуществующие разделы. В прогоне у битых ссылок отчёт показал файл и строку.

macOS · Windows · LinuxНа компьютере, на сервере и в контейнереБесплатно, Apache-2.0 или MIT

✓ Проверено 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
Исходный код
github.com/lycheeverse/lychee
Лицензия
Apache-2.0 или MIT
Версия
0.24.2 на 14.10.2026
Системы
macOS · Windows · Linux
Где работает
На компьютере, на сервере и в контейнере
Цена
Бесплатно
Проверка
Проверено 14.10

Установить агентом

Для Claude Code, Codex, Hermes и любого агента с терминалом
Установи программу «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 для внешних ссылок
Объём
Установили и прогнали задачу на тестовых данных
Что именно сделали
  1. Одноразовый контейнер Ubuntu 24.04 без данных и ключей. Скачали архив lychee-x86_64-unknown-linux-gnu.tar.gz со страницы выпуска, сверили sha256 с файлом .sha256 выпуска и положили файл lychee в ~/.local/bin. lychee --version вывел «lychee 0.24.2».
  2. Скрипт прогона сам сделал тестовый сайт: три страницы HTML, файл Markdown, картинку, ссылки на пропавшие страницу, картинку и файл, якорь #team и несуществующий #nope, абсолютную ссылку и адрес в блоке кода. Рядом поднял локальный сервер, где одна страница есть, а второй нет.
  3. Список ссылок через --dump: 13 строк, адреса из блока кода среди них нет.
  4. Проверка с --offline нашла 4 ошибки по файлам и якорю, внешние адреса пропустила, соединений netwatch не записал. Код выхода 2.
  5. Полная проверка с якорями и --root-dir за 500 мс: 13 разных ссылок, 5 ошибок, к четырём добавилась страница сервера с ответом 404. Живая страница, #team и абсолютная ссылка прошли, example.com и mailto программа пропустила. Каждую ошибку скрипт сверил по JSON.
  6. Ключ --exclude убрал из ошибок одну страницу. Чистая папка прошла с кодом 0, без --root-dir абсолютная ссылка дала ошибку и код 2, отсутствующий входной файл дал код 1. Файл .lycheecache появился только с ключом --cache.
  7. Файлы сайта после всех проверок совпали по sha256. Скрипт сверил каждый результат сам и только после этого напечатал TASK_OK.
  8. Удалили файл lychee и проверили, что команда больше не находится. Контейнер после прогона удалён вместе с тестовыми файлами.
ДатаВерсияОбъёмГдеИтог
14.10.20260.24.2задачаконтейнер, Linuxполучилось

«Проверено» ставим, только когда сами поставили программу и прогнали её на задаче. Сверка ссылок и вывод версии так не называются.

Похожие программы

Программу делают её авторы. Мы сверяем официальные источники и описываем, что ей нужно, но код остаётся чужим. Перед установкой посмотри план агента: что он поставит и что поменяет в системе.