# Blog Discourse

Research what people are actually saying about a topic in the last 30 days across...

- Repository: https://github.com/AgriciDaniel/claude-blog (2608 stars)
- Category: Writing
- License: MIT
- Last updated: 2026-10-30
- Runs scripts: yes, review before use

## Install

Claude Code: `npx skills add AgriciDaniel/claude-blog --skill blog-discourse -g -a claude-code -y`
Codex: `npx skills add AgriciDaniel/claude-blog --skill blog-discourse -g -a codex -y`
Cursor: `npx skills add AgriciDaniel/claude-blog --skill blog-discourse -g -a cursor -y`
Gemini CLI: `npx skills add AgriciDaniel/claude-blog --skill blog-discourse -g -a gemini-cli -y`
Claude Code plugin marketplace: `/plugin marketplace add AgriciDaniel/claude-blog`

## Description

Research what people are actually saying about a topic in the last 30 days across Reddit, X / Twitter, YouTube, Hacker News, dev.to, Medium, and other public discourse platforms. API-free; uses WebSearch with platform-targeted site operators plus recency filters. Produces DISCOURSE.md (a structured brief) and JSON output the writer can consume. Complements blog-researcher (which focuses on authority sources) with a recency-and-engagement lens. Not for verifying statistics (blog-factcheck) or gathering authority sources. Use when user says "blog discourse", "discourse research", "what are people saying about", "research what people are saying", "voice of customer", "social listening", "30-day research", "trend research", "what's the discussion on", "real-time research", "practitioner discourse", "/blog discourse".

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Blog Discourse: Real Discourse Research, API-Free

Bundled paths below use host Markdown substitution of `${CLAUDE_SKILL_DIR}`;
it is not an exported shell variable. Resolve them before execution, quote
paths, and refuse nonabsolute overrides. Pass `blog_reference_root` resolved
from `${CLAUDE_SKILL_DIR}/../blog/references`, `blog_template_root` from
`${CLAUDE_SKILL_DIR}/../blog/templates`, and needed sibling roots to agents.
Read the main reference `orchestration-details.md` before loading project
context; pass only its helper-fenced output to downstream agents.

Produces DISCOURSE.md: a structured brief of what practitioners said about <topic> on the public web in the last 30 days. It is the recency + engagement lens that `blog-researcher` (authority-first) lacks, asking what practitioners and customers are actually saying about this topic right now.

Adapted from the methodology of `last30days-skill` (Matt Van Horn, MIT, https://github.com/mvanhorn/last30days-skill). The upstream uses platform APIs; this sub-skill uses WebSearch with platform-targeted site operators. No API keys required.

## Commands

| Command | Purpose |
|---|---|
| `/blog discourse <topic>` | Produce a discourse brief at project-root `DISCOURSE.md` |
| `/blog discourse <topic> --days 90` | Widen the freshness window from 30 to 90 days |
| `/blog discourse <topic> --input results.json` | Skip search; build the brief from a pre-gathered results file. The flag name matches `scripts/discourse_research.py --input` directly. |
| `/blog discourse <topic> --output path.md` | Write markdown to a chosen output path and print structured JSON without markdown to stdout. |
| `/blog discourse <topic> --format json` | Print the full JSON brief to stdout when no `--output` path is used. |
| `/blog discourse <topic> --decomposition questions.txt` | Pass newline-delimited decomposition questions into the helper. |

## Workflow

### Phase 0: Topic Pre-Flight (mandatory)

The rest: https://github.com/AgriciDaniel/claude-blog/blob/HEAD/skills/blog-discourse/SKILL.md
