Site map and SEO architecture
Every page on this site, where it sits, what it targets and how it links. The crawl records are extracted from the HTML that is actually served, so the plan and the site cannot drift apart. In production this page stays as the human site map; the planning columns move to the agency's workspace.
- Shape
- Hub and spoke, three clicks deep at most
- Built
- 13 pages, 1 sitemap, robots, 404
- Planned
- 1 hub, 26 product pages, 6 city lanes, 2 guides
- Structured data
- Organization, WebSite, ItemList, Product, FAQPage, Article, Service, BreadcrumbList
Page tree and crawl record
Select a page to see what a crawler reads from it. Solid boxes are built; dashed boxes are the planned expansion that the same templates would produce. The URL is the filename, which is the keyword, which is the H1: one name per page, used everywhere.
-
-
- /<sku-name>-wholesale.htmlProduct, plannedSix more product pages, one per olive oil SKU, from the same template
-
- /<sku-name>-wholesale.htmlProduct, plannedTen product pages, one per SKU
-
- /<sku-name>-wholesale.htmlProduct, plannedTen product pages, one per SKU
- /pasta-and-grains.htmlCategory hub, plannedFourth line, published when the SKU list is final
-
- /mediterranean-food-distributor-<city>.htmlCity lane, plannedCalgary, Toronto, Montreal: lane, DC delivery, local buyers, same template
-
- /mediterranean-food-importer-<city>.htmlCity lane, plannedSeattle, Chicago, New York
-
- /how-to-import-canned-tomatoes-to-canada.htmlGuide, plannedSecond pillar, tomatoes and low-acid canned goods
- /olive-oil-grades-explained.htmlGuide, plannedSupporting article feeding the pillar and the hub
-
Keyword and intent map
One cluster per page, one page per cluster. No two pages chase the same query, so they never compete with each other in the results. Volumes are not shown because this is a sample plan; in production the column carries the monthly estimate and the source.
| Page | Type | Target cluster | Intent | Structured data |
|---|---|---|---|---|
| / | Home | mediterranean food importer vancouver; wholesale mediterranean foods canada | Commercial, navigational | Organization, WebSite |
| /olive-oil.html | Category hub | wholesale olive oil canada; bulk extra virgin olive oil supplier; olive oil distributor vancouver | Commercial | ItemList, BreadcrumbList |
| /extra-virgin-olive-oil-wholesale.html | Product | extra virgin olive oil wholesale; 3 l tin olive oil bulk; evoo foodservice price | Transactional, quote | Product, FAQPage, BreadcrumbList |
| /tomatoes-and-preserves.html | Category hub | wholesale canned tomatoes canada; bulk olives supplier; capers wholesale | Commercial | ItemList, BreadcrumbList |
| /spices-and-salt.html | Category hub | bulk spices supplier canada; wholesale sea salt; smoked paprika bulk | Commercial | ItemList, BreadcrumbList |
| /restaurants-and-foodservice.html | Industry landing | restaurant olive oil supplier; foodservice mediterranean ingredients; wholesale food supplier for restaurants vancouver | Commercial | Service, BreadcrumbList |
| /grocery-retail-and-distribution.html | Industry landing | mediterranean grocery wholesale; specialty food distributor canada; private label olive oil canada | Commercial | Service, BreadcrumbList |
| /import-to-canada.html | Lane landing | import olive oil to canada; food importer vancouver; mediterranean food distributor toronto, montreal, calgary | Commercial, informational | Service, BreadcrumbList |
| /import-to-usa.html | Lane landing | mediterranean food importer seattle; olive oil wholesale chicago; specialty food distributor new york | Commercial, informational | Service, BreadcrumbList |
| /how-to-import-olive-oil-to-canada.html | Guide, pillar | how to import olive oil to canada; olive oil import requirements canada; hs code olive oil | Informational | Article, BreadcrumbList |
| /contact.html | Conversion | wholesale price list request; mediterranean food wholesale quote | Transactional | ContactPage, BreadcrumbList |
| /seo-architecture.html | Site map | none; human site map, noindex candidate in production | Navigational | WebPage, BreadcrumbList |
| /privacy.html | Legal | none | Navigational | WebPage, BreadcrumbList |
| FAQPage markup no longer earns a rich result in Google's results for most sites; it is kept on the product page because the questions are real and the markup costs nothing. Title tags are under 60 characters and descriptions under 155 on every page; the crawl record in 1.0 shows the counts. | ||||
Internal link graph
Contextual links only: the ones written into page bodies, not the header, footer or breadcrumb that link everything to everything. Hover or select a node to light its links. Hubs link down to spokes, spokes link back up and across to the buyer and lane pages, and every page links to the quote request.
contextual linklinks of the selected or hovered page
Link matrix
The same links as a table, rows link to columns. Red counts are parent-to-child or child-to-parent links, the spine of the hub-and-spoke. The "in" row at the bottom is the number every page needs to keep above zero: a page with no contextual links in is an orphan to a crawler, whatever the footer says.
| Turn on JavaScript to build the matrix from the crawl data. |
Technical checklist
| Item | State | Note |
|---|---|---|
| One H1 per page, keyword in natural language | done | H1, title and filename share the same noun phrase. |
| Unique title under 60, description under 155 | done | Counts in each crawl record. |
| Descriptive URLs and internal anchors | done | No generic anchors such as "here" or "read more". Anchor text names the destination. |
| BreadcrumbList on every inner page | done | Visible breadcrumb and JSON-LD agree. |
| Organization and WebSite on the home page | done | ItemList on hubs, Product and FAQPage on the product page, Article on the guide, Service on industry and lane pages. |
| Every JSON-LD block parses | done | Checked by script; result recorded in the build notes. |
| Images with alt text, width and height, lazy below the fold | done | Lead image preloaded with high fetch priority. WebP at two widths. |
| sitemap.xml, robots.txt, 404 page | done | Sitemap lists 13 URLs with lastmod. Host is a deploy-time knob. |
| Canonical and og:url | at deploy | Omitted on purpose: there is no production domain yet. Added with the host, one find-and-replace. |
| hreflang | not needed | Single language, en-CA. A French edition would add it. |
| Fonts self-hosted, no third-party scripts, no tracking | done | Two woff2 files, one stylesheet, one small script. Nothing loads from a CDN. |
| Light default with dark mode, mobile first | done | Theme choice stored in the browser only. |
How it grows
- Product pages, one per SKU
- The product template already carries Product and FAQPage markup, a specification table and a pack block. Each of the 26 remaining SKUs gets its own page from the hub's row, linked down from the hub and back up to it. Twenty-six long-tail queries of the form "SKU format wholesale", with no new design work.
- City lane pages
- Six cities already appear in the lane tables. Each gets a page that answers "Mediterranean food distributor in Toronto" with the lane, the DC delivery terms and the local buyer types. Spokes of the two lane landings, sharing a template and a data file.
- Guides that feed the hubs
- The pillar on importing olive oil is the model. A second pillar on tinned tomatoes and low-acid goods, and shorter articles on grades, harvest timing and label rules, each link to the hub and the product pages they explain.
- What stays fixed
- One H1 per page, one cluster per page, a breadcrumb that mirrors the tree, and a sitemap regenerated on every publish. The site can reach 60 pages without a second navigation level.