Skip to content
Productivity
Skill

/reddit-skill

Reddit: чтение постов и комментариев без ключей через веб-инструмент агента, RSS и публичный JSON; API для пользователей, сабреддитов и поиска. OAuth2, кеш, автоматический переход на RSS при отказе авторизации, опциональные write-операции с двойным предохранителем

BOOST
From plugin
polyakov-claude-skills
21522 skills1 command
Install
$ npx -y skills add artwist-polyakov/polyakov-claude-skills --skill reddit-skill --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/reddit-skill

Context preview

The summary Claude sees to decide when to auto-load this skill.

Reddit: чтение постов и комментариев без ключей через веб-инструмент агента, RSS и публичный JSON; API для пользователей, сабреддитов и поиска. OAuth2, кеш, автоматический переход на RSS при отказе авторизации, опциональные write-операции с двойным предохранителем

SKILL.md

reddit-skill.SKILL.md
name: reddit-skill
description: |
  Reddit: чтение постов и комментариев без ключей через веб-инструмент агента,
  RSS и публичный JSON; API для пользователей, сабреддитов и поиска. OAuth2, кеш,
  автоматический переход на RSS при отказе авторизации, опциональные write-операции
  с двойным предохранителем (REDDIT_ENABLE_WRITE=1 + --confirm).
  Triggers: reddit, reddit api, reddit subreddit, reddit user, reddit post,
  reddit search, парсинг reddit, посты reddit, комментарии reddit, реддит.

reddit-skill

Чтение публичных списков через RSS, постов и комментариев через `.json` без ключей, а также прямой доступ к Reddit API через OAuth2 без PRAW. Порт MCP-сервера [Arindam200/reddit-mcp](https://github.com/Arindam200/reddit-mcp) на shell-скрипты по образцу yandex-metrika / yandex-search-api.

Выбор способа чтения

Для публичного чтения по пользовательским подпискам, в том числе RSS-мониторинга, бери список из [config/subscriptions.txt](config/subscriptions.txt): одно название сабреддита на строку, без `r/`. Сабреддиты, явно заданные в запросе, имеют приоритет над сохранённым списком. Не ищи подписки в `.env` или аккаунте и не подключай браузерную сессию для получения этого списка. Если файл отсутствует или пуст, уточни сабреддиты у пользователя.

Если пользователь не указал способ, для публичного чтения сначала используй доступный встроенный инструмент чтения URL (`fetch`, `WebFetch`, `open` или аналог). Открывай конкретный адрес; результаты поиска сами по себе не заменяют содержимое:

  • **Пост и комментарии:** используй адрес с `.json`; для обычной ссылки добавь

`.json` к пути поста перед параметрами запроса, например `https://www.reddit.com/r/Python/comments/abc123/title/.json?limit=100&raw_json=1`.

  • **Список постов:** если инструмент поддерживает XML/Atom, открой RSS-ленту,

например `https://www.reddit.com/r/Python/top.rss?t=day&limit=25`.

Для этого способа не запускай `auth_check.sh` и не запрашивай ключи приложения. Список подписок хранится отдельно от `.env`; наличие или исправность ключей не является условием публичного чтения. При повторном мониторинге запрашивай свежие данные, если инструмент это позволяет; иначе укажи ограничение свежести.

Если инструмента нет, он не поддерживает формат, не вернул нужное содержимое или задача требует скрипта и локального кеша, используй команды ниже. Для чтения без ключей передавай `REDDIT_RSS_MODE=1`. Ошибка одного способа не доказывает недоступность другого.

Веб-инструмент может возвращать сокращённый текст вместо исходного JSON или RSS. Не выдавай такой ответ за полный файл и не обещай все комментарии: учитывай усечение, параметр `limit` и элементы `more`. Локальный кеш описан ниже только для скриптов; при чтении веб-инструментом не сообщай о сохранении файла, если он не был сохранён.

Настройка скриптов

Для мониторинга постов ключи приложения не нужны. Включить RSS явно:

REDDIT_RSS_MODE=1 sh scripts/subreddit_top.sh --subreddit singularity --time day --limit 25

`REDDIT_RSS_MODE=1` можно сохранить в `config/.env`. При передаче через окружение скрипт не читает `.env`. Для списка из `config/subscriptions.txt` передавай каждый сабреддит явно через `--subreddit`: скрипты сами список подписок не загружают. Для RSS есть стандартный User-Agent; его можно заменить через `REDDIT_USER_AGENT`.

Для полного доступа через API зарегистрировать **script-app** на https://www.reddit.com/prefs/apps и заполнить `config/.env`:

  • `REDDIT_CLIENT_ID`, `REDDIT_CLIENT_SECRET`
  • `REDDIT_USER_AGENT` (обязателен по правилам Reddit)

Подробная инструкция: [config/README.md](config/README.md).

Для write/me дополнительно:

  • `REDDIT_USERNAME`, `REDDIT_PASSWORD` — владелец script-app (без 2FA)
  • `REDDIT_ENABLE_WRITE=1` + `--confirm` на каждой write-команде

Поведение скриптов

1. **Cache-first** — токен, юзеры, сабреддиты, листинги кешируются по детерминированному ключу. 2. **Context window hygiene** — stdout ≤ 30 строк, полный JSON в `cache/listings/<hash>.json`. 3. **Выбор режима** — `REDDIT_RSS_MODE=1` включает RSS. Без ключей поддерживаемые команды чтения также используют RSS. С ключами выбирается user mode при наличии `REDDIT_USERNAME`+`REDDIT_PASSWORD`, иначе app-only. При отказе авторизации чтение постов автоматически переходит на RSS в текущем запуске; настройки на диске не меняются. 4. **Двойная защита write** — два уровня:

  • Без `REDDIT_ENABLE_WRITE=1` в `.env` write-скрипты **отказывают сразу** с понятной ошибкой (никакого dry-run — это «ворота» уровня окружения).
  • С `REDDIT_ENABLE_WRITE=1`, но без `--confirm` — **dry-run**: печатают что бы сделали, но не отправляют запрос.
  • Только при `REDDIT_ENABLE_WRITE=1` *и* `--confirm` команда реально идёт на Reddit.

5. **Rate-limit от заголовков** — читаем `x-ratelimit-remaining`, `x-ratelimit-reset`, `Retry-After`. На 429 один retry если ожидание ≤ 60s.

Использование скриптов

Проверка доступа

1. **Если выбран скрипт, запускай нужную команду чтения сразу.** Если нужно проверить доступ отдельно:

   sh scripts/auth_check.sh

Успех: `OK: RSS feed works`, `OK: app-only token works` или `OK: user token works`. Для RSS не запрашивай файл с ключами и не требуй регистрации приложения.

2. **Если нужна write-операция:**

  • Убедись, что в `.env` есть `REDDIT_USERNAME`+`REDDIT_PASSWORD`+`REDDIT_ENABLE_WRITE=1`

(без `REDDIT_ENABLE_WRITE=1` команда сразу падает с ошибкой — это намеренно)

  • Сначала запусти команду **без** `--confirm` — увидишь dry-run
  • Только после ревью пользователя — добавляй `--confirm`

3. **Имя сабреддита/юзера** можно передавать с префиксом или без: `r/python` ≡ `python`, `u/spez` ≡ `spez`.

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

RSS поддерживают `subreddit_top.sh`, `search.sh`, `user_posts.sh` и `auth_check.sh`. Параметры поиска, сортировки, периода и количества передаются в публичную ленту. `submission.sh` в этом же режиме читает `https://www.reddit.com/comments/{id}.json` без токена. Можно передать обычную ссылку поста, ссылку с `.

Read more
Ships withpolyakov-claude-skills

Набор скиллов для Claude Code.

Get the whole plugin

Other skills on polyakov-claude-skills.