К основному содержанию
скилл CX Codex

hackernews · imoonkey — скилл для Claude Code: что делает и как установить

Скилл даёт агенту доступ к Hacker News: чтение лент, тредов и авторов через API, а также отправка комментариев и апвоутов через браузер.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add imoonkey/openweb --skill hackernews -a claude-code
Открыть на GitHub

Что делает hackernews

Скилл подключает модели к Hacker News двумя путями. Для чтения публикаций, веток обсуждений и вакансий он отправляет прямые запросы в Algolia Search API и Firebase API. Браузер при этом не запускается. Текст постов и комментариев отдаётся с фрагментами HTML, поэтому перед показом агенту требуется очищать теги.

Для записи поведение меняется. Добавление комментариев, апвоуты и отмена голосов выполняются через контекст страницы в браузере и требуют авторизованной сессии. Удалить свой комментарий агент сможет только в пределах двухчасового окна Hacker News.

Какие задачи решает

  • Искать свежие или лучшие посты на Hacker News по ключевым словам и доменам
  • Выгружать ветки комментариев к конкретной публикации
  • Проверять профиль пользователя, карму и историю его записей
  • Оставлять комментарии в обсуждениях и голосовать за новости

Примеры запросов агенту

  • Покажи топ-5 постов с Hacker News за сегодня и выдели темы про базы данных
  • Собери ветку комментариев к истории с id 42407357 и перескажи ключевые споры
  • Найди последние публикации с домена github.com на Hacker News

Как установить hackernews

1Через Skills CLI (Vercel)

npx skills add imoonkey/openweb --skill hackernews -a claude-code

2Вручную: положить файлы

~/.claude/skills/hackernews/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/hackernews/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о hackernews

Как установить hackernews в Claude Code?

Выполните команду npx skills add imoonkey/openweb --skill hackernews -a claude-code в терминале.

Зачем нужен скилл hackernews?

Он позволяет читать ленты, комментарии и профили Hacker News без ручного веб-скрейпинга, а также голосовать и оставлять ответы.

Нужен ли запущенный браузер для чтения новостей?

Нет, чтение лент и поиск работают напрямую через Algolia и Firebase API. Браузер с авторизацией требуется только для апвоутов и отправки комментариев.

Исходный текст

SKILL.md · MIT
# Hacker News

## Overview
Tech news aggregator by Y Combinator. Reads via Algolia Search API and Firebase API (node-direct). Writes via browser page context.

## Workflows

### Browse and read a story
1. `getTopStories` → pick story → note `objectID`
2. `getStoryDetail(id)` → title, url, points, author, nested comment tree

### Upvote a story
1. `getTopStories` → pick story → `objectID`
2. `upvoteStory(id=objectID)` → `{ok, id}` (requires login)
3. `unvoteStory(id=${prev.upvoteStory.id})` → `{ok, id}` — reverses the upvote (only valid while upvoted)

### Comment on a story
1. `getStoryDetail(id)` → `item.id`
2. `addComment(parent=item.id, text)` → `{ok, parent, id}` — `id` is the new comment's id (requires login)
3. `deleteComment(id=${prev.addComment.id})` → `{ok, id}` — must be within HN's ~2-hour delete window

### Reply to a comment
1. `getStoryDetail(id)` → `children[]` → pick comment → `comment.id`
2. `addComment(parent=comment.id, text)` → `{ok, parent, id}` — posts reply (requires login)

### Explore a user
1. `getUserProfile(id)` → karma, created, about
2. `getUserSubmissions(id)` → stories they posted
3. `getUserComments(id)` → their comment history

### Find stories from a domain
1. `getStoriesByDomain(query)` → all stories linking to that domain

### Read latest activity
1. `getNewComments` → newest comments across all stories

## Operations

| Operation | Intent | Key Input | Key Output | Transport |
|-----------|--------|-----------|------------|-----------|
| getTopStories | browse top stories | — | objectID, title, url, author, points, num_comments | L1 node (Algolia) |
| getNewestStories | browse newest | — | same as above | L1 node (Algolia) |
| getBestStories | all-time highest-voted | — | same as above | L1 node (Algolia) |
| getAskStories | recent Ask HN | — | same as above | L1 node (Algolia) |
| getShowStories | recent Show HN | — | same as above | L1 node (Algolia) |
| getJobPostings | browse jobs | — | objectID, title, url, created_at | L1 node (Algolia) |
| getFrontPageStories | time-based front page | — | same as feeds | L1 node (Algolia) |
| getStoryDetail | story + comment tree | id (item ID) | id, title, url, points, children[] | L1 node (Algolia) |
| getUserProfile | user profile | id (username) | id, karma, created, about | L1 node (Firebase) |
| getNewComments | newest comments | — | objectID, author, comment_text, story_title | L1 node (Algolia) |
| getStoryComments | comment thread | id, limit? | storyId, commentCount, comments[] | adapter (Algolia) |
| getStoriesByDomain | recent domain stories | query (domain) | objectID, title, url, author, points | L1 node (Algolia) |
| getUserSubmissions | user's stories | id (username) | objectID, title, url, author, points | adapter (Algolia) |
| getUserComments | user's comments | id (username) | objectID, author, comment_text | adapter (Algolia) |
| upvoteStory | upvote item | id <- feeds/getStoryDetail | ok, id | adapter (page) |
| unvoteStory | reverse upvote | id <- upvoteStory | ok, id | adapter (page) |
| addComment | post comment | parent <- getStoryDetail, text | ok, parent, id | adapter (page) |
| deleteComment | delete own comment | id <- addComment | ok, id | adapter (page); ~2-hour window |

## Raw Algolia wire shape

Read operations hit `https://hn.algolia.com/api/v1/search` over the node transport. The raw Algolia response is:

```json
{
  "hits": [ /* ... */ ],
  "nbHits": 1234,
  "hitsPerPage": 20,
  "page": 0,
  "nbPages": 50,
  "processingTimeMS": 3,
  "query": "",
  "params": "tags=story"
}
```

The spec declares `unwrap: hits`, so adapters/agents receive just the `hits` array — the envelope (`nbHits`, `page`, etc.) is stripped by the runtime.

Each hit carries Algolia-indexed fields:

- `objectID` — story/comment id as a **string** (cast if you need a number)
- `title`, `url`, `author`, `points`, `num_comments`
- `story_text`, `comment_text` — HTML strings (see note below)
- `created_at` (ISO), `created_at_i` (unix seconds)
- `_tags` — e.g. `["story", "author_pg", "story_12345"]`
- `story_id`, `parent_id` — for comments

### Templated reads

Some reads template the `id` param into an Algolia filter/tag expression:

- `getStoryComments` → `numericFilters=story_id={id}`
- `getUserSubmissions` → `tags=story,author_{id}`
- `getUserComments` → `tags=comment,author_{id}`

Because `id` is used as a template source, the runtime does **not** emit it as a bare query key — only the interpolated filter/tag appears on the wire.

### HTML in text fields

`comment_text` and `story_text` are HTML fragments (typically wrapped in `<p>` or `<pre>`). When rendering, strip those tags (and decode entities) rather than displaying raw markup.

## Quick Start

```bash
# Browse top stories (node-direct, no browser needed)
openweb hackernews exec getTopStories '{}'

# Get story detail with full comment tree
openweb hackernews exec getStoryDetail '{"id": 42407357}'

# Get comments for a story (with limit)
openweb hackernews exec getStoryComments '{"id": 42407357, "limit": 10}'

# Look up a user (Firebase API)
openweb hackernews exec getUserProfile '{"id": "pg"}'

# User's submitted stories
openweb hackernews exec getUserSubmissions '{"id": "pg"}'

# Stories from a domain
openweb hackernews exec getStoriesByDomain '{"query": "github.com"}'

# Latest comments site-wide
openweb hackernews exec getNewComments '{}'

# Upvote a story (requires browser + login)
openweb hackernews exec upvoteStory '{"id": 42407357}'

# Reverse the upvote (only valid while currently upvoted)
openweb hackernews exec unvoteStory '{"id": 42407357}'

# Comment on a story (requires browser + login)
openweb hackernews exec addComment '{"parent": 42407357, "text": "Great article!"}'

# Delete your own comment (HN ~2-hour delete window)
openweb hackernews exec deleteComment '{"id": 47830121}'
```

© imoonkey · MIT · imoonkey/openweb

Похожие скиллы

Все скиллы по теме «Браузер и парсинг» →

Сначала — hackernews от других авторов.

hackernews okou-ai Скилл запрашивает новости, комментарии и профили с Hacker News через официальный API. Помогает отслеживать тренды индустрии прямо в окне терминала. CX Codex +1 3 200установок agent-browser vercel-labs Скилл управляет браузером через CLI: открывает страницы, заполняет формы, нажимает кнопки и проверяет веб-приложения. Подходит для задач, где агенту нужно действовать в интерфейсе. CX Codex +1 1 200 000установок webapp-testing официальный anthropics Скилл запускает проверки локальных веб-приложений через Playwright: помогает отлаживать UI, делать скриншоты и смотреть логи браузера. 186 758установок computer-use stablyai Скилл ведёт видимое окно приложения через orca computer: читает дерево доступности, кликает, печатает и снимает скриншоты. Нужен, когда задача упирается в интерфейс. CX Codex +1 239 600установок browser-use browser-use Даёт агенту живой Chrome через CDP: клики, ввод, скриншоты и страницы, которым нужен JS или ваша логин-сессия. CX Codex +1 98 200установок playwright-cli microsoft Скилл, который даёт агенту браузер: открыть страницу, кликнуть по элементу, снять снимок и разобрать тесты Playwright. CX Codex +1 195 700установок last30days mvanhorn Собирает посты и реакции по любой теме за последние 30 дней из Reddit, X, YouTube, TikTok, Hacker News, Polymarket, GitHub и веба. Пригодится, когда нужно понять, что реально говорят люди, а не что пишут в обзорах. CX Codex +1 53 000установок

Из того же набора12

notion Скилл даёт агенту доступ к рабочему пространству Notion: искать страницы, читать содержимое, запрашивать базы данных и создавать записи. CX Codex +1 ★ 71звёзд репо grubhub Скилл ищет рестораны рядом с заданными координатами, показывает меню и цены, а также оценивает доставку или самовывоз. Пригодится, чтобы сравнить варианты перед заказом. CX Codex +1 ★ 71звёзд репо google-maps Скилл для ИИ-агентов: ищет места, достаёт детали, отзывы и фото, строит маршруты и переводит адреса в координаты. CX Codex +1 ★ 71звёзд репо google-flights Ищет авиабилеты через Google Flights, отслеживает динамику цен и выдаёт детали бронирования прямо в терминале агента. CX Codex +1 ★ 71звёзд репо github Скилл помогает искать репозитории, читать их данные и управлять issues, комментариями, звёздами и подписками. Перед изменением репозитория учитывайте ограничения отдельных операций записи. CX Codex +1 ★ 71звёзд репо doordash Скилл для работы с DoorDash через CLI: ищет рестораны, показывает меню, ведёт корзину и историю заказов. CX Codex +1 ★ 71звёзд репо discord Управляет чатами и серверами Discord через CLI-утилиту openweb. Пригодится агентам для чтения каналов и отправки ответов прямо из терминала. CX Codex +1 ★ 71звёзд репо costco Скилл даёт агенту поиск товаров Costco, сравнение, отзывы, доставку и работу с корзиной. Подходит для проверки покупки перед заказом. CX Codex +1 ★ 71звёзд репо

Спонсоры проекта

Компании, которые помогают держать аналитику открытой