{"slug": "show-hn-an-ai-skill-for-filtering-and-reading-hacker-newsletter-and-others", "title": "Show HN: An AI skill for filtering and reading Hacker Newsletter and others", "summary": "A developer released an AI skill for Codex that filters and reads Hacker Newsletter and other Gmail newsletters, passing raw decoded text MIME parts to the model. The skill, invoked with a date or date range, runs a local read-only Gmail daemon and uses OAuth credentials for Gmail API access. It generates reports with per-link feedback stored in browser localStorage and exportable as Report.feedback.json.", "body_md": "Codex skill for reading a configured Gmail newsletter and passing its raw decoded text MIME parts to the model. The skill contains a local read-only Gmail daemon as an implementation detail; users normally invoke the skill with a specific date or date range rather than interacting with the daemon directly.\n\nThe skill starts the daemon, requests all messages from the configured sender for the requested period, passes all decoded `text/plain`\n\nand `text/html`\n\nMIME parts to the model, and uses `.agents/skills/email-reader/LINK_FILTERING_INSTRUCTIONS.md`\n\nfor report selection, formatting, and feedback collection.\n\nInvoke the skill with a date or date range:\n\n```\n$email-reader 2026-06-27\n$email-reader 2026-06-01 2026-06-27\n```\n\nThe skill runs `.agents/skills/email-reader/scripts/fetch_messages.py`\n\n, which returns message metadata and raw decoded text MIME parts. The model interprets those parts when composing the report; the fetcher does not select, clean, or rewrite their content. Generated reports keep per-link feedback in browser `localStorage`\n\nand can export it as `Report.feedback.json`\n\nfor later preference updates.\n\nCreate `.env`\n\nin the project root:\n\n```\nALLOWED_SENDER=sender@example.com\nGMAIL_OAUTH_CREDENTIALS_PATH=gmail_client_secret.json\nHOST=127.0.0.1\nPORT=4873\n```\n\nGet the OAuth client file:\n\n- Open\n`https://console.cloud.google.com`\n\n. - Create or select a project.\n- Enable\n`APIs & Services -> Library -> Gmail API`\n\n. - Configure\n`Google Auth Platform -> OAuth consent screen -> Branding`\n\n. - Add your Gmail account to test users if the app is in test mode.\n- Create\n`Google Auth Platform -> Clients -> Create client`\n\n. - Select application type\n`Desktop app`\n\n. - Download the JSON file.\n- Rename it to\n`gmail_client_secret.json`\n\nand put it in the project root.\n\nThis must be an OAuth client JSON for an installed desktop app. Do not use an API key or a service account JSON.\n\nThe scope in code is:\n\n```\nhttps://www.googleapis.com/auth/gmail.readonly\n```\n\nInstall the locked dependencies first:\n\n```\nuv sync --locked\n```\n\nThe daemon can also be started directly for local development:\n\n```\nUV_CACHE_DIR=/tmp/uv-cache uv run --locked python -m email_reader\n```\n\nOn the first `/messages`\n\nrequest, the daemon opens the OAuth authorization URL in the default browser. Finish Google authorization; the local OAuth token is saved to `.gmail_token.json`\n\n. If Google rejects an old or revoked token, the daemon automatically starts authorization again and keeps the old token as a backup.\n\nIf Google shows `Access blocked: this app has not completed the Google verification process`\n\n, wait and try again later. It can take up to 24 hours for new OAuth app settings and test-user changes to become available.\n\nThe API is available at `/messages`\n\n:\n\n```\ncurl 'http://127.0.0.1:4873/messages?start_date=2026-06-01&end_date=2026-06-27'\n```\n\n", "url": "https://wpnews.pro/news/show-hn-an-ai-skill-for-filtering-and-reading-hacker-newsletter-and-others", "canonical_source": "https://github.com/Promyer/stellar-inbox", "published_at": "2026-07-31 03:33:20+00:00", "updated_at": "2026-07-31 03:52:17.383290+00:00", "lang": "en", "topics": ["ai-tools", "developer-tools"], "entities": ["Codex", "Gmail", "Hacker Newsletter", "Google Cloud Platform", "Gmail API"], "alternates": {"html": "https://wpnews.pro/news/show-hn-an-ai-skill-for-filtering-and-reading-hacker-newsletter-and-others", "markdown": "https://wpnews.pro/news/show-hn-an-ai-skill-for-filtering-and-reading-hacker-newsletter-and-others.md", "text": "https://wpnews.pro/news/show-hn-an-ai-skill-for-filtering-and-reading-hacker-newsletter-and-others.txt", "jsonld": "https://wpnews.pro/news/show-hn-an-ai-skill-for-filtering-and-reading-hacker-newsletter-and-others.jsonld"}}