← 返回 Skills 市场
xiaobenyang-com

HackerNews数据服务

作者 xiaobenyang-com · GitHub ↗ · v1.0.7 · MIT-0
cross-platform ⚠ pending
52
总下载
0
收藏
0
当前安装
1
版本数
在 OpenClaw 中安装
/install hackernews-search
功能描述
一个通过Model Context Protocol提供HackerNews内容搜索、检索和分析的服务,适用于AI代理和开发者。
使用说明 (SKILL.md)

HackerNews数据服务

一个通过Model Context Protocol提供HackerNews内容搜索、检索和分析的服务,适用于AI代理和开发者。


⚠️ 强制要求:API 密钥

此 Skill 必须配置 API 密钥才能使用。

  • 首次使用时,如果 .env 中没有 XBY_APIKEY必须使用 AskUserQuestion 工具向用户询问 API 密钥
  • 拿到用户提供的密钥后,调用 scripts.config.set_api_key(api_key) 保存,然后继续处理
  • 获取 API 密钥:https://xiaobenyang.com
  • 禁止在缺少 API 密钥时自行搜索或编造数据

工作流程(必须遵守)

你(大模型)是路由层,负责理解用户意图、选择工具、提取参数。代码只负责调用API。

用户输入 → 你选择工具 → 提取该工具需要的参数 → 调用 scripts.tools 中的函数 → 返回结果给用户

步骤

  1. 检查 API 密钥:如果 scripts.config.settings.api_key 为空,使用 AskUserQuestion 询问用户,拿到后调用 scripts.config.set_api_key(key) 保存
  2. 选择工具:根据用户意图从下方工具列表中选择对应的工具函数
  3. 提取参数:根据选中的工具,提取该工具需要的参数
  4. 调用工具:使用关键字参数调用 scripts.tools 中的函数,例如 scripts.tools.search_schools(score='520', province='北京', category='综合')
  5. 返回结果:将工具返回的 raw 数据整理后展示给用户

工具选择规则

根据用户意图选择对应的工具函数:

用户意图 工具函数
Search HackerNews for stories, comments, and other content by keyword.

Supports:

  • Keyword search across titles, text, and authors
  • Tag filtering (story, comment, poll, show_hn, ask_hn, front_page, author_USERNAME)
  • Numeric filters for points, comments, and dates
  • Pagination with customizable results per page
  • Advanced filtering with OR logic and multiple conditions

Basic Examples:

  • Search for AI stories: { "query": "AI", "tags": ["story"] }
  • Find popular posts: { "query": "Python", "numericFilters": ["points>=100"] }
  • Filter by author: { "query": "startup", "tags": ["author_pg"] }
  • Date range: { "query": "startup", "numericFilters": ["created_at_i>1640000000"] }

Advanced Filtering Examples:

  • High engagement posts: { "query": "programming", "numericFilters": ["points>=100", "num_comments>=50"] }
  • OR logic for tags: { "query": "web", "tags": ["(story,poll)"] } - returns stories OR polls
  • Author with filters: { "query": "", "tags": ["author_pg", "story"], "numericFilters": ["points>=50"] }
  • Multiple conditions: { "query": "AI", "tags": ["story"], "numericFilters": ["points>=200", "num_comments>=100"] }

Numeric Filter Operators: \x3C (less than), \x3C= (less than or equal), = (equal), >= (greater than or equal), > (greater than) Numeric Filter Fields: points, num_comments, created_at_i (Unix timestamp)

Tag Syntax:

  • Single tag: ["story"] - only stories
  • Multiple tags (AND): ["story", "show_hn"] - stories that are also show_hn
  • OR logic: ["(story,poll)"] - stories OR polls
  • Author filter: ["author_USERNAME"] - posts by specific author

Returns paginated results with hits, total count, and page information. | scripts.tools.search_posts | | Retrieve posts currently on the HackerNews front page.

Returns stories sorted by HackerNews ranking algorithm. The front page typically contains the most popular and trending stories.

Supports:

  • Pagination to view beyond the first page
  • Customizable results per page (default: 30)
  • All posts are tagged with 'front_page'

Examples:

  • Get first page: { }
  • Get with custom page size: { "hitsPerPage": 50 }
  • Get second page: { "page": 1 }

Returns the same structure as search results with hits, pagination info, and metadata. | scripts.tools.get_front_page | | Retrieve the most recent HackerNews posts sorted by date.

Returns posts in chronological order (newest first), including all types of content unless filtered.

Supports:

  • Filter by content type using tags (story, comment, poll, show_hn, ask_hn, etc.)
  • Pagination to view older posts
  • Customizable results per page (default: 20)
  • Empty query to get all recent posts

Examples:

  • Get latest stories: { "tags": ["story"] }
  • Get latest comments: { "tags": ["comment"] }
  • Get all recent activity: { }
  • Get with custom page size: { "hitsPerPage": 50 }

Use this to monitor real-time HackerNews activity or find the newest content. | scripts.tools.get_latest_posts | | Retrieve detailed information about a specific HackerNews item by ID.

Returns complete item details including the full nested comment tree. Use this to:

  • View a story with all comments
  • Read a specific comment with its replies
  • Explore discussion threads in depth
  • Get complete metadata for any item

Features:

  • Full nested comment tree (all levels)
  • Complete item metadata (title, url, text, points, author, etc.)
  • Works for stories, comments, polls, and poll options
  • Includes creation time and item type

Examples:

  • Get story with comments: { "itemId": "38456789" }
  • Get specific comment: { "itemId": "38456790" }
  • Get poll: { "itemId": "126809" }

Note: Large comment threads (>500 comments) may take 2-3 seconds to load due to nested fetching. Returns error if item doesn't exist or has been deleted. | scripts.tools.get_item | | Retrieve public profile information for a HackerNews user.

Returns user profile including karma, bio, and account creation date. Use this to:

  • Check user reputation (karma score)
  • Read user bio and about information
  • See when account was created
  • Verify user existence before searching their content

Features:

  • Username (case-sensitive)
  • Karma score (total upvotes received)
  • About/bio text (may contain HTML)
  • Account creation date (Unix timestamp)

Examples:

  • Get famous user: { "username": "pg" }
  • Check moderator: { "username": "dang" }
  • Verify author: { "username": "tptacek" }

Username validation:

  • Alphanumeric characters and underscores only
  • Case-sensitive
  • Must exist on HackerNews

Returns error if user doesn't exist or username format is invalid. | scripts.tools.get_user |

如果参数不完整,使用 AskUserQuestion 向用户询问缺失的参数。


工具函数说明


scripts.tools.search_posts

工具描述:Search HackerNews for stories, comments, and other content by keyword.

Supports:

  • Keyword search across titles, text, and authors
  • Tag filtering (story, comment, poll, show_hn, ask_hn, front_page, author_USERNAME)
  • Numeric filters for points, comments, and dates
  • Pagination with customizable results per page
  • Advanced filtering with OR logic and multiple conditions

Basic Examples:

  • Search for AI stories: { "query": "AI", "tags": ["story"] }
  • Find popular posts: { "query": "Python", "numericFilters": ["points>=100"] }
  • Filter by author: { "query": "startup", "tags": ["author_pg"] }
  • Date range: { "query": "startup", "numericFilters": ["created_at_i>1640000000"] }

Advanced Filtering Examples:

  • High engagement posts: { "query": "programming", "numericFilters": ["points>=100", "num_comments>=50"] }
  • OR logic for tags: { "query": "web", "tags": ["(story,poll)"] } - returns stories OR polls
  • Author with filters: { "query": "", "tags": ["author_pg", "story"], "numericFilters": ["points>=50"] }
  • Multiple conditions: { "query": "AI", "tags": ["story"], "numericFilters": ["points>=200", "num_comments>=100"] }

Numeric Filter Operators: \x3C (less than), \x3C= (less than or equal), = (equal), >= (greater than or equal), > (greater than) Numeric Filter Fields: points, num_comments, created_at_i (Unix timestamp)

Tag Syntax:

  • Single tag: ["story"] - only stories
  • Multiple tags (AND): ["story", "show_hn"] - stories that are also show_hn
  • OR logic: ["(story,poll)"] - stories OR polls
  • Author filter: ["author_USERNAME"] - posts by specific author

Returns paginated results with hits, total count, and page information.

参数定义

参数名称 参数类型 是否必填 默认值 描述
query string true Search query text (minimum 1 character)
tags array false Optional filter tags (e.g., ['story'], ['comment'], ['(story,poll)'] for OR logic, ['author_pg'] for author filter)
numericFilters array false Optional numeric filters (e.g., ['points>=100'], ['num_comments>=50'], ['created_at_i>1640000000']). Multiple filters use AND logic.
page number false 0.0 Page number (0-indexed, default: 0)
hitsPerPage number false 20.0 Results per page (1-1000, default: 20)

scripts.tools.get_front_page

工具描述:Retrieve posts currently on the HackerNews front page.

Returns stories sorted by HackerNews ranking algorithm. The front page typically contains the most popular and trending stories.

Supports:

  • Pagination to view beyond the first page
  • Customizable results per page (default: 30)
  • All posts are tagged with 'front_page'

Examples:

  • Get first page: { }
  • Get with custom page size: { "hitsPerPage": 50 }
  • Get second page: { "page": 1 }

Returns the same structure as search results with hits, pagination info, and metadata.

参数定义

参数名称 参数类型 是否必填 默认值 描述
page number false 0.0 Page number (0-indexed, default: 0)
hitsPerPage number false 30.0 Results per page (1-1000, default: 30)

scripts.tools.get_latest_posts

工具描述:Retrieve the most recent HackerNews posts sorted by date.

Returns posts in chronological order (newest first), including all types of content unless filtered.

Supports:

  • Filter by content type using tags (story, comment, poll, show_hn, ask_hn, etc.)
  • Pagination to view older posts
  • Customizable results per page (default: 20)
  • Empty query to get all recent posts

Examples:

  • Get latest stories: { "tags": ["story"] }
  • Get latest comments: { "tags": ["comment"] }
  • Get all recent activity: { }
  • Get with custom page size: { "hitsPerPage": 50 }

Use this to monitor real-time HackerNews activity or find the newest content.

参数定义

参数名称 参数类型 是否必填 默认值 描述
tags array false Optional filter tags (e.g., ['story'], ['comment'])
page number false 0.0 Page number (0-indexed, default: 0)
hitsPerPage number false 20.0 Results per page (1-1000, default: 20)

scripts.tools.get_item

工具描述:Retrieve detailed information about a specific HackerNews item by ID.

Returns complete item details including the full nested comment tree. Use this to:

  • View a story with all comments
  • Read a specific comment with its replies
  • Explore discussion threads in depth
  • Get complete metadata for any item

Features:

  • Full nested comment tree (all levels)
  • Complete item metadata (title, url, text, points, author, etc.)
  • Works for stories, comments, polls, and poll options
  • Includes creation time and item type

Examples:

  • Get story with comments: { "itemId": "38456789" }
  • Get specific comment: { "itemId": "38456790" }
  • Get poll: { "itemId": "126809" }

Note: Large comment threads (>500 comments) may take 2-3 seconds to load due to nested fetching. Returns error if item doesn't exist or has been deleted.

参数定义

参数名称 参数类型 是否必填 默认值 描述
itemId string true HackerNews item ID (e.g., '38456789')

scripts.tools.get_user

工具描述:Retrieve public profile information for a HackerNews user.

Returns user profile including karma, bio, and account creation date. Use this to:

  • Check user reputation (karma score)
  • Read user bio and about information
  • See when account was created
  • Verify user existence before searching their content

Features:

  • Username (case-sensitive)
  • Karma score (total upvotes received)
  • About/bio text (may contain HTML)
  • Account creation date (Unix timestamp)

Examples:

  • Get famous user: { "username": "pg" }
  • Check moderator: { "username": "dang" }
  • Verify author: { "username": "tptacek" }

Username validation:

  • Alphanumeric characters and underscores only
  • Case-sensitive
  • Must exist on HackerNews

Returns error if user doesn't exist or username format is invalid.

参数定义

参数名称 参数类型 是否必填 默认值 描述
username string true HackerNews username (alphanumeric + underscores, e.g., 'pg')


返回值处理

工具函数返回 dict 对象:

  • result["raw"] - API 原始返回数据(JSON),直接将此数据整理后展示给用户
  • result["success"] - 是否成功(True/False)
  • result["message"] - 状态消息

项目结构

xiaobenyang_gaokao_skill/
├── scripts/
│   ├── __init__.py
│   ├── config.py       # 配置管理 + set_api_key()
│   ├── call_api.py      # API 客户端 + call_api()
│   └── tools.py         # 工具函数(直接调用)
├── requirements.txt
└── SKILL.md

注意事项

  1. API 密钥是必需的,无密钥时必须通过 AskUserQuestion 询问用户
  2. 禁止在缺少 API 密钥时自行搜索或编造数据
能力标签
requires-sensitive-credentials
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install hackernews-search
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /hackernews-search 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.7
- Initial release of skill documentation (SKILL.md) in Chinese, providing detailed usage instructions for HackerNews数据服务. - Specifies mandatory requirement for user-provided API key, with instructions for acquisition and storage. - Describes step-by-step workflow for tool selection, parameter extraction, and function invocation. - Offers comprehensive reference of available tool functions, parameter definitions, and decision logic for handling user queries. - Includes advanced usage examples for search, filtering, and data retrieval from HackerNews.
元数据
Slug hackernews-search
版本 1.0.7
许可证 MIT-0
累计安装 0
当前安装数 0
历史版本数 1
常见问题

HackerNews数据服务 是什么?

一个通过Model Context Protocol提供HackerNews内容搜索、检索和分析的服务,适用于AI代理和开发者。 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 52 次。

如何安装 HackerNews数据服务?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install hackernews-search」即可一键安装,无需额外配置。

HackerNews数据服务 是免费的吗?

是的,HackerNews数据服务 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

HackerNews数据服务 支持哪些平台?

HackerNews数据服务 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 HackerNews数据服务?

由 xiaobenyang-com(@xiaobenyang-com)开发并维护,当前版本 v1.0.7。

💬 留言讨论