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.
Score: 34/100
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.
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.
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.
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.
/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.
/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.
Score: 48/100
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.
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.
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.
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.
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.
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.
/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.
/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/.
Score: 52/100
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.
'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.
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.
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.
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.
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.
34 pages 'TREE of LIFE LEGACIES', 3 'Tree of Life Legacies', 2 with no brand suffix.
Recommendation: Standardise on title case.
Score: 47/100
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.
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.
/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.
/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.
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.
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.
/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.
Score: 33/100
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.
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.
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.
jQuery plus 10 plugin stylesheets, identical across all templates.
Recommendation: Defer non-critical CSS and move jQuery out of the critical path.
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.
Score: 38/100
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.
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/.
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.
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.
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.
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.
Score: 61/100
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.
'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.
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.
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.
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.
| 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.