SEO Architect
Run ID: 69cbdb2261b1021a29a8cf842026-03-31SEO & Growth
PantheraHive BOS
BOS Dashboard

SEO Architect: Comprehensive Site Architecture Design

Project: SEO Site Architecture Design

Topic: General eCommerce / Service-Based Business (for comprehensive testing)

Step: 1 of 3 (Generate Initial Architecture)

Date: October 26, 2023


1. Executive Summary

This document outlines a comprehensive SEO site architecture design, ideal for a new website launch or a significant redesign. The proposed architecture prioritizes crawlability, indexability, user experience (UX), and the strategic distribution of PageRank and topical authority. It incorporates best practices in URL structuring, content siloing, internal linking, and technical SEO specifications to establish a robust foundation for long-term organic search performance. The design aims to create a clear, logical, and scalable structure that effectively communicates topical relevance to search engines and guides users efficiently through the site.


2. Core Principles of SEO Site Architecture

Our design is founded on the following principles:


3. Proposed Site Architecture Overview (Conceptual Model)

Imagine a multi-category eCommerce site that also offers services (e.g., "Outdoor Gear & Adventure Tours").

text • 1,432 chars
Home Page (Highest Authority)
├── Category 1 (e.g., "Camping Gear")
│   ├── Subcategory 1.1 (e.g., "Tents")
│   │   ├── Product 1.1.1 (e.g., "2-Person Backpacking Tent")
│   │   ├── Product 1.1.2 (e.g., "Family Camping Tent")
│   │   └── ... (more products)
│   ├── Subcategory 1.2 (e.g., "Sleeping Bags")
│   │   ├── Product 1.2.1
│   │   └── ...
│   └── Category 1 Pillar Page / Guide (e.g., "Ultimate Guide to Camping Gear")
│       └── Supporting Blog Content (e.g., "Best Tents for Cold Weather," "Sleeping Bag Ratings")
├── Category 2 (e.g., "Hiking & Backpacking")
│   ├── Subcategory 2.1 (e.g., "Hiking Boots")
│   ├── Subcategory 2.2 (e.g., "Backpacks")
│   └── Category 2 Pillar Page / Guide (e.g., "Choosing the Right Hiking Gear")
│       └── Supporting Blog Content
├── Service Category (e.g., "Adventure Tours")
│   ├── Service Subcategory 1 (e.g., "Hiking Tours")
│   │   ├── Service Page 1.1 (e.g., "Grand Canyon Rim Hike")
│   │   └── ...
│   ├── Service Subcategory 2 (e.g., "Kayaking Tours")
│   └── Service Category Pillar Page (e.g., "Explore Our Adventure Tours")
│       └── Supporting Blog Content (e.g., "What to Pack for a Kayaking Tour")
├── Blog / Resource Center (Secondary Authority)
│   ├── Blog Category A (e.g., "Gear Reviews")
│   ├── Blog Category B (e.g., "Destination Guides")
│   └── Blog Category C (e.g., "Tips & Tricks")
├── About Us
├── Contact Us
├── Privacy Policy
└── Terms & Conditions
Sandboxed live preview

4. Detailed Components of the SEO Architecture

4.1. URL Structure Design

Principle: User-friendly, keyword-rich, short, and logically hierarchical. Avoid unnecessary parameters.

Proposed Structure:

  • Homepage: https://www.example.com/
  • Category Pages: https://www.example.com/category-name/

Example:* https://www.example.com/camping-gear/

  • Subcategory Pages: https://www.example.com/category-name/subcategory-name/

Example:* https://www.example.com/camping-gear/tents/

  • Product Pages: https://www.example.com/category-name/subcategory-name/product-name/

Example:* https://www.example.com/camping-gear/tents/2-person-backpacking-tent/

* Alternative (shorter for deep hierarchies): https://www.example.com/product/product-name/ (if categories/subcategories are too long/deep, but generally, full path is preferred for keyword relevance).

  • Service Category Pages: https://www.example.com/services/service-category-name/

Example:* https://www.example.com/services/adventure-tours/

  • Individual Service Pages: https://www.example.com/services/service-category-name/service-name/

Example:* https://www.example.com/services/adventure-tours/grand-canyon-rim-hike/

  • Blog/Resource Center: https://www.example.com/blog/ or https://www.example.com/resources/

* Blog Category: https://www.example.com/blog/category-name/

Example:* https://www.example.com/blog/gear-reviews/

* Blog Post: https://www.example.com/blog/blog-post-title-with-keywords/

Example:* https://www.example.com/blog/best-tents-cold-weather/

  • Pillar Pages: Integrated within their respective categories or blog, e.g., https://www.example.com/camping-gear/ultimate-guide-camping-gear/ or https://www.example.com/blog/ultimate-guide-camping-gear/
  • Static Pages: https://www.example.com/about-us/, https://www.example.com/contact/

Key Considerations:

  • Hyphens for separators: Always use hyphens (-) not underscores (_).
  • Lowercase only: All URLs should be lowercase to avoid duplicate content issues.
  • Conciseness: Keep URLs as short as possible while retaining descriptive keywords.
  • Avoid dates in product/service URLs: Use dates only for blog posts where chronological relevance is important.
  • Trailing slashes: Be consistent (e.g., always use trailing slashes for directories, no trailing slashes for files, or vice-versa). Implement a 301 redirect strategy for inconsistencies.

4.2. Content Siloing Strategy

Principle: Organize content into distinct, thematically related clusters to build deep topical authority and prevent keyword cannibalization.

Implementation:

  1. Primary Silos (Top-Level Categories):

* Each top-level category (e.g., "Camping Gear," "Hiking & Backpacking," "Adventure Tours") forms a major silo.

* These categories are linked from the main navigation.

  1. Sub-Silos (Subcategories):

* Within each primary silo, subcategories further refine topical focus (e.g., "Tents," "Sleeping Bags" within "Camping Gear").

* These pages link to their respective products and relevant blog content.

  1. Pillar Pages (Hubs):

* A comprehensive "pillar page" will be created for each major silo and potentially key sub-silos. This page acts as the authoritative overview for the topic.

Example:* "Ultimate Guide to Camping Gear" for the "Camping Gear" silo.

  1. Supporting Content (Spokes):

* Detailed blog posts, product reviews, how-to guides, and informational articles serve as supporting content, linking back to their relevant pillar page and other related content within the silo.

Example:* "Best Tents for Cold Weather," "How to Choose a Sleeping Bag" for the "Camping Gear" silo.

Benefit: This structure clearly signals to search engines the depth of expertise on specific topics, improving rankings for broad and long-tail keywords within those silos.

4.3. Internal Linking Strategy

Principle: Strategically distribute PageRank and anchor text to important pages, guide users, and reinforce topical relationships.

Implementation:

  1. Hierarchical Linking (Top-Down):

* Homepage: Links to all main categories/services (primary silos).

* Category Pages: Link to their respective subcategories, pillar pages, and a selection of top-performing products/services.

* Subcategory Pages: Link to individual products/services, relevant pillar pages, and supporting content.

  1. Pillar-to-Spoke & Spoke-to-Pillar Linking:

* Pillar Pages: Link out to all relevant supporting content (spokes) using descriptive anchor text.

* Supporting Content (Spokes): Link back to their respective pillar page and other related spokes within the same silo.

  1. Contextual Linking:

* Within blog posts and product descriptions, link naturally to related products, services, categories, or other informational articles.

* Use keyword-rich and varied anchor text.

  1. Navigation Links:

* Main Navigation: Links to the highest-priority category and service pages.

* Footer Navigation: Links to essential utility pages (About Us, Contact, Privacy Policy, Sitemaps).

* Breadcrumbs: Implement breadcrumbs on all subpages to show the user's path and provide internal links.

Example:* Home > Camping Gear > Tents > 2-Person Backpacking Tent

  1. "Related Products/Services" & "You Might Also Like" Sections:

* Dynamically generated links on product/service pages to relevant items, ensuring they stay within the same silo where possible.

  1. XML Sitemaps: Generate and regularly update XML sitemaps for all indexable content types (pages, products, images). Submit to Google Search Console and Bing Webmaster Tools.

Key Considerations:

  • Anchor Text: Use descriptive, keyword-rich, and varied anchor text, avoiding generic "click here."
  • Link Depth: Aim to keep important pages within 3-4 clicks from the homepage.
  • Broken Links: Regularly monitor and fix broken internal links.

4.4. Hub-and-Spoke Model Implementation

Principle: A specific application of content siloing and internal linking where a central, authoritative "hub" page links to multiple related "spoke" pages, and the spoke pages link back to the hub.

Implementation:

  • Hub Pages: These will be our "Pillar Pages." They are comprehensive, long-form pieces of content targeting broad, high-volume keywords.

Examples:* "Ultimate Guide to Camping Gear," "Choosing the Right Hiking Gear," "Explore Our Adventure Tours."

  • Spoke Pages: These are more specific, detailed articles or service/product pages that delve into sub-topics related to the hub. They target long-tail keywords.

Examples for "Ultimate Guide to Camping Gear" Hub:*

* "Best Tents for Cold Weather" (Blog post)

* "How to Choose a Sleeping Bag Temperature Rating" (Blog post)

* "Review of the XYZ Backpacking Stove" (Blog post/Product page)

* "2-Person Backpacking Tent" (Product page)

Linking within the Model:

  • Hub to Spoke: The Hub page will contain internal links to all relevant Spoke pages, using descriptive anchor text. These links typically appear in a table of contents, "related articles" section, or contextually within the Hub's body.
  • Spoke to Hub: Each Spoke page will include a prominent internal link back to its parent Hub page, often with an anchor text like "Learn more about Camping Gear" or "Back to the Ultimate Guide." This reinforces the topical relationship and passes authority back to the hub.

Benefit: This model strengthens topical authority, improves search engine understanding of content relationships, and boosts the ranking potential of both hub and spoke pages.

4.5. Technical SEO Specifications

Principle: Ensure the site is technically sound for optimal crawlability, indexability, security, and performance.

Key Specifications:

  1. Robots.txt File:

* Allow access to all critical CSS, JS, and image files.

* Disallow crawling of non-essential pages (e.g., admin areas, internal search results, duplicate content generated by filters/sorts if not handled by canonicals).

* Include a link to the XML sitemap.

  1. XML Sitemaps:

* Dedicated sitemaps for pages, products, images, and potentially videos.

* Automatically generated and updated.

* Exclude noindex pages.

* Submit to Google Search Console and Bing Webmaster Tools.

  1. Canonicalization:

* Implement <link rel="canonical" href="[preferred URL]"> on all pages to prevent duplicate content issues (e.g., for filtered product listings, URL parameters, print versions).

* Ensure canonicals point to the preferred, indexable version of a page.

  1. HTTPS (SSL/TLS):

* Implement site-wide HTTPS. All traffic should be redirected from HTTP to HTTPS via 301 redirects.

* Ensure all internal links and resources (images, JS, CSS) use HTTPS (no mixed content warnings).

  1. Page Speed & Core Web Vitals:

* Image Optimization: Compress images, use modern formats (WebP), implement lazy loading.

* Browser Caching: Leverage browser caching for static assets.

* Minification: Minify HTML, CSS, and JavaScript.

* Server Response Time: Optimize server performance.

* Critical CSS & Render-Blocking Resources: Prioritize critical CSS and defer non-essential JS.

* CDN: Utilize a Content Delivery Network for faster asset delivery.

  1. Mobile-First Indexing:

* Ensure the site is fully responsive and provides the same content and functionality to mobile users as desktop users.

* Mobile content should not be hidden behind tabs or accordions if it's critical.

* Verify mobile friendliness with Google's Mobile-Friendly Test.

  1. Structured Data (Schema Markup):

* Implement relevant Schema markup to help search engines understand content context and enable rich results.

* Essential Types: Organization, Website, BreadcrumbList, Product (for eCommerce), Service (for services), Article (for blog posts), FAQPage, Review.

* Validate with Google's Rich Results Test.

  1. Hreflang (for multi-language/multi-region sites):

* If applicable, implement hreflang tags to specify language and regional variations of content.

  1. Error Pages (404):

* Design a user-friendly custom 404 page that guides users back to relevant parts of the site (e.g., homepage, categories).

* Monitor 404 errors in Google Search Console.

  1. JavaScript SEO:

* Ensure critical content and links are discoverable and renderable by search engine crawlers, even if dynamically loaded by JavaScript.

* Use server-side rendering (SSR), static site generation (SSG), or client-side rendering with proper hydration if JavaScript frameworks are heavily used.

* Test JS rendering with Google's URL Inspection Tool.


5. Implementation & Maintenance Considerations

  • Staging Environment: Implement all architectural changes on a staging site first for thorough testing.
  • 301 Redirects: For redesigns, meticulously map all old URLs to new URLs with 301 permanent redirects. This is critical to preserve existing PageRank and search visibility.
  • Monitoring:

* Utilize Google Search Console and Bing Webmaster Tools for crawl errors, index coverage, and performance.

* Employ analytics tools (e.g., Google Analytics 4) to track user behavior

gemini Output

SEO Site Architecture Design & Implementation Plan

This document outlines a comprehensive SEO site architecture strategy designed to enhance organic visibility, improve user experience, and establish robust topical authority for your website. This plan is ideal for new site builds or significant redesigns, ensuring a strong foundation for long-term SEO success.


Introduction

A well-planned site architecture is the backbone of successful SEO. It dictates how search engine crawlers discover and index your content, how link equity flows throughout your site, and how users navigate your information. Our strategy focuses on creating a logical, intuitive, and technically sound structure that maximizes crawlability, indexability, and relevance for target keywords.


Core Principles of SEO Site Architecture

Before diving into specifics, the following principles will guide all architectural decisions:

  1. User-Centric Design: The primary goal is to provide an intuitive and efficient user experience, as this directly correlates with positive SEO signals.
  2. Crawlability & Indexability: Ensure search engines can easily access, understand, and index all important content.
  3. Topical Authority: Group related content to build authority around specific topics, signaling expertise to search engines.
  4. Scalability: Design an architecture that can easily accommodate future content expansion without requiring major overhauls.
  5. Efficiency: Minimize click depth for important pages and optimize resource loading for speed.

1. URL Structure Design

A clean, logical, and descriptive URL structure is crucial for both search engines and users.

1.1. Best Practices for URL Structure

  • Semantic & Descriptive: URLs should clearly indicate the content of the page.

Example:* https://www.example.com/services/seo-consulting/ (clear) vs. https://www.example.com/page?id=123&cat=4 (unclear)

  • Hierarchical: URLs should reflect the site's logical hierarchy, making it easy for users and crawlers to understand their location within the site.

Example:* domain.com/category/subcategory/product-name/

  • Keyword-Rich (but not stuffed): Include primary keywords naturally within the URL path.
  • Readability: Easy for humans to read, remember, and share.
  • Conciseness: Avoid unnecessary words, numbers, or parameters. Keep URLs as short as possible while retaining descriptiveness.
  • Hyphens for Separators: Use hyphens (-) to separate words in URLs, as recommended by Google. Avoid underscores (_).
  • Lowercase: Use lowercase characters consistently to avoid duplicate content issues (e.g., domain.com/Page vs. domain.com/page).
  • Static & Persistent: Avoid dynamic parameters where possible. If dynamic parameters are unavoidable, ensure proper canonicalization.
  • HTTPS: All URLs must use HTTPS for security and SEO benefits.

1.2. Proposed URL Structure Examples

  • Homepage: https://www.example.com/
  • Main Service/Category Page: https://www.example.com/services/
  • Specific Service/Sub-Category Page: https://www.example.com/services/seo-consulting/
  • Product Category: https://www.example.com/products/electronics/
  • Product Page: https://www.example.com/products/electronics/smartphone-xyz-model/
  • Blog Homepage: https://www.example.com/blog/
  • Blog Category: https://www.example.com/blog/seo-tips/
  • Blog Post: https://www.example.com/blog/seo-tips/guide-to-keyword-research/
  • About Us: https://www.example.com/about-us/
  • Contact Us: https://www.example.com/contact/

1.3. Actionable Steps for URL Structure

  • Define Naming Conventions: Establish clear, consistent naming conventions for all content types (categories, products, services, blog posts, etc.) before content creation.
  • 301 Redirects: For existing sites undergoing redesign, meticulously map all old URLs to their new counterparts using 301 permanent redirects to preserve link equity and prevent 404 errors.
  • Canonicalization: Implement canonical tags to specify the preferred version of a URL when duplicate or near-duplicate content exists (e.g., filtered product pages, www vs. non-www).

2. Content Siloing & Topic Clustering

Content siloing involves grouping related content thematically to build deep topical authority and improve search engine understanding of your site's expertise.

2.1. Concept & Benefits

  • Concept: Structuring your content into distinct, thematically related groups (silos) where pages within a silo link predominantly to other pages within that same silo, or to the silo's parent page.
  • Benefits:

* Enhanced Topical Authority: Signals to search engines that your site is a comprehensive resource on specific topics.

* Improved Link Equity Flow: Concentrates PageRank within relevant topic clusters, boosting the authority of key pages.

* Better User Experience: Users can easily navigate to related content, leading to longer time on site and lower bounce rates.

* Clearer Site Structure: Simplifies site management and content planning.

2.2. Silo Identification & Structure

  1. Keyword Research & Topic Grouping: Begin by conducting thorough keyword research. Group related keywords by user intent and overall topic. These groupings will form the basis of your silos.
  2. Define Core Categories (Silos): Identify your main, high-level service areas or product categories. These will be your primary silos.

Example:* For a digital marketing agency: "SEO," "PPC," "Social Media Marketing," "Content Marketing."

  1. Develop Sub-Categories/Sub-Topics: Within each main silo, break down topics into more specific sub-categories.

Example (under "SEO" silo):* "Local SEO," "Technical SEO," "On-Page SEO," "Link Building."

  1. Create Supporting Content: Populate each sub-category with detailed articles, guides, case studies, and product/service pages.

2.3. Internal Linking within Silos

  • Vertical Linking: From deeper pages up to sub-category pages, and from sub-category pages up to the main silo page.
  • Horizontal Linking: Between related pages within the same sub-category or within the same main silo.
  • Avoid Cross-Silo Linking: Generally, avoid linking directly from a page in one silo to a page in another silo, unless absolutely necessary for user experience. If a cross-silo link is critical, consider if the content needs to be re-categorized or if a hub-and-spoke model (see below) is more appropriate.

2.4. Example Content Silo Structure


- Homepage (www.example.com
gemini Output

SEO Site Architecture Design: Comprehensive Strategy

Executive Summary

This document outlines a comprehensive SEO site architecture strategy designed for optimal search engine crawlability, indexability, user experience, and ultimately, organic search performance. It covers critical components including URL structure, internal linking, content organization (silos and hub-and-spoke models), and essential technical SEO specifications. This architecture is suitable for new website builds or significant redesigns, aiming to establish a robust foundation for long-term SEO success.


1. Core Principles of SEO Architecture

A well-designed SEO architecture is built upon several fundamental principles:

  • User-Centricity: The structure should be intuitive and easy for users to navigate, finding information quickly and logically.
  • Crawlability & Indexability: Search engines must be able to efficiently discover, crawl, and index all relevant pages.
  • Topical Authority: Content should be organized to demonstrate deep expertise and authority on specific topics.
  • Keyword Relevance: URLs, content, and internal links should incorporate relevant keywords strategically.
  • Scalability: The architecture must be flexible enough to accommodate future content expansion without requiring major overhauls.
  • Technical Soundness: Adherence to technical SEO best practices ensures optimal performance and eliminates common barriers to ranking.

2. URL Structure Design

A clear, descriptive, and hierarchical URL structure is crucial for both users and search engines.

  • Principle: Short, descriptive, keyword-rich, and logically hierarchical.
  • Format: https://www.yourdomain.com/category/subcategory/keyword-friendly-page-name

2.1 Key Guidelines:

  • Readability: URLs should be easy for humans to read and understand at a glance. Avoid long strings of numbers or irrelevant characters.
  • Keyword Inclusion: Incorporate primary keywords for the page where natural and relevant. Avoid keyword stuffing.
  • Hyphens for Separation: Use hyphens (-) to separate words in URLs. Avoid underscores (_).
  • Lowercase Only: All URLs should be lowercase to prevent duplicate content issues (e.g., /Page vs. /page).
  • Static & Permanent: URLs should be static and not change frequently. If a URL must change, implement a 301 redirect.
  • Hierarchy Reflects Site Structure: The URL path should reflect the content's position within the site's logical hierarchy.

* Example:

* https://www.yourdomain.com/products/ (Category)

* https://www.yourdomain.com/products/electronics/ (Subcategory)

* https://www.yourdomain.com/products/electronics/smartphones/ (Sub-subcategory)

* https://www.yourdomain.com/products/electronics/smartphones/iphone-15-pro-max/ (Product Page)

  • Avoid Parameters (where possible): Minimize the use of dynamic parameters (?id=123&sort=new). If necessary, ensure proper canonicalization.
  • Trailing Slashes: Be consistent. Decide whether to use trailing slashes (e.g., /category/) or not (e.g., /category). Generally, a consistent approach is more important than the choice itself, but many prefer trailing slashes for directories and no trailing slashes for files.

2.2 Canonicalization Strategy for URLs:

  • Purpose: To prevent duplicate content issues by specifying the "master" version of a page when multiple URLs exist for the same or very similar content.
  • Implementation: Use the <link rel="canonical" href="[preferred-URL]" /> tag in the <head> section of all duplicate pages, pointing to the preferred version.
  • Common Scenarios for Canonicalization:

* Product pages with different filter/sort options.

* Printable versions of pages.

* URLs with tracking parameters.

* http vs. https (ensure 301 redirects to HTTPS, and canonicals reinforce this).

* www vs. non-www (ensure 301 redirects and canonicals reinforce the preferred version).


3. Content Silo Strategy

Content silos are a method of organizing website content into distinct, thematically related groups to establish topical authority and improve internal linking relevance.

3.1 Benefits:

  • Topical Authority: Signals to search engines that the site has deep expertise in specific subject areas.
  • Improved Relevance: Ensures internal links within a silo are highly relevant, passing link equity effectively.
  • Enhanced User Experience: Helps users navigate related content easily.
  • Better Rankings: Can lead to higher rankings for target keywords due to increased topical relevance and link equity flow.

3.2 Types of Silos:

  1. Directory-Based (Physical) Silos:

* The most robust method, where the website's URL structure physically separates content into directories.

* Example:

* /gardening/ (Main Silo)

* /gardening/vegetables/ (Sub-silo)

* /gardening/flowers/ (Sub-silo)

* /gardening/tools/ (Sub-silo)

* Implementation: All content within /gardening/vegetables/ would primarily link to other pages within that sub-silo or up to the main /gardening/ silo page.

  1. Internal Linking-Based (Virtual) Silos:

* Achieved through strategic internal linking patterns, even if the URL structure isn't strictly siloed.

* Less powerful than physical silos but still effective for existing sites where URL changes are difficult.

* Implementation: Group related content through contextual links, navigation, and 'related posts' sections, ensuring that pages within a virtual silo primarily link to each other.

3.3 Silo Structure Example: E-commerce Site

  • Homepage

* Category 1: Electronics (Silo Hub Page)

* Subcategory 1.1: Smartphones (Sub-silo Hub)

* Product Page A: iPhone 15 Pro

* Product Page B: Samsung Galaxy S24

* Blog Post: "Best Smartphones of 2024"

* Guide: "Choosing the Right Smartphone"

* Subcategory 1.2: Laptops (Sub-silo Hub)

* Product Page C: MacBook Air

* Product Page D: Dell XPS 15

* Blog Post: "Laptop Buying Guide"

* Category 2: Home Goods (Silo Hub Page)

* Subcategory 2.1: Kitchen Appliances (Sub-silo Hub)

* Subcategory 2.2: Furniture (Sub-silo Hub)

* Category 3: Apparel (Silo Hub Page)

* Subcategory 3.1: Men's Clothing (Sub-silo Hub)

* Subcategory 3.2: Women's Clothing (Sub-silo Hub)

Linking within Silos:

  • Pages within "Smartphones" would link extensively to each other and up to the "Electronics" hub.
  • Cross-silo linking (e.g., from "Smartphones" to "Furniture") should be minimal and only occur when genuinely relevant (e.g., a blog post comparing smart home devices that include phones and appliances).

4. Internal Linking Strategy & Hub-and-Spoke Model

Internal linking is critical for distributing page authority (PageRank), improving crawlability, and enhancing user navigation. The Hub-and-Spoke model is a powerful extension of content silos.

4.1 General Internal Linking Best Practices:

  • Contextual Links: Embed links naturally within the body copy of content, using descriptive and relevant anchor text.
  • Anchor Text: Use keyword-rich, descriptive anchor text that accurately reflects the content of the linked page. Avoid generic "click here."
  • Link Depth: Aim to keep all important pages within 3-4 clicks from the homepage. Deeper pages receive less link equity.
  • Navigation:

* Main Navigation: Primary categories and subcategories should be easily accessible from the main menu.

* Footer Navigation: Include important but less frequently accessed links (e.g., privacy policy, contact, sitemap, core category links).

* Sidebar Navigation: Useful for filtering or displaying related content within specific categories.

  • Related Content: Implement "Related Posts," "You Might Also Like," or "Customers Also Viewed" sections to encourage further exploration and build relevant internal links.
  • Breadcrumbs: Implement breadcrumb navigation (e.g., Home > Category > Subcategory > Current Page) on all pages to show users their location and provide clear internal links back up the hierarchy.

4.2 Hub-and-Spoke Model Implementation:

The Hub-and-Spoke model is a specialized internal linking strategy that leverages a central, authoritative "hub" page to distribute link equity and topical relevance to numerous related "spoke" pages.

  • Hub Page (Pillar Content):

* A comprehensive, high-level piece of content covering a broad topic.

* Targets a broad head-term keyword (e.g., "Digital Marketing Guide").

* Links out to all related "spoke" pages.

* Receives internal links from all "spoke" pages and potentially other relevant pages on the site.

  • Spoke Pages (Cluster Content):

* Detailed, specific pieces of content that dive deep into sub-topics related to the hub.

* Target long-tail keywords (e.g., "SEO Keyword Research Tools," "PPC Ad Copy Best Practices").

* Link back to the central hub page.

* May link to other highly relevant spoke pages within the same cluster.

4.3 Linking Patterns:

  1. Hub to Spokes: The hub page links to all its related spoke pages. These links should be contextual where possible, explaining how each spoke contributes to the broader topic.
  2. Spokes to Hub: All spoke pages link back to their central hub page. This is crucial for consolidating link equity and signaling the hub's authority.
  3. Spoke to Spoke (Optional but Recommended): Highly relevant spoke pages within the same cluster can link to each other to further reinforce topical connections.
  4. No Cross-Cluster Linking: Avoid linking between spoke pages of different hubs unless absolutely necessary and highly relevant.

4.4 Hub-and-Spoke Example: "Sustainable Living" Hub

  • Hub Page: https://www.yourdomain.com/sustainable-living-guide/ (Targets: "sustainable living," "eco-friendly lifestyle")

* Spoke 1: https://www.yourdomain.com/sustainable-living-guide/zero-waste-kitchen/ (Targets: "zero waste kitchen," "eco-friendly kitchen products")

* Links back to Hub

* Links to Spoke 2 (if relevant, e.g., "composting tips")

* Spoke 2: https://www.yourdomain.com/sustainable-living-guide/eco-friendly-transportation/ (Targets: "eco-friendly transportation," "public transport benefits")

* Links back to Hub

* Spoke 3: https://www.yourdomain.com/sustainable-living-guide/renewable-energy-home/ (Targets: "renewable energy home," "solar panel installation")

* Links back to Hub

* Spoke 4: https://www.yourdomain.com/sustainable-living-guide/sustainable-fashion-brands/ (Targets: "sustainable fashion brands," "ethical clothing")

* Links back to Hub


5. Technical SEO Specifications

Technical SEO ensures that search engines can efficiently crawl, index, and understand your website.

5.1 Crawlability & Indexability:

  • Robots.txt:

Purpose: Directs search engine crawlers, telling them which parts of your site not* to crawl.

* Implementation: Located at yourdomain.com/robots.txt.

Best Practice: Block irrelevant or low-value pages (e.g., admin areas, internal search results, duplicate content generated by filters) to conserve crawl budget. Ensure important pages are not* blocked.

* Example:


        User-agent: *
        Disallow: /wp-admin/
        Disallow: /wp-includes/
        Disallow: /tag/
        Sitemap: https://www.yourdomain.com/sitemap.xml
  • XML Sitemaps:

* Purpose: Provides a roadmap for search engines, listing all important pages they should crawl and index.

* Implementation: Generate an XML sitemap (often automatically by CMS like WordPress SEO plugins). Submit to Google Search Console and Bing Webmaster Tools.

* Best Practice:

* Include only canonical, indexable URLs.

* Exclude noindex pages, 301 redirects, or broken links.

* Keep sitemaps under 50,000 URLs and 50MB (split into multiple sitemaps if needed).

* Update regularly (daily/weekly for large, dynamic sites).

  • Meta Robots Tag (noindex, nofollow):

* Purpose: Provides page-specific instructions to search engine robots.

* noindex: Tells crawlers not to include the page in their index. Use for low-value pages, internal search results, thank you pages, or pages under development.

* nofollow: Tells crawlers not to pass link equity through links on that page.

* Implementation: <meta name="robots" content="noindex, follow" /> or <meta name="robots" content="index, nofollow" /> in the <head> section.

  • Canonical Tags: (As detailed in Section 2.2) Crucial for managing duplicate content.

5.2 Site Speed & Performance (Core Web Vitals):

  • Purpose: Fast-loading websites improve user experience, conversion rates, and are a ranking factor.
  • Core Web Vitals: Focus on optimizing for these metrics:

* Largest Contentful Paint (LCP): Measures loading performance. Aim for <2.5 seconds.

* First Input Delay (FID): Measures interactivity. Aim for <100 milliseconds. (Replaced by Interaction to Next Paint (INP) in March 2024).

* Cumulative Layout Shift (CLS): Measures visual stability. Aim for <0.1

seo_architect.txt
Download source file
Copy all content
Full output as text
Download ZIP
IDE-ready project ZIP
Copy share link
Permanent URL for this run
Get Embed Code
Embed this result on any website
Print / Save PDF
Use browser print dialog
\n\n\n"); var hasSrcMain=Object.keys(extracted).some(function(k){return k.indexOf("src/main")>=0;}); if(!hasSrcMain) zip.file(folder+"src/main."+ext,"import React from 'react'\nimport ReactDOM from 'react-dom/client'\nimport App from './App'\nimport './index.css'\n\nReactDOM.createRoot(document.getElementById('root')!).render(\n \n \n \n)\n"); var hasSrcApp=Object.keys(extracted).some(function(k){return k==="src/App."+ext||k==="App."+ext;}); if(!hasSrcApp) zip.file(folder+"src/App."+ext,"import React from 'react'\nimport './App.css'\n\nfunction App(){\n return(\n
\n
\n

"+slugTitle(pn)+"

\n

Built with PantheraHive BOS

\n
\n
\n )\n}\nexport default App\n"); zip.file(folder+"src/index.css","*{margin:0;padding:0;box-sizing:border-box}\nbody{font-family:system-ui,-apple-system,sans-serif;background:#f0f2f5;color:#1a1a2e}\n.app{min-height:100vh;display:flex;flex-direction:column}\n.app-header{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:40px}\nh1{font-size:2.5rem;font-weight:700}\n"); zip.file(folder+"src/App.css",""); zip.file(folder+"src/components/.gitkeep",""); zip.file(folder+"src/pages/.gitkeep",""); zip.file(folder+"src/hooks/.gitkeep",""); Object.keys(extracted).forEach(function(p){ var fp=p.startsWith("src/")?p:"src/"+p; zip.file(folder+fp,extracted[p]); }); zip.file(folder+"README.md","# "+slugTitle(pn)+"\n\nGenerated by PantheraHive BOS.\n\n## Setup\n\`\`\`bash\nnpm install\nnpm run dev\n\`\`\`\n\n## Build\n\`\`\`bash\nnpm run build\n\`\`\`\n\n## Open in IDE\nOpen the project folder in VS Code or WebStorm.\n"); zip.file(folder+".gitignore","node_modules/\ndist/\n.env\n.DS_Store\n*.local\n"); } /* --- Vue (Vite + Composition API + TypeScript) --- */ function buildVue(zip,folder,app,code,panelTxt){ var pn=pkgName(app); var C=cc(pn); var extracted=extractCode(panelTxt); zip.file(folder+"package.json",'{\n "name": "'+pn+'",\n "version": "0.0.0",\n "type": "module",\n "scripts": {\n "dev": "vite",\n "build": "vue-tsc -b && vite build",\n "preview": "vite preview"\n },\n "dependencies": {\n "vue": "^3.5.13",\n "vue-router": "^4.4.5",\n "pinia": "^2.3.0",\n "axios": "^1.7.9"\n },\n "devDependencies": {\n "@vitejs/plugin-vue": "^5.2.1",\n "typescript": "~5.7.3",\n "vite": "^6.0.5",\n "vue-tsc": "^2.2.0"\n }\n}\n'); zip.file(folder+"vite.config.ts","import { defineConfig } from 'vite'\nimport vue from '@vitejs/plugin-vue'\nimport { resolve } from 'path'\n\nexport default defineConfig({\n plugins: [vue()],\n resolve: { alias: { '@': resolve(__dirname,'src') } }\n})\n"); zip.file(folder+"tsconfig.json",'{"files":[],"references":[{"path":"./tsconfig.app.json"},{"path":"./tsconfig.node.json"}]}\n'); zip.file(folder+"tsconfig.app.json",'{\n "compilerOptions":{\n "target":"ES2020","useDefineForClassFields":true,"module":"ESNext","lib":["ES2020","DOM","DOM.Iterable"],\n "skipLibCheck":true,"moduleResolution":"bundler","allowImportingTsExtensions":true,\n "isolatedModules":true,"moduleDetection":"force","noEmit":true,"jsxImportSource":"vue",\n "strict":true,"paths":{"@/*":["./src/*"]}\n },\n "include":["src/**/*.ts","src/**/*.d.ts","src/**/*.tsx","src/**/*.vue"]\n}\n'); zip.file(folder+"env.d.ts","/// \n"); zip.file(folder+"index.html","\n\n\n \n \n "+slugTitle(pn)+"\n\n\n
\n \n\n\n"); var hasMain=Object.keys(extracted).some(function(k){return k==="src/main.ts"||k==="main.ts";}); if(!hasMain) zip.file(folder+"src/main.ts","import { createApp } from 'vue'\nimport { createPinia } from 'pinia'\nimport App from './App.vue'\nimport './assets/main.css'\n\nconst app = createApp(App)\napp.use(createPinia())\napp.mount('#app')\n"); var hasApp=Object.keys(extracted).some(function(k){return k.indexOf("App.vue")>=0;}); if(!hasApp) zip.file(folder+"src/App.vue","\n\n\n\n\n"); zip.file(folder+"src/assets/main.css","*{margin:0;padding:0;box-sizing:border-box}body{font-family:system-ui,sans-serif;background:#fff;color:#213547}\n"); zip.file(folder+"src/components/.gitkeep",""); zip.file(folder+"src/views/.gitkeep",""); zip.file(folder+"src/stores/.gitkeep",""); Object.keys(extracted).forEach(function(p){ var fp=p.startsWith("src/")?p:"src/"+p; zip.file(folder+fp,extracted[p]); }); zip.file(folder+"README.md","# "+slugTitle(pn)+"\n\nGenerated by PantheraHive BOS.\n\n## Setup\n\`\`\`bash\nnpm install\nnpm run dev\n\`\`\`\n\n## Build\n\`\`\`bash\nnpm run build\n\`\`\`\n\nOpen in VS Code or WebStorm.\n"); zip.file(folder+".gitignore","node_modules/\ndist/\n.env\n.DS_Store\n*.local\n"); } /* --- Angular (v19 standalone) --- */ function buildAngular(zip,folder,app,code,panelTxt){ var pn=pkgName(app); var C=cc(pn); var sel=pn.replace(/_/g,"-"); var extracted=extractCode(panelTxt); zip.file(folder+"package.json",'{\n "name": "'+pn+'",\n "version": "0.0.0",\n "scripts": {\n "ng": "ng",\n "start": "ng serve",\n "build": "ng build",\n "test": "ng test"\n },\n "dependencies": {\n "@angular/animations": "^19.0.0",\n "@angular/common": "^19.0.0",\n "@angular/compiler": "^19.0.0",\n "@angular/core": "^19.0.0",\n "@angular/forms": "^19.0.0",\n "@angular/platform-browser": "^19.0.0",\n "@angular/platform-browser-dynamic": "^19.0.0",\n "@angular/router": "^19.0.0",\n "rxjs": "~7.8.0",\n "tslib": "^2.3.0",\n "zone.js": "~0.15.0"\n },\n "devDependencies": {\n "@angular-devkit/build-angular": "^19.0.0",\n "@angular/cli": "^19.0.0",\n "@angular/compiler-cli": "^19.0.0",\n "typescript": "~5.6.0"\n }\n}\n'); zip.file(folder+"angular.json",'{\n "$schema": "./node_modules/@angular/cli/lib/config/schema.json",\n "version": 1,\n "newProjectRoot": "projects",\n "projects": {\n "'+pn+'": {\n "projectType": "application",\n "root": "",\n "sourceRoot": "src",\n "prefix": "app",\n "architect": {\n "build": {\n "builder": "@angular-devkit/build-angular:application",\n "options": {\n "outputPath": "dist/'+pn+'",\n "index": "src/index.html",\n "browser": "src/main.ts",\n "tsConfig": "tsconfig.app.json",\n "styles": ["src/styles.css"],\n "scripts": []\n }\n },\n "serve": {"builder":"@angular-devkit/build-angular:dev-server","configurations":{"production":{"buildTarget":"'+pn+':build:production"},"development":{"buildTarget":"'+pn+':build:development"}},"defaultConfiguration":"development"}\n }\n }\n }\n}\n'); zip.file(folder+"tsconfig.json",'{\n "compileOnSave": false,\n "compilerOptions": {"baseUrl":"./","outDir":"./dist/out-tsc","forceConsistentCasingInFileNames":true,"strict":true,"noImplicitOverride":true,"noPropertyAccessFromIndexSignature":true,"noImplicitReturns":true,"noFallthroughCasesInSwitch":true,"paths":{"@/*":["src/*"]},"skipLibCheck":true,"esModuleInterop":true,"sourceMap":true,"declaration":false,"experimentalDecorators":true,"moduleResolution":"bundler","importHelpers":true,"target":"ES2022","module":"ES2022","useDefineForClassFields":false,"lib":["ES2022","dom"]},\n "references":[{"path":"./tsconfig.app.json"}]\n}\n'); zip.file(folder+"tsconfig.app.json",'{\n "extends":"./tsconfig.json",\n "compilerOptions":{"outDir":"./dist/out-tsc","types":[]},\n "files":["src/main.ts"],\n "include":["src/**/*.d.ts"]\n}\n'); zip.file(folder+"src/index.html","\n\n\n \n "+slugTitle(pn)+"\n \n \n \n\n\n \n\n\n"); zip.file(folder+"src/main.ts","import { bootstrapApplication } from '@angular/platform-browser';\nimport { appConfig } from './app/app.config';\nimport { AppComponent } from './app/app.component';\n\nbootstrapApplication(AppComponent, appConfig)\n .catch(err => console.error(err));\n"); zip.file(folder+"src/styles.css","* { margin: 0; padding: 0; box-sizing: border-box; }\nbody { font-family: system-ui, -apple-system, sans-serif; background: #f9fafb; color: #111827; }\n"); var hasComp=Object.keys(extracted).some(function(k){return k.indexOf("app.component")>=0;}); if(!hasComp){ zip.file(folder+"src/app/app.component.ts","import { Component } from '@angular/core';\nimport { RouterOutlet } from '@angular/router';\n\n@Component({\n selector: 'app-root',\n standalone: true,\n imports: [RouterOutlet],\n templateUrl: './app.component.html',\n styleUrl: './app.component.css'\n})\nexport class AppComponent {\n title = '"+pn+"';\n}\n"); zip.file(folder+"src/app/app.component.html","
\n
\n

"+slugTitle(pn)+"

\n

Built with PantheraHive BOS

\n
\n \n
\n"); zip.file(folder+"src/app/app.component.css",".app-header{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;gap:16px}h1{font-size:2.5rem;font-weight:700;color:#6366f1}\n"); } zip.file(folder+"src/app/app.config.ts","import { ApplicationConfig, provideZoneChangeDetection } from '@angular/core';\nimport { provideRouter } from '@angular/router';\nimport { routes } from './app.routes';\n\nexport const appConfig: ApplicationConfig = {\n providers: [\n provideZoneChangeDetection({ eventCoalescing: true }),\n provideRouter(routes)\n ]\n};\n"); zip.file(folder+"src/app/app.routes.ts","import { Routes } from '@angular/router';\n\nexport const routes: Routes = [];\n"); Object.keys(extracted).forEach(function(p){ var fp=p.startsWith("src/")?p:"src/"+p; zip.file(folder+fp,extracted[p]); }); zip.file(folder+"README.md","# "+slugTitle(pn)+"\n\nGenerated by PantheraHive BOS.\n\n## Setup\n\`\`\`bash\nnpm install\nng serve\n# or: npm start\n\`\`\`\n\n## Build\n\`\`\`bash\nng build\n\`\`\`\n\nOpen in VS Code with Angular Language Service extension.\n"); zip.file(folder+".gitignore","node_modules/\ndist/\n.env\n.DS_Store\n*.local\n.angular/\n"); } /* --- Python --- */ function buildPython(zip,folder,app,code){ var title=slugTitle(app); var pn=pkgName(app); var src=code.replace(/^\`\`\`[\w]*\n?/m,"").replace(/\n?\`\`\`$/m,"").trim(); var reqMap={"numpy":"numpy","pandas":"pandas","sklearn":"scikit-learn","tensorflow":"tensorflow","torch":"torch","flask":"flask","fastapi":"fastapi","uvicorn":"uvicorn","requests":"requests","sqlalchemy":"sqlalchemy","pydantic":"pydantic","dotenv":"python-dotenv","PIL":"Pillow","cv2":"opencv-python","matplotlib":"matplotlib","seaborn":"seaborn","scipy":"scipy"}; var reqs=[]; Object.keys(reqMap).forEach(function(k){if(src.indexOf("import "+k)>=0||src.indexOf("from "+k)>=0)reqs.push(reqMap[k]);}); var reqsTxt=reqs.length?reqs.join("\n"):"# add dependencies here\n"; zip.file(folder+"main.py",src||"# "+title+"\n# Generated by PantheraHive BOS\n\nprint(title+\" loaded\")\n"); zip.file(folder+"requirements.txt",reqsTxt); zip.file(folder+".env.example","# Environment variables\n"); zip.file(folder+"README.md","# "+title+"\n\nGenerated by PantheraHive BOS.\n\n## Setup\n\`\`\`bash\npython3 -m venv .venv\nsource .venv/bin/activate\npip install -r requirements.txt\n\`\`\`\n\n## Run\n\`\`\`bash\npython main.py\n\`\`\`\n"); zip.file(folder+".gitignore",".venv/\n__pycache__/\n*.pyc\n.env\n.DS_Store\n"); } /* --- Node.js --- */ function buildNode(zip,folder,app,code){ var title=slugTitle(app); var pn=pkgName(app); var src=code.replace(/^\`\`\`[\w]*\n?/m,"").replace(/\n?\`\`\`$/m,"").trim(); var depMap={"mongoose":"^8.0.0","dotenv":"^16.4.5","axios":"^1.7.9","cors":"^2.8.5","bcryptjs":"^2.4.3","jsonwebtoken":"^9.0.2","socket.io":"^4.7.4","uuid":"^9.0.1","zod":"^3.22.4","express":"^4.18.2"}; var deps={}; Object.keys(depMap).forEach(function(k){if(src.indexOf(k)>=0)deps[k]=depMap[k];}); if(!deps["express"])deps["express"]="^4.18.2"; var pkgJson=JSON.stringify({"name":pn,"version":"1.0.0","main":"src/index.js","scripts":{"start":"node src/index.js","dev":"nodemon src/index.js"},"dependencies":deps,"devDependencies":{"nodemon":"^3.0.3"}},null,2)+"\n"; zip.file(folder+"package.json",pkgJson); var fallback="const express=require(\"express\");\nconst app=express();\napp.use(express.json());\n\napp.get(\"/\",(req,res)=>{\n res.json({message:\""+title+" API\"});\n});\n\nconst PORT=process.env.PORT||3000;\napp.listen(PORT,()=>console.log(\"Server on port \"+PORT));\n"; zip.file(folder+"src/index.js",src||fallback); zip.file(folder+".env.example","PORT=3000\n"); zip.file(folder+".gitignore","node_modules/\n.env\n.DS_Store\n"); zip.file(folder+"README.md","# "+title+"\n\nGenerated by PantheraHive BOS.\n\n## Setup\n\`\`\`bash\nnpm install\n\`\`\`\n\n## Run\n\`\`\`bash\nnpm run dev\n\`\`\`\n"); } /* --- Vanilla HTML --- */ function buildVanillaHtml(zip,folder,app,code){ var title=slugTitle(app); var isFullDoc=code.trim().toLowerCase().indexOf("=0||code.trim().toLowerCase().indexOf("=0; var indexHtml=isFullDoc?code:"\n\n\n\n\n"+title+"\n\n\n\n"+code+"\n\n\n\n"; zip.file(folder+"index.html",indexHtml); zip.file(folder+"style.css","/* "+title+" — styles */\n*{margin:0;padding:0;box-sizing:border-box}\nbody{font-family:system-ui,-apple-system,sans-serif;background:#fff;color:#1a1a2e}\n"); zip.file(folder+"script.js","/* "+title+" — scripts */\n"); zip.file(folder+"assets/.gitkeep",""); zip.file(folder+"README.md","# "+title+"\n\nGenerated by PantheraHive BOS.\n\n## Open\nDouble-click \`index.html\` in your browser.\n\nOr serve locally:\n\`\`\`bash\nnpx serve .\n# or\npython3 -m http.server 3000\n\`\`\`\n"); zip.file(folder+".gitignore",".DS_Store\nnode_modules/\n.env\n"); } /* ===== MAIN ===== */ var sc=document.createElement("script"); sc.src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.1/jszip.min.js"; sc.onerror=function(){ if(lbl)lbl.textContent="Download ZIP"; alert("JSZip load failed — check connection."); }; sc.onload=function(){ var zip=new JSZip(); var base=(_phFname||"output").replace(/\.[^.]+$/,""); var app=base.toLowerCase().replace(/[^a-z0-9]+/g,"_").replace(/^_+|_+$/g,"")||"my_app"; var folder=app+"/"; var vc=document.getElementById("panel-content"); var panelTxt=vc?(vc.innerText||vc.textContent||""):""; var lang=detectLang(_phCode,panelTxt); if(_phIsHtml){ buildVanillaHtml(zip,folder,app,_phCode); } else if(lang==="flutter"){ buildFlutter(zip,folder,app,_phCode,panelTxt); } else if(lang==="react-native"){ buildReactNative(zip,folder,app,_phCode,panelTxt); } else if(lang==="swift"){ buildSwift(zip,folder,app,_phCode,panelTxt); } else if(lang==="kotlin"){ buildKotlin(zip,folder,app,_phCode,panelTxt); } else if(lang==="react"){ buildReact(zip,folder,app,_phCode,panelTxt); } else if(lang==="vue"){ buildVue(zip,folder,app,_phCode,panelTxt); } else if(lang==="angular"){ buildAngular(zip,folder,app,_phCode,panelTxt); } else if(lang==="python"){ buildPython(zip,folder,app,_phCode); } else if(lang==="node"){ buildNode(zip,folder,app,_phCode); } else { /* Document/content workflow */ var title=app.replace(/_/g," "); var md=_phAll||_phCode||panelTxt||"No content"; zip.file(folder+app+".md",md); var h=""+title+""; h+="

"+title+"

"; var hc=md.replace(/&/g,"&").replace(//g,">"); hc=hc.replace(/^### (.+)$/gm,"

$1

"); hc=hc.replace(/^## (.+)$/gm,"

$1

"); hc=hc.replace(/^# (.+)$/gm,"

$1

"); hc=hc.replace(/\*\*(.+?)\*\*/g,"$1"); hc=hc.replace(/\n{2,}/g,"

"); h+="

"+hc+"

Generated by PantheraHive BOS
"; zip.file(folder+app+".html",h); zip.file(folder+"README.md","# "+title+"\n\nGenerated by PantheraHive BOS.\n\nFiles:\n- "+app+".md (Markdown)\n- "+app+".html (styled HTML)\n"); } zip.generateAsync({type:"blob"}).then(function(blob){ var a=document.createElement("a"); a.href=URL.createObjectURL(blob); a.download=app+".zip"; a.click(); URL.revokeObjectURL(a.href); if(lbl)lbl.textContent="Download ZIP"; }); }; document.head.appendChild(sc); } function phShare(){navigator.clipboard.writeText(window.location.href).then(function(){var el=document.getElementById("ph-share-lbl");if(el){el.textContent="Link copied!";setTimeout(function(){el.textContent="Copy share link";},2500);}});}function phEmbed(){var runId=window.location.pathname.split("/").pop().replace(".html","");var embedUrl="https://pantherahive.com/embed/"+runId;var code='';navigator.clipboard.writeText(code).then(function(){var el=document.getElementById("ph-embed-lbl");if(el){el.textContent="Embed code copied!";setTimeout(function(){el.textContent="Get Embed Code";},2500);}});}