Blog Research
Overview
Collects evidence from individual and organizational blogs: practitioner write-ups, tutorials, opinion pieces, an organization's own technical blog. Distinguishing job: blog content ranges from tier 2 (an org's official blog, on-claim-about-that-org) to tier 5 (anonymous content-farm posts) — author identity resolution is most of the work here.
Layer rule: produces evidence, not results. Synthesis and confidence status are the orchestrator's job.
When to use
Direct use: "what does [named expert] say about X", "find a tutorial for Y". As a component: orchestrator dispatches this for implementation/opinion sub-questions where a practitioner's direct account matters more than official docs.
Don't use for: an organization's own official docs/announcements (→ official-source-research — same publisher, different tier by default), news coverage of an event (→ news-research), pages with no identifiable author or track record (→ web-research, capped at low tier there too).
Workflow
- Resolve author identity first — this decides everything downstream. Look for: a named author with a bio, a track record (cited elsewhere, known conference talks, GitHub presence), or organizational affiliation stated as the post's byline. Log what was found in
limitations if identity is thin or absent — an unattributed post is not automatically discarded, but it caps at tier 4-5.
- Distinguish original from syndicated/aggregated. Many blog platforms mirror or aggregate posts (dev.to cross-posts, Medium republishes, translated mirrors). If the passage attributes the content elsewhere or matches a known original almost verbatim, route to engine/origin-tracing.md before treating this post as the source.
- Search via web-research's chain (WebSearch + WebFetch — this skill doesn't need a separate tool chain, the distinguishing work is the author/originality resolution, not the fetch mechanism). If nothing surfaces, run references/query-relaxation.md.
- Extract publish date per the cascade in references/tooling.md — blog platforms are usually good about structured metadata (dev.to, Medium, Substack all expose
article:published_time).
- Archive per references/citation-rules.md — personal blogs and smaller platforms have real disappearance risk (platform shutdowns, domain expiry), archive proactively.
- An individual is one root:
root_id: person:<canonical-handle>. The same author's blog post, conference talk, and newsletter are one voice — quoting three of them is not three independent sources. For an org's official blog, use org:<name> instead (engine/origin-tracing.md).
- Assign tier per references/source-tiers.md's blog table (2 = org's own official channel on a claim about that org; 3 = individual with demonstrated expertise; 4 = anonymous/unverified; 5 = content-farm pattern) and purpose — tutorials/how-tos are usually
implementation, stated positions are opinion, factual claims about a product/event are fact only when backed by the author's own primary access (they built it, they tested it) rather than repeating something they read elsewhere.
- Write the evidence record per engine/evidence-contract.md,
verification_status: pending. Do not self-verify.
Output
One evidence record per claim, appended to the run's evidence.jsonl.
Common mistakes
| Mistake |
Fix |
| Treating a syndicated repost as an independent source |
Trace to the original per engine/origin-tracing.md before tiering |
Assigning fact purpose to a tutorial author's untested claim |
Purpose is fact only when the author has primary access to what they're claiming |
| Skipping author-identity resolution because the content "sounds authoritative" |
Tone is not a credibility signal — check for a real byline, track record, affiliation |
| Not archiving because the blog "seems established" |
Smaller platforms and personal domains disappear; archive regardless |
1---2name: blog-research3description: Use when the user asks to check what a specific blogger/expert has written, find tutorial or how-to content, or research opinion/practitioner writing on a topic. Triggers on "check their blog", "find a tutorial for", "what do practitioners say", "blog research". Produces evidence records (URL + verbatim quote + author credibility note), never conclusions. Do NOT use for official company documentation (use official-source-research), news coverage (use news-research), or general web pages with no identifiable author (use web-research).4---56# Blog Research78## Overview910Collects evidence from individual and organizational blogs: practitioner write-ups, tutorials, opinion pieces, an organization's own technical blog. Distinguishing job: blog content ranges from tier 2 (an org's official blog, on-claim-about-that-org) to tier 5 (anonymous content-farm posts) — author identity resolution is most of the work here.1112**Layer rule:** produces evidence, not results. Synthesis and confidence status are the orchestrator's job.1314## When to use1516Direct use: "what does [named expert] say about X", "find a tutorial for Y". As a component: orchestrator dispatches this for implementation/opinion sub-questions where a practitioner's direct account matters more than official docs.1718Don't use for: an organization's own official docs/announcements (→ official-source-research — same publisher, different tier by default), news coverage of an event (→ news-research), pages with no identifiable author or track record (→ web-research, capped at low tier there too).1920## Workflow21221. **Resolve author identity first** — this decides everything downstream. Look for: a named author with a bio, a track record (cited elsewhere, known conference talks, GitHub presence), or organizational affiliation stated as the post's byline. Log what was found in `limitations` if identity is thin or absent — an unattributed post is not automatically discarded, but it caps at tier 4-5.232. **Distinguish original from syndicated/aggregated.** Many blog platforms mirror or aggregate posts (dev.to cross-posts, Medium republishes, translated mirrors). If the passage attributes the content elsewhere or matches a known original almost verbatim, route to engine/origin-tracing.md before treating this post as the source.243. **Search** via web-research's chain (WebSearch + WebFetch — this skill doesn't need a separate tool chain, the distinguishing work is the author/originality resolution, not the fetch mechanism). If nothing surfaces, run references/query-relaxation.md.254. **Extract publish date** per the cascade in references/tooling.md — blog platforms are usually good about structured metadata (dev.to, Medium, Substack all expose `article:published_time`).265. **Archive** per references/citation-rules.md — personal blogs and smaller platforms have real disappearance risk (platform shutdowns, domain expiry), archive proactively.276. **An individual is one root:** `root_id: person:<canonical-handle>`. The same author's blog post, conference talk, and newsletter are one voice — quoting three of them is not three independent sources. For an org's official blog, use `org:<name>` instead (engine/origin-tracing.md).287. **Assign tier** per references/source-tiers.md's blog table (2 = org's own official channel on a claim about that org; 3 = individual with demonstrated expertise; 4 = anonymous/unverified; 5 = content-farm pattern) and **purpose** — tutorials/how-tos are usually `implementation`, stated positions are `opinion`, factual claims about a product/event are `fact` only when backed by the author's own primary access (they built it, they tested it) rather than repeating something they read elsewhere.298. **Write the evidence record** per engine/evidence-contract.md, `verification_status: pending`. Do not self-verify.3031## Output3233One evidence record per claim, appended to the run's `evidence.jsonl`.3435## Common mistakes3637| Mistake | Fix |38|---|---|39| Treating a syndicated repost as an independent source | Trace to the original per engine/origin-tracing.md before tiering |40| Assigning `fact` purpose to a tutorial author's untested claim | Purpose is `fact` only when the author has primary access to what they're claiming |41| Skipping author-identity resolution because the content "sounds authoritative" | Tone is not a credibility signal — check for a real byline, track record, affiliation |42| Not archiving because the blog "seems established" | Smaller platforms and personal domains disappear; archive regardless |