Skip to content
FunCoding

Search

Search docs, Skills and MCP

hackernews-intel

Monitors Hacker News for user-configured keywords, deduplicates against a local SQLite cache, and sends Slack alerts for new matching posts. Use when asked to monitor Hacker News for mentions, track keywords on HN, get alerts when something is posted about a topic on Hacker News, or set up HN keyword monitoring. Trigger when a user mentions Hacker News alerts, HN monitoring, keyword tracking on HN, or wants to know when a topic appears on Hacker News.

数据库与数据674skills/hackernews-intel/SKILL.md

Install

Send this to Claude Code, Codex or Cursor. The agent checks the Skill for safety first and installs it only after you confirm.

读取 https://funcoding.ai/skills/varnan-tech/opendirectory/hackernews-intel/install.md ,按里面的步骤帮我安装这个 Skill。

SKILL.md

Hacker News Intel

Monitor Hacker News for keywords. On each run, fetch new posts via the HN Algolia API, deduplicate against a local SQLite cache, and send Slack alerts for unseen matches. Run manually or schedule via cron or GitHub Actions.


Step 1: Check Setup

1a. Verify required environment variables

Check that these are set:

  • HN_KEYWORDS (required): comma-separated list of keywords to monitor
  • SLACK_WEBHOOK (required): Slack Incoming Webhook URL for alerts

If either is missing, stop and tell the user:

  • HN_KEYWORDS: list the topics you want to monitor, comma-separated. Example: claude code,LLM agents,deno runtime
  • SLACK_WEBHOOK: create an Incoming Webhook at https://api.slack.com/apps. Select your workspace, enable Incoming Webhooks, and copy the URL.

1b. Verify script dependencies

ls /Users/ksd/Desktop/Varnan_skills/hackernews-intel/node_modules/better-sqlite3 2>/dev/null

If missing:

cd /Users/ksd/Desktop/Varnan_skills/hackernews-intel && npm install

Step 2: Run the Monitor

cd /Users/ksd/Desktop/Varnan_skills/hackernews-intel && node scripts/monitor-hn.js

Flags:

  • --dry-run: print matches to stdout without sending any Slack alerts. Use this to preview what would be alerted before committing.
  • --days=N: on the first run, look back N days (default: 1). Only applies when the SQLite cache is empty.
  • --reset: clear the cache and start fresh. Use when you change your keyword list significantly.

What the script does:

  1. Reads HN_KEYWORDS from environment, splits by comma, trims whitespace
  2. Opens (or creates) a SQLite database at the path in HN_DB_PATH (default: ./hn-intel.db)
  3. For each keyword, calls https://hn.algolia.com/api/v1/search_by_date with numericFilters=created_at_i>lastSeen
  4. For each result, checks if the objectID is already in seen_posts — skips if yes
  5. If HN_MIN_POINTS is set, skips posts below that threshold
  6. For new matching posts, sends a Slack alert and inserts the objectID into the cache
  7. Updates poll_log with the run summary
  8. Prints a summary to stdout

Step 3: Review Results

After the script runs, read its stdout output. It will report:

Run complete.
  Keywords checked: N
  Posts found: N
  Posts alerted: N
  Posts skipped (already seen): N
  Errors: N

If Posts found: 0 and you expect results, check:

  • Are the keywords specific enough? Very broad terms (e.g. "AI") may return 0 results if HN Algolia returns too many and the time window is narrow
  • Is the --days window large enough for the first run? Try --days=7
  • Is the DB cache too aggressive? Try --reset to clear it and rerun

If Posts alerted: 0 but Posts found: N, the deduplication is working — those posts were seen in a previous run.


Step 4: Schedule the Monitor

Option A: cron (macOS/Linux)

Add to crontab to run every 4 hours:

crontab -e

Add this line (adjust the path to match your install):

0 */4 * * * cd /Users/ksd/Desktop/Varnan_skills/hackernews-intel && node scripts/monitor-hn.js >> /tmp/hn-intel.log 2>&1

Option B: GitHub Actions (recommended for teams)

Create .github/workflows/hn-intel.yml in any repo:

name: HN Intel Monitor
on:
  schedule:
    - cron: '0 */4 * * *'
  workflow_dispatch:

jobs:
  monitor:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '20'
      - name: Install dependencies
        run: npm install
        working-directory: hackernews-intel
      - name: Run monitor
        run: node scripts/monitor-hn.js
        working-directory: hackernews-intel
        env:
          HN_KEYWORDS: ${{ secrets.HN_KEYWORDS }}
          SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
          HN_MIN_POINTS: ${{ secrets.HN_MIN_POINTS }}

Add HN_KEYWORDS, SLACK_WEBHOOK, and optionally HN_MIN_POINTS as repository secrets.

Note: GitHub Actions does not persist files between runs, so the SQLite cache resets each run. This means every run will find all posts within the default 1-day lookback window again. For persistent dedup on GitHub Actions, store the DB in a persistent location (S3, artifact cache, or a dedicated branch).


Step 5: Tune Keywords and Thresholds

Adding or changing keywords: Update HN_KEYWORDS in your .env or environment. No restart needed — the script reads it fresh each run.

Setting a minimum points threshold: Set HN_MIN_POINTS=10 to only alert on posts with 10 or more points. This cuts noise for broad keywords.

Including comments (not just stories): Set HN_INCLUDE_COMMENTS=true to also monitor comments mentioning the keyword. Off by default — comments generate significantly more volume.

Resetting the cache: Run node scripts/monitor-hn.js --reset to clear seen_posts and poll_log. The next run fetches fresh from the lookback window.

Testing a new keyword: Run node scripts/monitor-hn.js --dry-run --days=7 to see the last 7 days of matching posts without alerting anyone.

Similar Skills

xlsx
anthropics/skills180k

xlsx

Use this skill any time a spreadsheet file is the primary input or output. This means any task where the user wants to: open, read, edit, or fix an existing .xlsx, .xlsm, .xltx, .csv, or .tsv file (e.g., adding columns, computing formulas, formatting, charting, cleaning messy data); create a new spreadsheet from scratch or from other data sources; or convert between tabular file formats. Trigger especially when the user references a spreadsheet file by name or path — even casually (like "the xlsx in my downloads") — and wants something done to it or produced from it. Also trigger for cleaning or restructuring messy tabular data files (malformed rows, misplaced headers, junk data) into proper spreadsheets. The deliverable must be a spreadsheet file. Do NOT trigger when the primary deliverable is a Word document, HTML report, standalone Python script, database pipeline, or Google Sheets API integration, even if tabular data is involved.

Databases & data

deprecation-and-migration
addyosmani/agent-skills103k

deprecation-and-migration

Manages deprecation and migration. Use when removing old systems, APIs, or features. Use when migrating users from one implementation to another. Use when migrating a database schema in production, such as renaming or dropping a column without downtime (expand/contract). Use when deciding whether to maintain or sunset existing code.

Databases & data

host-observer
thedotmack/claude-mem98k

host-observer

Use this when fulfilling claude-mem observer jobs on Grok Bot: reply only skip_summary or one full observation XML, never prose.

Databases & data

babysit
thedotmack/claude-mem98k

babysit

Watch a pull request or review cycle until it is ready to merge. Use when asked to babysit, monitor, or keep checking PR comments, reviews, and CI until all actionable issues are resolved.

Databases & data

mem-search
thedotmack/claude-mem98k

mem-search

Search claude-mem's persistent cross-session memory database. Use when user asks "did we already solve this?", "how did we do X last time?", or needs work from previous sessions.

Databases & data

Agent Cost Report
thedotmack/claude-mem98k

Agent Cost Report

Believable agent cost report for any period, default the last 7 full days PT, not counting today. Measured tokens from Claude Code transcripts priced at OpenRouter list prices (ESTIMATED), measured provider spend when a sanctioned source exists, note-taker cost separate, Timing-style HTML/PDF plus report.json, line-items.csv, evidence.json.

Databases & data