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

The following document outlines a comprehensive SEO site architecture designed to maximize organic visibility, enhance user experience, and establish strong topical authority. This architecture is suitable for new websites or significant redesigns, laying a robust foundation for long-term SEO success.


1. Executive Summary

A well-planned SEO site architecture is the backbone of organic search performance. It dictates how search engines crawl, index, and understand a website's content, while simultaneously guiding users through a logical and intuitive journey. This deliverable details a strategic approach encompassing URL structure, internal linking, content siloing, hub-and-spoke models, and critical technical SEO specifications. Implementing these recommendations will ensure optimal crawlability, indexability, and authority distribution, leading to improved rankings and increased organic traffic.

2. Foundational Principles of SEO Architecture

Our design is guided by the following core SEO principles:

3. URL Structure Design

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

3.1. General Principles

3.2. Recommended Structure Format

text • 285 chars
https://www.yourdomain.com/
├── category-name/
│   ├── sub-category-name/
│   │   ├── product-service-or-article-name/
│   │   └── another-product-service-or-article-name/
│   └── main-article-under-category/
└── blog/
    └── blog-category-name/
        └── specific-blog-post-title/
Sandboxed live preview

3.3. Specific Examples

  • Homepage: https://www.example.com/
  • Main Category Page: https://www.example.com/outdoor-gear/
  • Sub-Category Page: https://www.example.com/outdoor-gear/camping-tents/
  • Product Page: https://www.example.com/outdoor-gear/camping-tents/lightweight-2-person-tent/
  • Service Page: https://www.example.com/digital-marketing/seo-services/technical-seo-audit/
  • Core Content Article: https://www.example.com/outdoor-gear/camping-tents/how-to-choose-a-camping-tent/
  • Blog Category Page: https://www.example.com/blog/camping-tips/
  • Blog Post: https://www.example.com/blog/camping-tips/essential-gear-for-winter-camping/
  • About Us Page: https://www.example.com/about-us/

3.4. URL Best Practices Checklist

  • Use Hyphens: For word separation (e.g., two-person-tent).
  • Lowercase: All characters in URLs should be lowercase.
  • Remove Stop Words: Judiciously remove common words like "a," "an," "the," "in," "on," etc., if they don't impact readability or meaning.
  • Avoid Special Characters: Stick to alphanumeric characters and hyphens.
  • Trailing Slashes: Be consistent (e.g., always use https://www.example.com/page/ or https://www.example.com/page but not a mix). A trailing slash often indicates a directory, while its absence suggests a file. For consistency and to avoid duplicate content, configure your server to enforce one version with a 301 redirect for the other.

4. Content Siloing and Hub-and-Spoke Models

Content siloing is a strategy to group related content thematically, establishing clear topical authority and improving the flow of link equity. The hub-and-spoke model is a practical implementation of siloing.

4.1. The Concept of Content Silos

A content silo is a logical grouping of related web pages that collectively cover a broad topic in depth. This structure signals to search engines that your site is an authoritative resource on that specific subject.

4.2. Hub-and-Spoke Model Implementation

  • Hub Pages (Pillar Content): These are broad, high-level pages that cover a core topic comprehensively but not exhaustively. They link out to multiple "spoke" pages. Hub pages target broad, high-volume keywords.

* Example: /outdoor-gear/camping-tents/ (This page might broadly discuss different types of tents, their features, and brands.)

  • Spoke Pages (Cluster Content): These are more specific, in-depth articles or product/service pages that dive into sub-topics or specific aspects mentioned on the hub page. Spoke pages target long-tail or more specific keywords. They link back to their respective hub page and may link to other related spokes within the same silo.

* Example:

* /outdoor-gear/camping-tents/lightweight-2-person-tent/ (Specific product page)

* /outdoor-gear/camping-tents/family-camping-tent-guide/ (In-depth guide on choosing family tents)

* /outdoor-gear/camping-tents/tent-materials-explained/ (Detailed article on tent fabrics)

4.3. Benefits of Siloing & Hub-and-Spoke

  • Enhanced Topical Authority: Clearly demonstrates expertise to search engines.
  • Improved Link Equity Flow: Concentrates PageRank within relevant topic clusters.
  • Better User Experience: Users can easily navigate through related content.
  • Higher Rankings: Strong topical relevance can lead to better keyword rankings.
  • Reduced Keyword Cannibalization: Helps differentiate content around similar keywords.

4.4. Silo Structure Example (Outdoor Gear Site)

  • Homepage: yourdomain.com (Links to main hubs)
  • Main Hub 1 (e.g., Camping Gear): yourdomain.com/camping-gear/

* Sub-Hub 1.1 (Tents): yourdomain.com/camping-gear/tents/

* Spoke 1.1.1 (Product): yourdomain.com/camping-gear/tents/lightweight-2-person-tent/

* Spoke 1.1.2 (Guide): yourdomain.com/camping-gear/tents/how-to-choose-a-tent/

* Spoke 1.1.3 (Review): yourdomain.com/camping-gear/tents/best-4-season-tents-review/

* Sub-Hub 1.2 (Sleeping Bags): yourdomain.com/camping-gear/sleeping-bags/

* Spoke 1.2.1 (Product): yourdomain.com/camping-gear/sleeping-bags/mummy-bag-20-degree/

* Spoke 1.2.2 (Guide): yourdomain.com/camping-gear/sleeping-bags/sleeping-bag-temperature-ratings-explained/

  • Main Hub 2 (e.g., Hiking & Backpacking): yourdomain.com/hiking-backpacking/

* ...and so on.

5. Internal Linking Strategy

Internal links are crucial for guiding users and search engines through your site, distributing authority, and establishing semantic relationships between pages.

5.1. Key Principles

  • Contextual Linking: Embed links naturally within the body text of content, using descriptive and keyword-rich anchor text.
  • Navigational Linking:

* Main Navigation: Prominently feature links to all primary hub pages.

* Footer Navigation: Include links to important utility pages (e.g., Contact, Privacy Policy, About Us) and secondary hub pages.

* Breadcrumbs: Implement Home > Category > Sub-Category > Current Page to show the user's location and provide crawl paths.

  • Silo-Based Linking:

* Hub pages should link down to all their relevant spoke pages.

* Spoke pages should link back up to their parent hub page.

Spoke pages can link horizontally to other highly relevant spoke pages within the same silo* to reinforce topical connections.

  • Homepage Linking: The homepage should link to the most important category/hub pages, as it typically holds the most authority.
  • Related Content Modules: Implement "Related Articles," "You Might Also Like," or "Customers Also Bought" sections to suggest further exploration.
  • Orphan Pages: Regularly audit for pages that have no internal links pointing to them and integrate them into the site's structure.
  • Link Depth: Aim for important content to be no more than 3-4 clicks deep from the homepage to ensure crawlability and perceived importance.

5.2. Anchor Text Best Practices

  • Descriptive: Clearly indicate what the linked page is about.
  • Keyword-Rich: Use relevant keywords, but avoid exact match keyword stuffing. Vary anchor text naturally.
  • Concise: Keep anchor text brief and to the point.
  • Avoid Generic Phrases: Do not use "click here" or "read more."

6. Technical SEO Specifications

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

6.1. Crawlability & Indexability

  • XML Sitemaps:

* Generate

gemini Output

SEO Site Architecture Design: Comprehensive Plan

This document outlines a complete SEO site architecture designed to optimize for search engine crawlability, indexability, user experience, and topical authority. This architecture is suitable for new website builds or major redesigns, ensuring a strong foundation for long-term organic growth.


1. Introduction & Core Philosophy

The primary goal of this SEO site architecture is to create a logical, intuitive, and search-engine-friendly structure that efficiently distributes link equity, establishes topical authority, and enhances user navigation. By organizing content into clear hierarchies and employing strategic internal linking, we aim to improve organic visibility, increase user engagement, and drive conversions.


2. URL Structure Design

A clean, predictable, and keyword-rich URL structure is crucial for both search engines and users.

2.1. Principles:

  • Readability: URLs should be easy to understand and remember.
  • Keyword Inclusion: Incorporate target keywords where natural and relevant.
  • Hierarchy Reflection: URLs should reflect the site's content hierarchy.
  • Conciseness: Avoid overly long or parameter-heavy URLs.
  • Consistency: Maintain a consistent structure across similar content types.
  • Hyphens for Separation: Use hyphens (-) to separate words. Avoid underscores (_).
  • Lowercase: All URLs should be lowercase to prevent duplicate content issues.

2.2. General Structure:

https://www.yourdomain.com/category/subcategory/page-title/

2.3. Specific Examples:

  • Homepage: https://www.yourdomain.com/
  • Main Categories:

* https://www.yourdomain.com/services/

* https://www.yourdomain.com/blog/

* https://www.yourdomain.com/products/

  • Subcategories:

* https://www.yourdomain.com/services/web-design/

* https://www.yourdomain.com/products/electronics/laptops/

  • Individual Service/Product Pages:

* https://www.yourdomain.com/services/web-design/e-commerce-solutions/

* https://www.yourdomain.com/products/electronics/laptops/macbook-pro-14-inch/

  • Blog Posts/Articles:

* https://www.yourdomain.com/blog/seo-best-practices-2024/

* https://www.yourdomain.com/blog/category/content-marketing/how-to-write-compelling-headlines/

  • Static Pages (About Us, Contact, Privacy Policy):

* https://www.yourdomain.com/about-us/

* https://www.yourdomain.com/contact/

2.4. URL Parameters:

  • Minimize the use of dynamic parameters (?id=123&sort=price).
  • Where necessary (e.g., faceted navigation), ensure proper canonicalization to a clean, preferred URL to avoid duplicate content.
  • Utilize Google Search Console's URL Parameter tool if complex parameters are unavoidable.

3. Internal Linking Strategy

A robust internal linking strategy is vital for distributing link equity (PageRank), defining site hierarchy, and guiding users and search engine crawlers through the website.

3.1. Key Principles:

  • Contextual Relevance: Links should be placed within the main content body and be highly relevant to the surrounding text and the target page.
  • Descriptive Anchor Text: Use keyword-rich, descriptive anchor text that accurately reflects the content of the linked page. Avoid generic "click here" or "read more."
  • Hierarchical Linking:

* Parent pages link down to child pages.

* Child pages link up to their parent categories.

* Hub pages link to all their spoke pages.

  • Minimize Link Depth: Aim for important pages to be reachable within 3-4 clicks from the homepage.
  • Avoid Orphan Pages: Every page should have at least one internal link pointing to it.

3.2. Types of Internal Links:

  • Global Navigation:

* Main Menu: Links to primary categories, services, or product lines.

* Footer Navigation: Links to utility pages (contact, privacy, terms), key categories, or resources.

* Sidebar Navigation: (If applicable) Often used for subcategories or related content.

  • Breadcrumbs:

* Provide a clear path back to the homepage for users and indicate hierarchical structure to search engines.

* Example: Home > Category > Subcategory > Current Page

* Implement with Schema.org BreadcrumbList markup.

  • Contextual Links:

* Links embedded within the main body of content (e.g., blog posts, product descriptions, service pages) pointing to related articles, products, or services. These are highly valuable for SEO.

  • Related Content Sections:

* "Related Posts," "You Might Also Like," or "Customers Also Bought" sections. These should be carefully curated for relevance.

  • Sitemap Links:

* An HTML sitemap provides a human-readable list of all important pages, supplementing XML sitemaps for crawlers.

3.3. Anchor Text Best Practices:

  • Vary Anchor Text: Use a variety of relevant anchor texts rather than always using the exact same keyword.
  • Natural Language: Ensure anchor text reads naturally within the sentence.
  • Internal Anchor Text Audit: Regularly review internal anchor text to ensure it's optimized and diverse.

4. Content Silos & Hub-and-Spoke Models

Content silos and hub-and-spoke models are advanced internal linking strategies designed to establish deep topical authority around specific subjects.

4.1. Content Silos:

  • Definition: A content silo is a method of organizing website content into distinct, thematically related groups (silos). Each silo focuses on a specific high-level topic, with all content within that silo supporting and linking only to other content within the same silo.
  • Benefits:

* Topical Authority: Consolidates link equity and relevance around a specific topic, signaling to search engines that the site is an authority in that area.

* Improved Rankings: Enhances the ranking potential for siloed keywords.

* User Experience: Helps users easily navigate and find related information.

  • Implementation:

* Physical Siloing (URL Structure): Using folders in the URL structure (e.g., /services/web-design/, /services/seo/).

* Virtual Siloing (Internal Linking): Achieved purely through internal linking, where pages within a silo only link to other pages in that silo, except for links back to the homepage or main category pages.

  • Inter-Silo Linking:

* Generally, avoid direct links between different silos to maintain their distinct topical focus.

* Exceptions can be made via the homepage or a broad "resources" section, but direct contextual links between silo content pages should be avoided.

4.2. Hub-and-Spoke Model (Pillar Pages & Cluster Content):

  • Definition: A hub-and-spoke model (often referred to as pillar pages and topic clusters) is a specific type of content siloing.

* Hub Page (Pillar Page): A comprehensive, high-level piece of content that broadly covers a core topic. It's usually long-form and provides a general overview without going into deep detail on subtopics.

* Spoke Pages (Cluster Content): Individual, more detailed articles or pages that delve deeper into specific subtopics mentioned in the hub page.

  • Benefits:

* Clear Topical Authority: Establishes the hub page as the central authority for a broad topic.

* Strong Internal Linking: All spoke pages link back to the hub page, and the hub page links out to all spoke pages (and other relevant spokes).

* Improved Search Visibility: When one piece of content in the cluster ranks, the entire cluster benefits.

  • Implementation:

1. Identify Core Topics: Determine 5-10 broad topics your audience is interested in. These will be your Hubs.

2. Create Hub Pages: Develop comprehensive pillar pages for each core topic.

3. Generate Spoke Content: Brainstorm 10-20 specific subtopics for each hub. Create detailed articles (spoke pages) for each.

4. Strategic Linking:

* Spokes to Hub: Every spoke page must link back to its respective hub page using relevant anchor text.

* Hub to Spokes: The hub page should link out to all its spoke pages.

Spoke to Spoke: Relevant spoke pages within the same cluster* can link to each other for deeper dives.

4.3. Conceptual Diagram:


[HOMEPAGE]
    |
    |-----> [MAIN CATEGORY/SILO A (e.g., "Web Design Services")]
    |           |
    |           |-----> [HUB PAGE A1 (e.g., "Complete Guide to Web Design")]
    |           |           |
    |           |           |-----> [SPOKE A1.1 (e.g., "Choosing a CMS")]
    |           |           |-----> [SPOKE A1.2 (e.g., "Responsive Design Principles")]
    |           |           |-----> [SPOKE A1.3 (e.g., "E-commerce Platform Comparison")]
    |           |
    |           |-----> [HUB PAGE A2 (e.g., "Website Maintenance Best Practices")]
    |                       |
    |                       |-----> [SPOKE A2.1 (e.g., "Regular Backups")]
    |                       |-----> [SPOKE A2.2 (e.g., "Security Updates")]
    |
    |-----> [MAIN CATEGORY/SILO B (e.g., "SEO Services")]
                |
                |-----> [HUB PAGE B1 (e.g., "Ultimate SEO Strategy Guide")]
                            |
                            |-----> [SPOKE B1.1 (e.g., "Keyword Research Techniques")]
                            |-----> [SPOKE B1.2 (e.g., "Link Building Tactics")]
                            |-----> [SPOKE B1.3 (e.g., "Technical SEO Audit Checklist")]

5. Technical SEO Specifications

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

5.1. Crawlability & Indexability:

  • Robots.txt:

* Located at yourdomain.com/robots.txt.

Directs search engine bots on which parts of the site they shouldn't* crawl (e.g., admin pages, staging environments, internal search results).

* Include a link to the XML sitemap: Sitemap: https://www.yourdomain.com/sitemap.xml

* Action: Regularly review and update to prevent blocking valuable content or allowing sensitive areas to be crawled.

  • XML Sitemaps:

* List all important URLs on the site that you want search engines to crawl and index.

* Submit to Google Search Console and Bing Webmaster Tools.

* Action: Ensure sitemaps are dynamically updated as content is added/removed.

* Types: sitemap.xml (main), sitemap_images.xml, sitemap_videos.xml, sitemap_news.xml.

  • Meta Robots Tags:

* <meta name="robots" content="index, follow">: Default, allows indexing and following links.

* <meta name="robots" content="noindex, follow">: Prevents indexing but allows bots to follow links on the page. Use for utility pages (e.g., login, internal search results) you don't want in SERPs but still want link equity to pass.

* <meta name="robots" content="index, nofollow">: Allows indexing but prevents bots from following links on the page. Use sparingly.

* <meta name="robots" content="noindex, nofollow">: Prevents indexing and following links. Use for pages you want completely hidden from search engines and don't want to pass any link equity.

* Action: Implement strategically at the page level.

  • Canonical Tags (<link rel="canonical" href="...">):

* Used to specify the preferred version of a page when duplicate or near-duplicate content exists across multiple URLs (e.g., www.example.com/product?color=red vs. www.example.com/product/red).

* Action: Implement self-referencing canonicals on all unique pages to prevent potential duplicate content issues.

  • Hreflang Tags:

* For multilingual/multiregional sites, hreflang tags tell search engines which language/regional version of a page to serve.

* Action: Implement for each language/region variant, including an x-default tag.

5.2. Site Speed & Core Web Vitals:

  • Image Optimization:

* Compress images without losing quality (e.g., using WebP format).

* Specify dimensions (width and height attributes).

* Use lazy loading for images below the fold.

* Action: Implement an image optimization workflow and use responsive images (srcset).

  • Minify CSS, JavaScript, and HTML:

* Remove unnecessary characters (whitespace, comments) from code to reduce file sizes.

* Action: Configure build processes or server settings to minify assets.

  • Leverage Browser Caching:

* Instruct browsers to store static assets (images, CSS, JS) locally, reducing load times for repeat visitors.

* Action: Configure server-side caching headers (e.g., Cache-Control, Expires).

  • Reduce Server Response Time:

* Optimize database queries, server-side code, and choose a reliable hosting provider.

* Action: Monitor TTFB (Time To First Byte) and optimize server performance.

  • Use a Content Delivery Network (CDN):

* Distributes content across multiple servers globally, serving content from the closest server to the user, reducing latency.

* Action: Implement a CDN for static assets.

  • Eliminate Render-Blocking Resources:

*

gemini Output

SEO Site Architecture Design: Comprehensive Strategy

Project: SEO Architect

Deliverable: Complete SEO Site Architecture Design

Date: October 26, 2023


1. Executive Summary

This document outlines a comprehensive SEO site architecture designed to maximize organic visibility, improve user experience, and ensure efficient crawlability and indexability for a new or redesigned website. By implementing a strategic URL structure, robust internal linking, well-defined content silos, and critical technical SEO specifications, this architecture will establish a strong foundation for long-term SEO success. The goal is to create a logical, intuitive, and search-engine-friendly structure that supports topical authority and drives relevant organic traffic.

2. Core Principles of this SEO Architecture

The proposed architecture is built upon the following foundational principles:

  • User-Centricity: Prioritize a logical, intuitive navigation and content flow that enhances user experience.
  • Topical Authority: Organize content into clear silos and hub-and-spoke models to establish expertise and authority around core topics.
  • Crawlability & Indexability: Ensure search engines can easily discover, crawl, and index all important content.
  • Scalability: Design a structure that can easily expand with new content and product offerings without compromising SEO value.
  • Keyword Relevance: Integrate target keywords naturally into URLs, navigation, and content architecture.
  • Performance: Incorporate technical specifications that contribute to fast loading times and optimal Core Web Vitals.

3. Proposed Site Architecture Overview (Conceptual Model)

The architecture will follow a clear hierarchical structure, moving from broad categories to specific subcategories and individual content pieces.

  • Homepage: The central authority, linking to primary content hubs.
  • Primary Categories (Content Hubs): Broad topics, acting as "pillar pages" or "category pages."
  • Subcategories (Spoke Pages/Sub-Hubs): More specific topics, expanding on primary categories.
  • Product Pages/Service Pages/Article Pages (Leaf Nodes): Individual, highly specific content pieces.
  • Supporting Content (Blog, Guides, FAQs): Content that supports and interlinks with core commercial pages.

Example Hierarchy (Outdoor Gear Store):

  • Homepage

* /camping/ (Primary Category Hub)

* /camping/tents/ (Subcategory Hub)

* /camping/tents/2-person-tents/ (Specific Product Category)

* /camping/tents/2-person-tents/product-a-tent/ (Product Page)

* /camping/tents/family-tents/

* /camping/sleeping-bags/

* /camping/cooking-gear/

* /hiking/ (Primary Category Hub)

* /hiking/boots/

* /hiking/backpacks/

* /climbing/

* /blog/

* /blog/best-camping-tents-2023/ (Article)

* /blog/how-to-choose-hiking-boots/ (Guide)

* /about-us/ (Static Page)

* /contact/ (Static Page)

4. URL Structure Design

The URL structure will be clean, descriptive, hierarchical, and keyword-rich to aid both user understanding and search engine interpretation.

4.1. General Principles:

  • HTTPS: All URLs will be served over HTTPS for security and SEO benefits.
  • Lowercase: All URLs will use lowercase characters to prevent duplicate content issues.
  • Hyphens for Separators: Hyphens (-) will be used to separate words in URLs.
  • Descriptive & Concise: URLs should be clear indicators of page content.
  • Keyword Inclusion: Incorporate relevant keywords where natural and appropriate.
  • Static & Permanent: Avoid dynamic parameters where possible; if necessary, ensure they are handled via canonicalization.
  • Trailing Slashes: Consistent use of trailing slashes (e.g., always include or always exclude) across the site, enforced via server configuration. Recommendation: Use trailing slashes for directories, omit for files.

4.2. Specific URL Formats:

  • Homepage: https://www.yourdomain.com/
  • Primary Categories (Content Hubs):

* https://www.yourdomain.com/category-name/

Example:* https://www.yourdomain.com/camping/

  • Subcategories (Spoke Pages/Sub-Hubs):

* https://www.yourdomain.com/category-name/subcategory-name/

Example:* https://www.yourdomain.com/camping/tents/

  • Product/Service Pages:

* https://www.yourdomain.com/category-name/subcategory-name/product-name/

Example:* https://www.yourdomain.com/camping/tents/everest-dome-tent/

Alternative (if subcategory not always needed for product):* https://www.yourdomain.com/products/product-name/ (Less ideal for topical authority, but simpler for very large inventories).

  • Blog Post/Article Pages:

* https://www.yourdomain.com/blog/post-title-keywords/

Example:* https://www.yourdomain.com/blog/best-camping-tents-2023/

Alternative (for very large blogs):* https://www.yourdomain.com/blog/category/post-title-keywords/

  • Static Pages (About Us, Contact, Privacy Policy):

* https://www.yourdomain.com/about-us/

* https://www.yourdomain.com/contact/

* https://www.yourdomain.com/privacy-policy/

4.3. URL Management:

  • Canonicalization: Implement rel="canonical" tags for any pages with identical or very similar content to point to the preferred version, preventing duplicate content issues (e.g., filtered category pages, print versions).
  • 301 Redirects: Implement permanent 301 redirects for any old URLs (in case of a redesign) or changed URLs to preserve link equity and user experience. Avoid redirect chains.

5. Content Siloing & Hub-and-Spoke Model

This strategy groups related content into distinct "silos" to build topical authority and improve internal link flow.

5.1. Content Siloing:

  • Definition: A content silo is a thematic grouping of related web pages, organized to demonstrate deep expertise in a specific subject area. It helps search engines understand the website's structure and the relationships between different pieces of content.
  • Implementation:

* Directory-Based Silos: The primary method, using the URL structure (e.g., /camping/, /hiking/).

* Internal Linking Silos: Reinforcing the directory structure through strategic internal links that keep "link juice" flowing within the silo.

  • Benefits:

* Improved Topical Authority: Signals to search engines that the site is an expert on a specific topic.

* Enhanced Keyword Rankings: Pages within a silo mutually support each other's rankings.

* Better User Experience: Users can easily navigate related content.

5.2. Hub-and-Spoke Model:

  • Definition: A specific type of content siloing where a central "hub" page (pillar content) broadly covers a topic and links out to several "spoke" pages that delve into specific sub-topics in detail. The spoke pages, in turn, link back to the hub page.
  • Implementation:

* Hub Pages: Typically category pages, comprehensive guides, or pillar pages that target broad, high-volume keywords. These pages should be rich in content and provide an overview.

Example Hub:* /camping/ (Covers all aspects of camping)

* Spoke Pages: Detailed articles, subcategory pages, or product pages that target long-tail keywords or specific aspects of the hub topic.

Example Spokes for /camping/:*

* /camping/tents/ (Detailed guide on different tent types)

* /camping/sleeping-bags/ (Comprehensive resource on sleeping bags)

* /blog/best-camping-tents-2023/ (Specific product review)

* /blog/how-to-choose-a-camping-stove/ (Instructional guide)

  • Linking Structure:

* Hub page links to all relevant spoke pages.

* Spoke pages link back to the hub page and other relevant spoke pages within the same silo.

* Use keyword-rich anchor text for all internal links.

6. Internal Linking Strategy

A robust internal linking strategy is crucial for distributing page authority, improving crawlability, and guiding users through the site.

6.1. Principles:

  • Contextual Relevance: Links should be natural and relevant to the surrounding content.
  • Keyword-Rich Anchor Text: Use descriptive, keyword-optimized anchor text (avoid "click here").
  • Hierarchy Reinforcement: Links should reinforce the site's hierarchical structure (e.g., categories linking to subcategories, subcategories linking to products).
  • Crawl Depth Management: Ensure important pages are reachable within 3-4 clicks from the homepage.
  • User Experience (UX): Links should help users find related information easily.

6.2. Types of Internal Links:

  • Main Navigation (Global Navigation):

* Primary categories and key sections (e.g., "Camping," "Hiking," "Blog").

* Should be consistent across all pages.

* Use clear, concise labels.

  • Breadcrumbs:

* Hierarchical navigation usually at the top of a page (e.g., Home > Camping > Tents > 2-Person Tents).

* Crucial for UX and SEO (helps search engines understand hierarchy).

* Implement with Schema Markup (BreadcrumbList).

  • Footer Navigation:

* Links to important but non-primary pages (e.g., About Us, Contact, Privacy Policy, Shipping Info, Return Policy).

* Can also include links to primary categories for convenience.

  • Sidebar/Related Content Widgets:

* "Related Products," "Related Articles," "You Might Also Like" sections.

* Dynamically generated based on content similarity.

  • In-Content (Contextual) Links:

* Most powerful for SEO. Links embedded within the body text of articles, product descriptions, or guides.

* Use natural, keyword-rich anchor text to link to relevant pages within the same silo or related silos.

Example:* "When planning your next camping trip, consider our durable [camping tents](https://www.yourdomain.com/camping/tents/) and lightweight [sleeping bags](https://www.yourdomain.com/camping/sleeping-bags/)."

  • Homepage Links:

* Strategic links from the homepage to the most important category pages, pillar content, and new/featured products.

6.3. Link Depth and Pagerank Distribution:

  • Prioritize linking to high-value, high-converting pages from pages with strong authority.
  • Ensure all crawlable pages are accessible within a reasonable number of clicks from the homepage (ideally 3-4 clicks for most important content).
  • Regularly audit internal links for broken links or inefficient link equity distribution.

7. Technical SEO Specifications

Robust technical SEO ensures the site is fully optimized for search engine crawling, indexing, and ranking.

7.1. Crawlability & Indexability:

  • Robots.txt: Configure robots.txt to guide search engine crawlers, blocking irrelevant or low-value pages (e.g., admin areas, internal search results, duplicate content filters) while allowing access to all important content.
  • XML Sitemaps: Generate and submit comprehensive XML sitemaps to Google Search Console (and other search engines).

* Include all canonical, indexable URLs.

* Separate sitemaps by content type (e.g., sitemap_products.xml, sitemap_blog.xml) for very large sites.

* Automatically update sitemaps as content changes.

  • Meta Robots Tags: Use meta name="robots" tags (e.g., noindex, follow) for specific pages that should not be indexed but whose links should still be followed (e.g., pagination pages, internal search results).
  • URL Parameters: Use Google Search Console's URL Parameter tool to inform Google how to handle dynamic parameters, or implement canonical tags to consolidate signals.

7.2. Site Speed & Performance (Core Web Vitals):

  • Optimized Hosting: Choose a fast, reliable hosting provider.
  • Image Optimization:

* Compress images without losing quality (lossless compression).

* Use modern image formats (WebP).

* Implement lazy loading for images below the fold.

* Specify image dimensions (width and height) to prevent Cumulative Layout Shift (CLS).

  • Browser Caching: Leverage browser caching to store static resources, reducing load times for returning visitors.
  • Content Delivery Network (CDN): Implement a CDN to serve content from geographically closer servers, reducing latency.
  • Minification: Minify CSS, JavaScript, and HTML files to reduce file sizes.
  • Server Response Time: Optimize server-side processes to reduce Time to First Byte (TTFB).
  • Render-Blocking Resources: Eliminate or defer render-blocking JavaScript and CSS.
  • Mobile Responsiveness: Ensure the site is fully responsive and provides an excellent experience on all devices, crucial for mobile-first indexing.

7.3. Structured Data (Schema Markup):

  • Implement relevant Schema.org markup to enhance search engine understanding and enable rich results.

* Organization/LocalBusiness: For company information.

* Product: For product pages (price, availability, reviews).

* Article: For blog posts and guides.

* BreadcrumbList: For navigation breadcrumbs.

* FAQPage: For FAQ sections.

* Review/AggregateRating: For user reviews.

  • Test structured data using Google's Rich Results Test tool.

7.4. Security (HTTPS):

  • Enforce HTTPS across the entire website using an SSL certificate. All traffic should redirect from HTTP to HTTPS.

7.5. Duplicate Content Management:

  • Canonical Tags: As mentioned in URL structure, use rel="canonical" to specify the preferred version of a page.
  • 301 Redirects: Permanently redirect old or deprecated URLs, or pages consolidated into new ones.
  • Noindex Tags: Use noindex for truly duplicate or unimportant pages that don't need to be in the index.

7.6. International SEO (If Applicable):

  • Hreflang Tags: If the site targets multiple languages or regions, implement `hrefl
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);}});}