Dineway Content Research
Execute one Research Stage that the master Pipeline already began. Batch-record normalized evidence,
then return compact editorial decisions to dineway-content-pipeline. The server hydrates the
Observations and compiles the authoritative Research Result; Stage Complete renders canonical
evidence JSON and findings Markdown and derives their receipts.
Required inputs
- Pipeline Run, Research Job, active Assignment/Attempt, objective, locale/market, and site identity.
- Research type:
general, topic, competitor, gap, or serp.
- Query plus required audience, objective, and focus.
- Site Briefing, Site Context, schema, published inventory, byline context, prior observations, and
explicit first-party-question availability.
- The
dineway-tools and dineway-seo-providers contracts for provider discovery and execution.
Every Research type uses the full bundle below. A specialized type changes emphasis; it never skips
SERP, keyword metrics, competitors, questions, official sources, Site Context, or first-party
inventory.
Mandatory SERP-first evidence order
- Use Dineway Tools
discover -> inspect -> run -> poll to start bounded DataForSEO organic SERP
analysis. This must be the first evidence operation. Record provider, availability, start/end time,
requested/returned counts, limitations, task identity in bounded raw evidence, and Observation IDs.
- Only after the SERP request has started, collect the remaining independent areas concurrently:
- DataForSEO numeric keyword volume, difficulty score (0-100), CPC, and intent;
- DataForSEO SERP competitors, ranks, word counts, headings, and relevant questions;
- Firecrawl bounded competitor and official-source pages;
- native Site Context, published inventory, internal-link candidates, and user-owned signals.
- Do not guess provider endpoints. Preserve the inspected operation, billing/cache status, and
limitations. Do not place credentials, cookies, or unbounded page bodies in prompts or Results.
- If a provider is unavailable, record the attempted coverage as
not_configured,
temporarily_unavailable, permission_denied, or unsupported. Returned count must be zero and
unavailable numeric values remain null, never zero.
Do not use Browser Use, screenshots, or free-form browsing for this workflow.
Normalized evidence and decisions
Record the evidence fields below in typed Observation payloads:
scope: self-contained audience, objective, and focus;
coverage: required serp, keywordMetrics, competitors, questions, officialSources,
siteContext, and firstPartyInventory records;
- findings with stable IDs, relevance, and Observation lineage;
- normalized sources with source kind, primary/secondary/community authority, URL/domain,
availability, collected time, and Observation IDs;
- keywords with numeric volume, 0-100 difficulty, CPC, intent, category, and Observation IDs;
- organic SERP results with rank, word count, headings, own-site/competitor flags, and Observation IDs;
- relevant and rejected questions. Rejected questions remain in Research with a reason and cannot flow
into Brief;
- facts bound to normalized sources, content gaps, and competitors, all with Observation lineage;
- topic directions with numeric difficulty plus evidence-linked subtopics and keyword clusters.
Every available source-derived keyword, SERP result, question, fact, gap, competitor, subtopic, and
cluster must cite persisted Observation IDs. Record independent evidence together through
content_pipeline_observation_record_batch. Then submit only the research type, scope, query,
selected evidence IDs, summary, chosen directions, and recommendations. Do not duplicate normalized
evidence in Stage Complete.
Stage completion
Return compact decisions, strict provenance, source timestamps, the union of selected Observation
IDs, and only bounded raw evidence references when needed. Do not build artifactRefs, Result
envelopes, Markdown/JSON wrappers, hashes, or byte counts.
The master calls content_pipeline_stage_complete. It validates SERP-first ordering and coverage,
renders:
.dineway/content/runs/<run-id>/jobs/<job-id>/research/evidence.json; and
.dineway/content/runs/<run-id>/jobs/<job-id>/research/findings.md.
The same transaction derives receipts, verifies every Observation exists, finishes the Attempt and
Assignment, creates Research, and accepts it. Do not call granular Result/accept
operations or create a Brief, Draft, or CMS mutation from this Skill.
1---2name: dineway-content-research3description: Build a complete SERP-first, source-attributed Dineway Research Result for any content Research type before Brief.4---56# Dineway Content Research78Execute one Research Stage that the master Pipeline already began. Batch-record normalized evidence,9then return compact editorial decisions to `dineway-content-pipeline`. The server hydrates the10Observations and compiles the authoritative Research Result; Stage Complete renders canonical11evidence JSON and findings Markdown and derives their receipts.1213## Required inputs1415- Pipeline Run, Research Job, active Assignment/Attempt, objective, locale/market, and site identity.16- Research type: `general`, `topic`, `competitor`, `gap`, or `serp`.17- Query plus required audience, objective, and focus.18- Site Briefing, Site Context, schema, published inventory, byline context, prior observations, and19 explicit first-party-question availability.20- The `dineway-tools` and `dineway-seo-providers` contracts for provider discovery and execution.2122Every Research type uses the full bundle below. A specialized type changes emphasis; it never skips23SERP, keyword metrics, competitors, questions, official sources, Site Context, or first-party24inventory.2526## Mandatory SERP-first evidence order27281. Use Dineway Tools `discover -> inspect -> run -> poll` to start bounded DataForSEO organic SERP29 analysis. This must be the first evidence operation. Record provider, availability, start/end time,30 requested/returned counts, limitations, task identity in bounded raw evidence, and Observation IDs.312. Only after the SERP request has started, collect the remaining independent areas concurrently:32 - DataForSEO numeric keyword volume, difficulty score (0-100), CPC, and intent;33 - DataForSEO SERP competitors, ranks, word counts, headings, and relevant questions;34 - Firecrawl bounded competitor and official-source pages;35 - native Site Context, published inventory, internal-link candidates, and user-owned signals.363. Do not guess provider endpoints. Preserve the inspected operation, billing/cache status, and37 limitations. Do not place credentials, cookies, or unbounded page bodies in prompts or Results.384. If a provider is unavailable, record the attempted coverage as `not_configured`,39 `temporarily_unavailable`, `permission_denied`, or `unsupported`. Returned count must be zero and40 unavailable numeric values remain `null`, never zero.4142Do not use Browser Use, screenshots, or free-form browsing for this workflow.4344## Normalized evidence and decisions4546Record the evidence fields below in typed Observation payloads:4748- `scope`: self-contained audience, objective, and focus;49- `coverage`: required `serp`, `keywordMetrics`, `competitors`, `questions`, `officialSources`,50 `siteContext`, and `firstPartyInventory` records;51- findings with stable IDs, relevance, and Observation lineage;52- normalized sources with source kind, primary/secondary/community authority, URL/domain,53 availability, collected time, and Observation IDs;54- keywords with numeric volume, 0-100 difficulty, CPC, intent, category, and Observation IDs;55- organic SERP results with rank, word count, headings, own-site/competitor flags, and Observation IDs;56- relevant and rejected questions. Rejected questions remain in Research with a reason and cannot flow57 into Brief;58- facts bound to normalized sources, content gaps, and competitors, all with Observation lineage;59- topic directions with numeric difficulty plus evidence-linked subtopics and keyword clusters.6061Every available source-derived keyword, SERP result, question, fact, gap, competitor, subtopic, and62cluster must cite persisted Observation IDs. Record independent evidence together through63`content_pipeline_observation_record_batch`. Then submit only the research type, scope, query,64selected evidence IDs, summary, chosen directions, and recommendations. Do not duplicate normalized65evidence in Stage Complete.6667## Stage completion6869Return compact decisions, strict provenance, source timestamps, the union of selected Observation70IDs, and only bounded raw evidence references when needed. Do not build `artifactRefs`, Result71envelopes, Markdown/JSON wrappers, hashes, or byte counts.7273The master calls `content_pipeline_stage_complete`. It validates SERP-first ordering and coverage,74renders:7576- `.dineway/content/runs/<run-id>/jobs/<job-id>/research/evidence.json`; and77- `.dineway/content/runs/<run-id>/jobs/<job-id>/research/findings.md`.7879The same transaction derives receipts, verifies every Observation exists, finishes the Attempt and80Assignment, creates Research, and accepts it. Do not call granular Result/accept81operations or create a Brief, Draft, or CMS mutation from this Skill.