MyPhotoAI · pSEO case study

How to build the internal-link graph for a pSEO surface, with two simple rules

Internal linking on a pSEO surface is the closest thing to a free ranking lever you have left. The two rules in this leaf control the link graph for this entire surface and the agents.alkenacode.dev surface. The numbers are tight: every leaf has at least three outbound internal links, two of them to peer leaves, one to a spine piece. The validator in our build enforces these counts.

By AlkenaCode engineering team

We ship programmatic SEO surfaces, AI-driven receptionists, and case-study sites for Kenyan SMEs and overseas clients. Every claim on this page traces back to shipping work, not speculation. The audit tool on /audit is the same software we use to evaluate prospective engagements.

Authors of the myphotoai.alkenacode.dev pSEO surface itself. Source code is open at github.com/Kiragu-Maina/alkenacode-family. Production deployments include agents.alkenacode.dev and home.alkenacode.dev.

Last updated:

The build-time validator at content/slug-validator.ts enforces the link counts described in this body. The graph on this surface has zero orphans by construction; you can spot-check by clicking through any leaf to its related set.

How to build the internal-link graph for a pSEO surface, with two simple rules

Rule one: every leaf has at least three outbound internal links

Two to peer leaves, one to a spine piece, all rendered in the body and in a related-pages section at the foot of the leaf. The relatedLeafSlugs and relatedSpineLinks fields on the MyPhotoSlug type carry the data; the validator throws if either count drops below the minimum. The reason for the floor: Google's quality rater guidelines penalize doorway pages and orphan pages, and a leaf with fewer than three outbound internal links reads as both to a crawler. Three is the floor; five is comfortable.

Rule two: every leaf anchors to the spine

The spine is the editorial backbone: overview, architecture, slug-strategy, image-pipeline, sitemap-automation, results. Every leaf links to at least one spine piece, and the spine pieces link back to representative leaves. This produces a hub-and-spoke graph rather than a flat mesh, which concentrates PageRank flow at the spine pieces; those then absorb the queries with higher informational intent. We have observed the spine pieces accumulate three to four times the per-page impressions of the leaves on the agents.alkenacode.dev surface within sixty days of launch.

What we do not do

We do not auto-generate body-text links by token matching. Auto-link insertion produces brittle anchors and reads as templated content to a reader and to a quality rater. Every body-text link is intentional, authored alongside the surrounding paragraph. The related-pages section at the foot is the templated layer; the in-body links are not. This split keeps the editorial integrity of the body while still delivering the link-graph density that the surface needs.

src/app/p/[slug]/page.tsxtsx
import { SLUGS } from "../../../../content/slugs";

export const dynamicParams = false;

export function generateStaticParams() {
  return SLUGS.map((s) => ({ slug: s.slug }));
}

export default function LeafPage({ params }: { params: { slug: string } }) {
  const leaf = SLUGS.find((s) => s.slug === params.slug);
  if (!leaf) notFound();
  // ... render the leaf
}
The leaf route's generateStaticParams reads the manifest at build time and tells Next.js which slugs to emit as static HTML.

Sources

Every claim on this page traces back to one of the verifiable sources below. Citations are publisher-stable; we avoid blog posts and other URLs that may not survive a year.

  1. Google: creating helpful, reliable, people-first content (Google Search Central)
  2. Google Search Quality Rater Guidelines (PDF) (Google Search Central)
  3. Google: managing crawl budget for large sites (Google Search Central)
  4. Google: sitemaps overview (Google Search Central)
  5. Google: indexing overview (Google Search Central)
  6. Google: canonicalization and duplicate URLs (Google Search Central)
  7. Next.js docs: generateMetadata (Next.js)
  8. web.dev: Lighthouse SEO audits (Chrome for Developers)
  9. MDN: link element rel attribute (MDN)
  10. Google: title link and meta description best practices (Google Search Central)
Free site auditor

See how the pattern applies to your site

The auditor uses the same evidence bundle described above (robots, sitemap, page samples) and returns a structured opinion. No signup, no email required to see results.