ContentGrapher
ContentGrapher

Product

ContentGrapher

ContentGrapher is a structural completeness analysis tool for explanatory content. It maps the concept graph present in a page. It builds an explanation framework representing what the topic and audience require. It measures the coverage gap between the two.

Structural completeness is distinct from prose quality, keyword density, and competitive coverage. A page is structurally complete when its concept graph contains the entities and relationships a complete explanation requires, each developed at appropriate depth and connected explicitly to the others.

Retrieval systems decompose queries into sub-queries and match each independently against content. A page covering five of eight required concepts answers five sub-queries and leaves three unmatched. ContentGrapher makes that coverage gap measurable. Entities and relationships are the primary unit of analysis, not prose quality, word count, or keyword frequency.

Origin

ContentGrapher was created by Daniel Cheung. The foundational concept originated in ContentGraph, an open-source prototype published at github.com/danielkcheung/contentgraph. ContentGraph proved the core analysis approach and is available for forking and adaptation.

ContentGrapher is the production evolution of that prototype. It adds three capabilities ContentGraph did not ship: audience specification, the boundary layer, and the re-analysis loop with delta view. Analysis is operator-funded; no API key is required from the user.

Key concepts

Structural completeness

The degree to which a page fully explains what it claims to explain. Distinct from prose quality, keyword density, and competitive coverage. A page can rank well and be structurally incomplete; a page can be well-written and fail to cover the concepts its topic requires.

Concept graph

The map of entities and relationships present in a piece of content. Relationships are extracted as subject-verb-object triples, classified as explicit (directly stated) or implied (inferable from context). Entities and the relationships between them are the primary unit of content signal.

Integration state

A per-concept classification indicating how effectively a concept is developed and connected within the content. Four states: well_integrated, weakly_integrated, underexplained, naming_inconsistent.

Explanatory role

A short phrase describing each concept's functional purpose in the explanation. Assigned to concepts in both the observed map and the explanation framework. Examples: "a prerequisite the reader needs first", "the mechanism that enables the anchor", "a constraint on when it applies", "a grounding example".

Explanation framework

The set of concepts a complete explanation of a topic requires for a specific audience. Derived from topic inference and demand signals. Each concept carries a priority (essential, important, or useful) and a presence field (yes, partial, or no).

Boundary layer

A scope diagnosis classifying each concept as core, supportive, adjacent, or excluded relative to the page's stated purpose. Also identifies the page's Primary Retrieval Role (explain, guide, compare, evaluate, or convert) and diagnoses whether the page mixes roles.

Re-analysis delta

A before-and-after comparison of two analyses of the same page. Shows which coverage gaps closed and which remain after content edits. Persists as named snapshots within a series, a set of analyses of the same URL under one account. Coverage score and concept presence are both tracked.

Concept graph output

Analysis produces two distinct graph outputs. The observed map contains concepts and relationships extracted from the content. The explanation framework contains concepts the topic and audience require. Coverage is the intersection of the two.

structural completenessconcept depthaudience fitexplanation orderdefinition clarityworked examplesscope boundaryprerequisite mapmissing contextcoveredobserved onlygap (framework requires)
// phase 1 observed · phase 2 framework overlay · gap = required by the framework, absent from your content

Green nodes: covered, present in content and required by framework. Grey nodes: observed only, in content but not structurally required. Red dashed nodes: gaps, required by framework but absent from content.

ContentGraph and ContentGrapher

ContentGraph and ContentGrapher run the same core analysis pipeline. ContentGrapher adds three capabilities ContentGraph did not ship.

01

Audience specification

ContentGraph infers the audience from content. ContentGrapher accepts an explicit audience definition before analysis runs. The explanation framework is then built for that specific audience: what they already know, what they are deciding, and what a complete explanation requires for them. The same page analyzed for a technical evaluator versus a first-time buyer produces different frameworks.

02

Boundary layer

ContentGrapher classifies each concept relative to the page's scope (core, supportive, adjacent, excluded), identifies the Primary Retrieval Role, and diagnoses whether the page mixes roles in ways that dilute its retrieval signal.

03

Re-analysis loop

ContentGraph is ephemeral: the session ends and history is lost. ContentGrapher persists named snapshots within a series (a set of analyses of the same URL) and produces a delta view after each re-analysis, showing which gaps closed and which remain. Coverage score is tracked over time.

Feature comparison

FeatureContentGraphContentGrapher
Concept graph (observed)
Integration states
Explanation framework
Writing guidance
Content architecture
Audience specification
Boundary layer (scope diagnosis)
Re-analysis + delta view
Analysis history
Shareable links
Markdown export
JSON export
PriceFree, open-source5 free; packs from $29

Limitations

The framework models retrieval behavior, not retrieval outcomes. The explanation framework represents what a complete explanation ideally requires. A structurally complete page is not guaranteed to be cited.

Anchor misidentification propagates through both outputs. If the primary subject is misidentified, the observed map and explanation framework are built around the wrong topic. ContentGrapher surfaces the detected anchor and allows correction before analysis continues.

The framework reflects model training knowledge. The explanation framework is built using the model's topic knowledge. For fast-moving domains, the framework may be incomplete or out of date.

Relationship extraction favors explicit prose. Relationships implied in tables, lists, code blocks, or visual layouts may not be extracted or may be classified as implied rather than explicit. Content that encodes structure in non-prose formats may produce a less complete observed map than its actual coverage warrants.

Analysis targets explanatory content. ContentGrapher is designed for content whose purpose is to explain: definitions, guides, how-tos, comparisons, evaluations. It applies less directly to narrative, opinion, or transactional content.

Out of scope

ContentGrapher does not benchmark content against competing pages. Demand signals inform the explanation framework as inputs to topic coverage requirements, not as competitive coverage targets. Inclusion decisions are determined by what the explanation requires for the topic and audience.

ContentGrapher does not generate content, monitor AI-generated responses, predict rankings, or measure prose readability. Its output is structural: a concept map, a coverage gap, writing guidance specific to identified gaps, and a page architecture blueprint.