Index of every page on this site: llms.txt
All skills
mvanhorn avatar

/last30days

@f3cd06a
by Matt Van Hornmvanhorn/last30days-skill65k stars
5,650
Run it yourself

Research what people actually say about any topic in the last 30 days. Pulls posts and engagement from Reddit, X, YouTube, TikTok, Hacker News, Polymarket, GitHub, and the web. Includes a doctor health check to diagnose broken or missing sources.

Use this Skill: https://skilld.dev/gh/mvanhorn/last30days-skill/last30days

Nothing lands on disk. Nothing to clean up.

Fork this Skill

Edit a local copy. It keeps the author and licence.

referenceslibrary-queue.md

≈916 tokens on demand. Your agent reads this file only when SKILL.md points to it.

Library, feed, and topic queue

Read for library/feed/queue intent before setup or fresh research. The runtime interpreter bootstrap still runs first. These fast paths skip topic/backend preflight, setup, and source research.

LIBRARY SEARCH FAST PATH — this overrides every research/setup step below. If the user says “search my library for X”, “have I researched X before?”, or otherwise asks to query prior saved research, do not run WebSearch, setup, topic/backend preflight, or fresh source research. Run:

"${LAST30DAYS_PYTHON:-python3}" "${SKILL_DIR}/scripts/last30days.py" library search "${LIBRARY_QUERY}" --save-dir="${LAST30DAYS_MEMORY_DIR}"

Relay the dated, topic-grouped matches. This is deterministic offline FTS over the existing saved-brief scanner plus per-run SQLite store sightings; it does not call a model or the network. If SQLite lacks FTS5, relay the engine's capability error rather than falling through to fresh research.

LIBRARY FEED FAST PATH — this overrides every research/setup step below. If the user asks to build, view, refresh, or subscribe to their saved research library/feed, do not run host WebSearch resolution, the first-run setup gate, topic preflight, or source research. Run:

"${LAST30DAYS_PYTHON:-python3}" "${SKILL_DIR}/scripts/last30days.py" library feed --save-dir="${LAST30DAYS_MEMORY_DIR}"

Relay the generated local index.html and feed.xml paths. If the user explicitly asks to publish/share the whole library, explain that ht-ml.app pages are public by default and may be crawled or indexed, then follow the existing public-vs-password publishing choice. After consent, add --publish; for password protection, supply their unique shared password through LAST30DAYS_PUBLISH_PASSWORD, never as a visible command-line flag. Relay the printed library URL and local Atom path, and explain that feed.xml becomes subscribable when the output directory is hosted on a static host such as GitHub Pages. Never describe the ht-ml.app library URL as an Atom subscription URL, and never add --publish merely because the user asked to generate or open a local feed.

TOPIC QUEUE FAST PATH — this overrides every research/setup step below. If the user asks "what's in my topic queue", "what should I talk about next", "what topics haven't I covered", "show my content pipeline", "mark <topic> as covered", "I covered X on the podcast", "we published that article", or similar — even cold, with no research run earlier in this session — do not run WebSearch, setup, topic/backend preflight, or fresh source research. Run the read form:

"${LAST30DAYS_PYTHON:-python3}" "${SKILL_DIR}/scripts/last30days.py" queue list --save-dir="${LAST30DAYS_MEMORY_DIR}"

or the cover form, for "mark X as covered" phrasing:

"${LAST30DAYS_PYTHON:-python3}" "${SKILL_DIR}/scripts/last30days.py" queue cover "<topic name>" --save-dir="${LAST30DAYS_MEMORY_DIR}"

Relay the rendered list (uncovered surfaced topics with domain, surface count, and last-surfaced date) or the cover confirmation. This is deterministic offline SQLite over that save-dir's research.db; it does not call a model or the network. Covering requires the exact queued topic name; on an unknown name the engine exits 2 and points at queue list - relay that, run queue list, and offer the queued names instead of retrying with guesses. An empty queue is a valid answer - suggest a /last30days trending or domain discovery run to populate it. Do not treat the topic name or phrase as a fresh research topic and do not fall through to the root's "topic supplied" branch.

Source: SKILL.md on GitHub

skilld matched fixed text patterns in SKILL.md and file names. Patterns miss obfuscated code.

skilld run checks every file with the same patterns. It asks for approval before it loads a Skill with a behavior marked Needs approval.

1 alerttoday5 checks · Risk SAFE
  • Gen Agent Trust Hubtoday

    This skill is a robust research tool that integrates with multiple social and web sources. It includes strong security posture by using delimiters for untrusted content, enforcing user consent for sensitive actions like cookie extraction, and providing clear documentation of its network and filesystem activities. Automated security alerts regarding remote code execution and prompt injection were investigated and found to be benign user guidance and standard agent behavioral constraints.

  • Sockettoday

    5 alerts: gptAnomaly, gptSecurity

  • Snyktoday

    Risk: MEDIUM · 1 issue

  • Runlayer7mo

    304/604 files flagged

  • ZeroLeaks6mo

    Scan incomplete

Signed by skilld at f3cd06a. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub yesterday.

Activeupdated 2 days ago
What it can do
Runs commands Reads files Edits files Network
version
3.30.0
homepage
https://github.com/mvanhorn/last30days-skill
repository
https://github.com/mvanhorn/last30days-skill
All 5 allowed tools
BashReadWriteAskUserQuestionWebSearch
Other metadata
argument-hint
last30days nvidia earnings reaction | last30days AI video tools | last30days what users want in react
author
mvanhorn
user-invocable
true
metadata
{
  "openclaw": {
    "emoji": "📰",
    "requires": {
      "env": [],
      "optionalEnv": [
        "SCRAPECREATORS_API_KEY",
        "OPENAI_API_KEY",
        "XAI_API_KEY",
        "X_BEARER_TOKEN",
        "OPENROUTER_API_KEY",
        "PERPLEXITY_API_KEY",
        "PARALLEL_API_KEY",
        "BRAVE_API_KEY",
        "APIFY_API_TOKEN",
        "AUTH_TOKEN",
        "CT0",
        "BSKY_HANDLE",
        "BSKY_APP_PASSWORD",
        "TRUTHSOCIAL_TOKEN",
        "XIAOHONGSHU_API_BASE"
      ],
      "bins": [
        "node",
        "python3"
      ]
    },
    "primaryEnv": "SCRAPECREATORS_API_KEY",
    "files": [
      "scripts/*",
      "references/*"
    ],
    "homepage": "https://github.com/mvanhorn/last30days-skill",
    "tags": [
      "research",
      "deep-research",
      "reddit",
      "x",
      "twitter",
      "youtube",
      "tiktok",
      "instagram",
      "linkedin",
      "hackernews",
      "devto",
      "polymarket",
      "digg",
      "bluesky",
      "truthsocial",
      "xiaohongshu",
      "rednote",
      "trends",
      "recency",
      "news",
      "citations",
      "multi-source",
      "social-media",
      "analysis",
      "web-search",
      "hiring-signals",
      "ai-skill",
      "clawhub"
    ]
  }
}

README badge

README badge for mvanhorn/last30days-skill