Daily Hacker News front page archive in Google Sheets

By General Input

Every night at 11pm UTC, append the top 30 Hacker News stories to a Google Sheet so you build a searchable history of what trended over time.

Integrations

  • Hacker News
  • Google Sheets

Type

Deterministic Code

Categories

  • Marketing
  • Operations

Build a code-based workflow that snapshots the Hacker News front page once a day and appends one row per story to a Google Sheet, so I end up with an append-only daily archive I can pivot later to find recurring topics, top authors, and score-vs-comment outliers.

Trigger: a cron schedule that runs every day at 23:00 UTC (11pm UTC).

Steps:

1. Call the Hacker News "Get Top Stories" operation to pull the ranked id list for the front page.

2. Take the top 30 ids from that array, preserving rank order (rank 1 = first id).

3. For each id, call the Hacker News "Get Item" operation in parallel (fan out 10 at a time) to hydrate the full story. Pull these fields per item: id, title, url, score, descendants (comment count), by (author), time (unix seconds), type, plus the dead and deleted flags.

4. Filter out any item where dead is true or deleted is true. Also drop nulls (Hacker News returns null with HTTP 200 for unknown ids).

5. For each remaining story, build a row with these fields, in this order: captured_at, rank, hn_id, title, url, hn_url, score, comments, author, posted_at, type.

Formatting rules:

- captured_at is the workflow run time, formatted as an ISO-8601 UTC string (e.g. 2026-05-28T23:00:00Z).

- posted_at is the item's time field converted from unix seconds to an ISO-8601 UTC string.

- hn_url is the discussion URL, built as https://news.ycombinator.com/item?id=<id>.

- url is the item's url field as-is. If the item has no url (Ask HN, etc.), leave that cell blank but still write the row.

- rank is the 1-based position in the top-30 slice (1 through 30).

6. Call the Google Sheets "Append Values" operation once with all rows in a single batch. Use valueInputOption=USER_ENTERED so the date strings and numeric columns are parsed as dates and numbers, not text. Append to the first tab of the configured spreadsheet.

Configurable inputs the user should set when wiring this up: the spreadsheet id, the sheet tab name, and (optionally) how many top stories to capture (default 30).

Setup note for the workflow: the sheet should already have a header row matching the column order above (captured_at, rank, hn_id, title, url, hn_url, score, comments, author, posted_at, type). Append Values will then place new rows directly under the existing data.

No reasoning or LLM step is needed. This is pure list, hydrate, format, append.

Related prompts

Explore more prompts
Call overdue Xero customers with an AI collections agentLocal listing health board for every location you manageLet support send one-off Loops emails without an engineerStop cold emails to anyone with a live deal in PipedriveiMessage campaign console with pre-flight checks and delivery boardLinkedIn Ads budget pacing dashboard for every client accountFront desk appointment confirmation board for the next 3 daysGive your team Looker numbers without buying more seatsBuild audience segments from product usage and push to LoopsTurn the people who engage with your posts into Pipedrive leads