Full SEO Audit Report

treeoflifelegacies.com

Prepared by Claude SEO
44/100
SEO Health Score
September 18, 2026 Full Audit

Table of Contents

1. Executive Summary

This report presents a comprehensive SEO audit of treeoflifelegacies.com for a Service-area business (SAB) / personal brand — legacy video interviews, personal-history documentaries, ethical wills. Sole practitioner April Bell, SF Bay Area, since 2008. site, generated on September 18, 2026. Findings combine technical, content, schema, performance, visual, and search-readiness evidence as available.

44/100
SEO Health Score
Critical Issues Found:
  1. 23 live, nav-linked pages carry noindex,nofollow — including /contact/ (the only lead-capture page), /blog/, a 10-page process series and four workshop service pages
  2. 106 video embeds (104 Vimeo + 2 YouTube) across 31 of 41 pages with zero VideoObject markup, zero transcripts and zero <track> elements
  3. No pricing anywhere — zero $ characters on /legacy-video/packages/; the homepage CTA 'Check Pricing & Availability' links to the deindexed /contact/
  4. Mobile LCP fails Poor on all 5 templates measured (9.9-13.3s) — 264-314KB of Divi inline CSS per page plus a 12-item render-blocking chain
  5. All four press claims verify as real (NYT names the business; Wired, USA Today and Fox News cover the StoryCatcher app April Bell co-created) plus an unlinked Lamorinda Weekly feature about the business — yet all of it is reduced to four uncaptioned grey logos in a social-follow module, cited in no schema and on no commercial page
Quick Wins:
  1. Remove noindex from /contact/, /blog/ and the workshop pages — a settings change that restores a conversion page and a product line to search
  2. Deploy the pre-generated VideoObject JSON-LD to /legacy-video/samples/ and the six heaviest video pages (77 of 106 embeds)
  3. Caption the press row, quote the NYT sentence in visible copy, and link the Lamorinda Weekly feature and Fox News article the site currently links nowhere; add all verified URLs to sameAs
  4. Join the Jim Finegold evidence: the NYT photographed him with April Bell, his signed testimonial and four photos of the pair are already on the site, and 'New York Times' never appears within 600 characters of 'Finegold' in visible text on any page — one sentence and four alt attributes close the loop
  5. Rewrite service-page titles to include 'legacy video' — the H1s already do, the titles don't, and each has 20+ unused characters

2. Audit Categories

2.1 Technical SEO

Score: 34/100

What Works

Findings

23 live, nav-linked pages are deindexed Critical

22 URLs return noindex,nofollow and one (/category/blog/) noindex,follow. Includes /contact/ (only lead capture, with the phone and email), /blog/ (blog hub), the 10-page process series, four workshop/service pages, /legacy-storytelling/storycatcher/, and 3 of 13 project case studies. Yoast correctly excludes them from the sitemap — the noindex configuration is the defect. nofollow additionally makes the sitewide nav links to them dead weight on all 41 indexable pages.

Recommendation: Audit each against intent. Remove noindex from /contact/, /blog/, the four workshop pages and the StoryCatcher page. Remove nofollow from all of them regardless. Keep client-utility pages (/testimonial-prepro/, /project/vision-video-input-form/) noindexed.

69% of every page is inline CSS High

Homepage is 383,948 bytes of which 264,779 (69%) is inline <style> from Divi dynamic CSS (et_pb_ x2,984; Elementor absent). Sitewide average 425,541 bytes/page. Composition: ~98KB icon-font CSS, ~66KB Divi core/FontAwesome, ~45KB across 201 inlined @font-face rules for 6 Google Fonts families.

Recommendation: Disable unused Divi Booster icon-font CSS, self-host and subset the fonts, defer the 10 non-critical plugin stylesheets, enable Divi dynamic + critical CSS.

/legacy-storytelling/ is a live 404 linked from 7 pages High

Returns a 218KB themed 404. Linked contextually from 7 pages; the site's own Broken Link Checker flags it on 8. Its child /legacy-storytelling/legacy-questions/ also asserts it as a BreadcrumbList parent.

Recommendation: Create the hub page or repoint the links to the surviving child.

Security headers absent Medium

Only Content-Security-Policy: upgrade-insecure-requests is sent. No HSTS, X-Content-Type-Options, X-Frame-Options, Referrer-Policy or Permissions-Policy.

Recommendation: Add all five at the LiteSpeed/Hostinger level.

WordPress surface exposed Medium

/wp-json/wp/v2/users publicly returns both accounts with full bios; xmlrpc.php accepts POST and advertises pingback.ping; /?s= internal search results carry no robots directive and are indexable.

Recommendation: Restrict the users endpoint, disable xmlrpc pingback, add noindex to search results.

Sitemap hygiene Low

/layout_tag/meet-april/ is submitted while 301ing to /. Three declared child sitemaps (category, post_tag, project_tag) are permanently empty. IndexNow not implemented.

Recommendation: Exclude layout_tag, project_category, author, category, post_tag, project_tag from the Yoast sitemap; add IndexNow.


2.2 Content Quality

Score: 48/100

What Works

Findings

Blog dormant for over three years High

Newest post 2023-07-22; 11 posts in 12 years (2014:2, 2015:1, 2016:1, 2017:1, 2020:3, 2021:1, 2023:2). Six share a bulk dateModified of 2023-06-25 — a migration artifact, not an editorial refresh. The hub /blog/ is itself noindex,nofollow.

Recommendation: Restart on a real cadence aimed at definitional queries, or stop presenting it as active.

The author entity is anchored to the weakest page on the site High

Article.author does carry {name: April Bell, @id} and the Person node exists — but its url resolves to /author/april2745/, a 566-word duplicate archive, rather than /april-bell/ (979 words), which carries no Person node at all. The two author archives are byte-identical and one is titled 'Ken Bell' while listing April's posts.

Recommendation: Repoint the Person url to /april-bell/ and add the Person node there. Noindex or consolidate the author archives.

A dissolved credential is still asserted in schema High

Person.description on all 11 posts and on /author/april2745/ claims membership of the Association of Personal Historians, dissolved in 2017. The visible bio box was updated; the WordPress user bio behind the schema was not.

Recommendation: Edit the WordPress user bio.

No terms, refund or cancellation policy High

grep returns 0 pages for each. For a service taking custody of irreplaceable family footage this is the largest trust gap after the press framing.

Recommendation: Publish terms covering footage ownership, storage, delivery and cancellation.

Contradictory service facts between the two pages describing one service Medium

Different package taxonomies (Essential Edit/Mini-Doc/Documentary vs Interview/Highlight/Documentary Package), different interview durations (1.5h vs 4.5h for individuals) and different proof-cycle counts. /legacy-video/packages/ also duplicates its own Mini-Doc Edit block verbatim (repetition_score 38.0).

Recommendation: Pick the true version; delete the duplicated block.

AI citation readiness 24/100 Medium

Zero definitional sentences for 'legacy video', 'personal historian' or 'legacy interview'. The word 'transcript' appears on 0 of 41 pages; zero <track> elements against 106 videos.

Recommendation: Transcribe the videos and add definition-first opening passages, following the /ethical-will-app/ pattern.

Thin pages, several of them video-primary Medium

/project/ (58w), /project_category/ethical-will/ (59w), /project/susan-hackett/ (109w), /testimonial-prepro/ (128w), /project/rotary/ (152w), /project/dan-senter-retirement/ (223w), /process-overview/ (253w), /project/vision-video-input-form/ (302w). Rotary, Dan Senter and Susan Hackett each carry 1-2 films — they are video pages missing transcripts, not empty pages.

Recommendation: Transcribe the video-primary ones; consolidate or noindex the true utility pages.

Duplicate content Medium

/layout_tag/meet-april/ is a byte-level twin of the homepage (identical title, description, 1,043 words, 30 images). /process-overview/ (253w) competes with /legacy-video/process/ (1,324w).

Recommendation: Exclude the layout_tag taxonomy; 301 /process-overview/ to /legacy-video/process/.


2.3 On-Page SEO

Score: 52/100

What Works

Findings

Service-page titles drop the head term High

H1s say 'Legacy Video Packages/Process/Samples'; titles say only 'Video Packages/Process/Samples' (37-38 chars, 20+ unused). /business/ title is 'Business Videos' against an H1 of 'Origin Stories - Testimonials - Promotional Videos'.

Recommendation: Rewrite to lead with 'Legacy Video' plus a qualifier, 50-60 chars.

Homepage title omits service and geography High

'A Legacy Video is The Ultimate Gift | Tree of Life Legacies' — 'Ultimate Gift' matches no commercial query. The H1 carries the keywords instead.

Recommendation: Retitle to service + geo; move the emotional framing to the meta description and the hero H2.

Internal linking is ~100% boilerplate; 11 pages have zero contextual inbound links High

21 of 69 internal targets appear on all 41 pages. Anchors are uppercase nav labels: PACKAGES x82, SAMPLE VIDEOS x82, MEET APRIL x164, RAVING FANS x82. Orphans include /soul-forum/ (2,391 words, the site's longest page), /carli/, /ethical-will-workshop/, /mlp/ and 8 of 10 indexed case studies.

Recommendation: Add in-body contextual links with descriptive anchors; /legacy-video/samples/ should link to each case study by name.

19 of 41 pages have no meta description Medium

Includes /legacy-video/samples/ and /soul-forum/. Four more are actively harmful: /kind-words-and-raving-fans/ serves a first-person client quote containing the typo 'telll'; /legacy-video/packages/ shouts 'AFFORDABLE SOLUTIONS'; both author archives serve a bare URL.

Recommendation: Write descriptions for the 8 commercially important ones first; rewrite the four harmful ones.

8 pages have no H1; 3 have two Medium

Three no-H1 pages carry 796-966 words (/carli/, /forgotten-childhood/, /walnut-creek-journal-2014/), making this a Divi template defect for the project post type and blog layout. /april-bell/ H1 reads '~April Bell' with a stray tilde.

Recommendation: Fix the Divi templates; demote duplicate H1s to H2.

No pricing and no quote mechanism Medium

Zero $ on /legacy-video/packages/; 'pricing' and 'cost' both zero in visible text; the only two 'price' hits are the word 'priceless'. The page does state the process takes three to six months.

Recommendation: Publish an anchor price or range, or at minimum add a real quote request path on the page.

Brand casing inconsistent Low

34 pages 'TREE of LIFE LEGACIES', 3 'Tree of Life Legacies', 2 with no brand suffix.

Recommendation: Standardise on title case.


2.4 Schema / Structured Data

Score: 47/100

What Works

Findings

Zero VideoObject on a video production site Critical

104 unique Vimeo IDs + 2 YouTube across 31 of 41 pages, 0 VideoObject nodes (verified twice independently). Heaviest: /project/kendra-ethical-will-video/ (16), /project/walnut-creek-history/ (15), /soul-forum/ (14), /business/ (13), /project/haywood-legacy-stories/ (10), /legacy-video/samples/ (9). Three pages also serve self-hosted .mp4.

Recommendation: Deploy schema-generated/04-video-object-example.json and 05-video-object-template.json. The six heaviest pages cover 77 of 106 embeds.

No LocalBusiness / ProfessionalService High

Only generic Organization. No areaServed for a service-area business. The one page carrying phone and email (/contact/) is noindex,nofollow, so schema telephone cannot be corroborated by indexable on-page content.

Recommendation: Deploy schema-generated/01-organization-localbusiness-patch.json after surfacing the phone on indexable pages. areaServed only — no PostalAddress or geo, since none is published.

No standalone Person for April Bell High

/april-bell/ is typed WebPage + AboutPage only. The Person node referenced by Article.author points to the weaker /author/april2745/ archive.

Recommendation: Deploy schema-generated/02-person-april-bell.json; add verified press URLs to sameAs.

Broken and phantom breadcrumb parents High

/legacy-storytelling/legacy-questions/ asserts a parent that 404s. Three /legacy-video/* URLs assert /legacy-video/ as parent, which 301s to the homepage.

Recommendation: Create the real hub pages, or correct the breadcrumb configuration.

No Service nodes for the real offerings Medium

Four genuine services (legacy video interview, ethical will video, business/founder documentary, ethical will workshop) have no Service markup. Several have no indexable page to attach it to until the noindex is lifted.

Recommendation: Deploy schema-generated/03-service-offerings.json — no price fields, since no prices are published.

Organization node incomplete Low

Missing founder and foundingDate despite the site saying 'since 2008'. sameAs mixes a personal LinkedIn profile into the Organization node. A second brand domain (aprilbell.com) runs its own Organization block, splitting the entity.

Recommendation: Add founder/foundingDate; move personal profiles to the Person node.

Testimonials are not eligible for review rich results Info

/kind-words-and-raving-fans/ testimonials are real and named but are self-serving organisation reviews with no collected rating — not eligible for Google review rich results. Marking them up aids entity clarity but will not produce stars.

Recommendation: Pursue third-party reviews off-site instead. Offer/pricing, FAQPage (retired 2026-05-07), HowTo (deprecated) and QAPage were all evaluated and correctly ruled out.


2.5 Performance (CWV)

Score: 33/100

What Works

Findings

Mobile LCP fails Poor on all 5 templates Critical

9.9s-13.3s against a 2.5s good threshold. Desktop passes on 2 of 5, borderline on 1, needs-improvement on 2. Lighthouse 13.4.1 lab data — no CrUX credentials, so no field confirmation. TBT used as the INP proxy.

Recommendation: Attack the inline CSS (see Technical). The LCP element is the hero text heading on all five templates, not an image — so image work will not move it.

Cache-miss TTFB is 4.7-4.8s High

A forced cache-miss (?cachebust=) on the two heaviest templates produced 4.7-4.8s TTFB, matching the original crawl's slow figures (/soul-forum/ 7.6s, /project/walnut-creek-history/ 7.3s). Traffic arriving with UTM or ad parameters may never hit cache.

Recommendation: Verify LiteSpeed cache behaviour with query strings before spending on paid traffic.

Google Fonts is the largest third-party cost High

262-628KB per page across 6 families, delivered via 201 inlined @font-face rules.

Recommendation: Self-host, subset to the glyphs actually used, and cut to two families.

12-item render-blocking chain on every template High

jQuery plus 10 plugin stylesheets, identical across all templates.

Recommendation: Defer non-critical CSS and move jQuery out of the critical path.

Heavy video pages load all embeds eagerly Medium

The four slowest pages carry 14, 15, 13 and 10 Vimeo embeds respectively. A one-off 2.78MB Cloudflare Turnstile request storm was observed on /soul-forum/'s 15 iframes but did not reproduce — reported with uncertainty.

Recommendation: Facade-load video embeds (poster image plus click-to-load). Fixes both performance and the eager third-party requests.


2.6 AI Search Readiness

Score: 38/100

What Works

Findings

Nothing on the site is shaped like a quotable answer Critical

Citability sub-score 18/100. No sentence anywhere defines what a legacy video is — the only 'legacy video is' match sitewide is the title tag 'A Legacy Video is The Ultimate Gift'. 197 of 253 text blocks are under 40 words, none exceeds 200, and none falls in the 134-167 word band that extracts cleanly. Question-shaped headings: 18 of 322 non-footer H2/H3 (5.6%), and 7 of those are on the privacy policy.

Recommendation: Add definition-first 140-160 word answer blocks for 'what is a legacy video', 'what does a legacy video cost', 'how long does it take' and 'what is an ethical will'. Drop-in blocks are drafted in findings/geo.md.

106 videos with no transcripts are invisible to language models Critical

Over 100 primary-source expert interviews, zero transcripts, zero <track> elements, zero VideoObject. The site's single richest body of expertise is entirely opaque.

Recommendation: Transcribe, starting with /legacy-video/samples/.

Confirmed NYT and Wired citations attach to no entity High

A New York Times article (Constance Gustke, 31 Oct 2014) names 'Tree of Life Legacies' verbatim and quotes April Bell, with an NYT staff photograph of her and a named client — verified via Wayback. Wired and USA Today separately cover StoryCatcher, which she co-created. None of it appears in sameAs; the Person sameAs array holds only a self-reference. No Person entity exists. A YouTube channel (@TreeOfLifeLegacies) is unlinked and absent from sameAs while ~104 films sit on Vimeo, and a second brand domain runs its own Organization block. Common Crawl: in_crawl true, in_rankings false; the newest snapshot (2025-51) holds 13 URLs and includes neither the homepage nor /april-bell/ nor any /legacy-video/* page, down from 25 in 2024-51. Additionally: a full Lamorinda Weekly feature about the business (1 Jan 2014, Sophie Braccini) names Tree of Life Legacies x4, April Bell x2, 'personal historian' and the Lafayette/Moraga/Orinda service area in running prose, and identifies 'Orinda resident Don Carlson' as a client whose own case study page (/project/don/) is noindexed — the single best entity-resolution source available — and 0 of 41 pages link to it. A properly built press page already exists at storycatcher.app/press/, on a different domain. The brand is split across three domains each with its own Organization block.

Recommendation: Quote the NYT sentence in visible copy, and consolidate the entity: a Person node whose sameAs covers the verified press URLs, the YouTube channel and the sister domains.

Absent from 5 of 6 sampled AI/search queries High

Not present for 'what is a legacy video', 'how much does a legacy video cost', 'what is an ethical will', 'legacy video service Bay Area' or 'video biography service near me'.

Recommendation: The definitional layer is the prerequisite; nothing else will move these.

No NAP on any indexable page Medium

tel:9254651118 is in the markup of all 41 pages but only as a Divi social-follow glyph titled 'Follow on Phone' — never rendered as readable text. The only readable contact details sit on the noindexed /contact/.

Recommendation: Surface phone and service area as real footer text sitewide.

llms.txt absent Info

Returns 404. Optional, not consumed by Google Search, limited adoption — not a ranking factor.

Recommendation: Optional, and only after the passage-level work. Not a priority.


2.7 Images

Score: 61/100

What Works

Findings

67 content images have no alt text High

131 instances across 41 pages, covering every client testimonial cover (Dan, Barb & Terry, Arthur, Christina, Michael Rosa, Cliff, Rich, Bernet family), every sample-film cover (Don, Edna, Gary Bogue, Bill Del Monte, Leroy, Mike, Charlene, Peyman, Peter, Luxy & Michael), the 15-part Kendra series, the Walnut Creek Historical Society covers, and April Bell's own headshot. Worst: /project/kendra-ethical-will-video/ (17), /kind-words-and-raving-fans/ (13), /legacy-video/samples/ (10). Note the site has an /accessibility-statement/ page.

Recommendation: Write descriptive alt naming person and subject. Start with /legacy-video/samples/ and /kind-words-and-raving-fans/, where the images are the content.

Press-logo alt text is filename garbage Medium

'NYT Gray 300', 'wired gray 300', 'usa-today gray 300' — 42 instances each sitewide. Fox-News-300.png has no alt at all and no link wrapper, unlike the other three.

Recommendation: Rewrite to name the outlet and the coverage; attribute to StoryCatcher where that is what was covered.

Lazy-loading is JS-dependent with no native fallback Medium

674 of 756 img tags ship a 1x1 base64 SVG placeholder in src with the real URL in data-src (WP Smush); loading=lazy appears 0 times. Measurement note: this is NOT the LCP bottleneck — the LCP element is hero text on all 5 templates tested. The real cost is that non-rendering crawlers and scrapers see only a placeholder.

Recommendation: Switch to native loading=lazy and exclude above-the-fold images. Lower priority than the Divi CSS work.

Half the back catalogue is not next-gen Medium

59 .jpg, 40 .webp, 16 .png, 5 .jpeg across 120 unique content images. WebP files are all 2024-25 uploads; 2011-2023 is unconverted.

Recommendation: Bulk-convert with Smush, which is already installed.

42 img tags lack width or height Low

With a 1x1 placeholder in src, a missing dimension pair leaves no aspect ratio to reserve. Smush's --smush-placeholder-aspect-ratio mitigates this where present, but not on these 42.

Recommendation: Add explicit dimensions; identify them from images.json.


3. Action Plan

Phase 1: Critical Fixes Week 1

Phase 2: High-Impact Improvements Weeks 2-3

Phase 3: Content & Authority Month 2

Phase 4: Monitoring & Iteration Ongoing


Data Sources & Methodology

Source Description Update Frequency
PageSpeed Insights API Lighthouse lab audit (mobile emulation, Moto G Power, slow 4G) Real-time
Chrome UX Report (CrUX) 28-day rolling field data from real Chrome users Daily ~04:00 UTC
CrUX History API 25-week p75 trend data per metric Weekly
Google Search Console Search Analytics (clicks, impressions, CTR, position) 2-3 day lag
URL Inspection API Per-URL index status, coverage state, crawl info Real-time (2,000/day)

Report generated by Claude SEO — Google SEO Intelligence Skill — September 18, 2026
Methodology based on Google Web Vitals thresholds, Search Console documentation, and Lighthouse scoring algorithms.