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

Design a complete SEO site architecture including URL structure, internal linking strategy, content silos, hub-and-spoke models, and technical SEO specifications. Perfect for new sites or major redesigns.

Project Title: SEO Site Architecture Design for OutdoorGearPro.com

Workflow Step: 1 of 3 (SEO Architect - Design Generation)

Date: October 26, 2023


1. Executive Summary

This document outlines a comprehensive SEO site architecture design for OutdoorGearPro.com, a hypothetical e-commerce platform specializing in outdoor equipment. The proposed architecture aims to maximize search engine crawlability, indexability, and relevance, thereby improving organic visibility and user experience. It encompasses a logical URL structure, a robust internal linking strategy, clearly defined content silos using a hub-and-spoke model, and critical technical SEO specifications. This design is built for scalability, ensuring the site can grow and adapt to future content and product expansions while maintaining strong SEO performance.

2. Foundational Principles of SEO Architecture

The design of OutdoorGearPro.com's SEO architecture is guided by the following core principles:

  • User Experience (UX) First: A logical, intuitive structure benefits both users and search engines. Easy navigation leads to higher engagement and lower bounce rates.
  • Crawlability & Indexability: Ensuring search engine bots can easily discover, crawl, and index all important pages.
  • Keyword Relevance & Thematic Authority: Grouping related content to build topical authority around core keywords, improving rankings for competitive terms.
  • Scalability: Designing a structure that can easily accommodate future growth in products, categories, and content without requiring a complete overhaul.
  • Efficiency: Minimizing duplicate content, optimizing page load times, and ensuring efficient resource allocation for crawling.
  • Mobile-First: Prioritizing a responsive design and fast mobile experience given Google's mobile-first indexing.

3. URL Structure Design

A clean, logical, and descriptive URL structure is crucial for both user experience and SEO.

3.1. General Principles

  • Readability: URLs should be easy for users to understand and remember.
  • Descriptive: Clearly indicate the content of the page.
  • Keyword-Rich: Include relevant keywords naturally, avoiding keyword stuffing.
  • Consistent: Maintain a uniform structure across the entire site.
  • Hyphens for Separators: Use hyphens (-) to separate words.
  • Lowercase: All URLs should be lowercase to avoid duplicate content issues.
  • Concise: Keep URLs as short as possible while remaining descriptive.
  • Avoid Dynamic Parameters (where possible): Prefer static, clean URLs. If parameters are unavoidable (e.g., for filters), ensure proper canonicalization.

3.2. Hierarchical Structure Examples

The URL structure will reflect the site's content hierarchy, moving from broad categories to specific products or articles.

  • Homepage: https://www.outdoorgearpro.com/
  • Primary Category Page (Silo Hub):

* https://www.outdoorgearpro.com/camping/

* https://www.outdoorgearpro.com/hiking/

* https://www.outdoorgearpro.com/climbing/

* https://www.outdoorgearpro.com/water-sports/

  • Sub-Category Page (Silo Spoke):

* https://www.outdoorgearpro.com/camping/tents/

* https://www.outdoorgearpro.com/hiking/backpacks/

* https://www.outdoorgearpro.com/climbing/harnesses/

  • Product Page:

* https://www.outdoorgearpro.com/camping/tents/brand-model-ultralight-2p-tent/

* https://www.outdoorgearpro.com/hiking/backpacks/brand-model-daypack-30l/

  • Blog Category Page:

* https://www.outdoorgearpro.com/blog/camping-guides/

  • Blog Post Page:

* https://www.outdoorgearpro.com/blog/camping-guides/how-to-choose-a-camping-tent/

* https://www.outdoorgearpro.com/blog/best-hiking-boots-2024/

  • Static Pages:

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

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

3.3. URL Handling for Variations & Filters

  • Canonicalization: Implement rel="canonical" tags for all pages to point to the preferred version, especially for filtered results, sorted listings, and product variations (e.g., color, size) that might generate unique URLs but essentially show the same core content.

* Example: https://www.outdoorgearpro.com/camping/tents/?color=blue should canonicalize to https://www.outdoorgearpro.com/camping/tents/.

  • Parameter Management: Utilize Google Search Console's URL Parameters tool to instruct Google on how to handle specific parameters (e.g., sort, filter, page). For most e-commerce filtering parameters, it's best to set them as "No URLs" or "Crawl no URLs" if they don't significantly change content.

4. Content Silo & Hub-and-Spoke Model Strategy

Content silos and the hub-and-spoke model are critical for establishing thematic authority, improving keyword rankings, and enhancing user navigation.

4.1. Concept Explanation

  • Content Silo: A method of organizing website content into distinct, thematically related groups. This signals to search engines the site's expertise in specific topics, improving rankings for long-tail keywords and broad category terms. Each silo should have minimal cross-linking to other silos to maintain thematic purity.
  • Hub-and-Spoke Model: Within each silo, a "hub" page acts as the central authority for a broad topic. It links out to multiple "spoke" pages, which delve into more specific sub-topics or products. The spoke pages, in turn, link back to the hub page, reinforcing its authority.

4.2. Primary Silos (Top-Level Categories)

Based on the "Outdoor Gear" theme, the primary silos will be:

  1. Camping: Tents, sleeping bags, cookware, lanterns, furniture.
  2. Hiking: Backpacks, boots, trekking poles, navigation, apparel.
  3. Climbing: Ropes, harnesses, helmets, shoes, protection.
  4. Water Sports: Kayaks, paddleboards, life vests, dry bags, swimwear.
  5. Apparel: Jackets, pants, base layers, hats, gloves (cross-category, but a distinct product type).
  6. Accessories: Headlamps, multi-tools, first aid, hydration (cross-category utility items).
  7. Blog/Guides: Educational content, reviews, how-tos.

4.3. Silo Structure & Content Examples (Camping Silo Example)

Silo: Camping

  • Hub Page: https://www.outdoorgearpro.com/camping/

* Content: This page will be a comprehensive, high-quality resource covering "Everything for Camping." It will include an introduction to camping, benefits, different types of camping, and an overview of essential gear.

* Internal Links (Outbound): Links to all sub-category spoke pages within the Camping silo (e.g., Tents, Sleeping Bags, Cookware) and relevant blog posts.

* Internal Links (Inbound): All spoke pages within the Camping silo will link back to this hub page.

  • Spoke Pages (Sub-Categories - Product Listings):

* https://www.outdoorgearpro.com/camping/tents/ (Focus: Tents)

* https://www.outdoorgearpro.com/camping/sleeping-bags/ (Focus: Sleeping Bags)

* https://www.outdoorgearpro.com/camping/cookware/ (Focus: Cookware)

* Content: Each sub-category page will feature product listings, filter options, and a unique, SEO-optimized description explaining the category, its importance, and what to look for when buying.

* Internal Links: Links to individual product pages within that sub-category, back to the "Camping" hub page, and relevant blog posts (e.g., from camping/tents/ to blog/camping-guides/how-to-choose-a-camping-tent/).

  • Spoke Pages (Individual Products):

* https://www.outdoorgearpro.com/camping/tents/brand-model-ultralight-2p-tent/

* Content: Detailed product descriptions, specifications, images, reviews, pricing, and calls to action.

* Internal Links: Links back to its parent sub-category (camping/tents/), related products, and potentially relevant blog posts (e.g., a tent product page linking to "5 Best Ultralight Tents" blog post).

  • Spoke Pages (Blog Posts/Guides - within Blog Silo, but linked from product/category silos):

* https://www.outdoorgearpro.com/blog/camping-guides/how-to-choose-a-camping-tent/

* https://www.outdoorgearpro.com/blog/camping-guides/best-camping-cookware-sets/

* Content: In-depth guides, comparisons, reviews, and informational articles.

* Internal Links: Links to relevant product pages, sub-category pages, and the main "Camping" hub page. These blog posts also link to each other within the "Camping Guides" blog silo.

4.4. Inter-Silo Linking

Cross-silo linking should be minimal and purposeful. For example, a "Best Backpacking Tents" blog post (part of the Camping silo conceptually, but stored in the Blog silo) might link to a specific backpack from the Hiking silo if it's highly relevant to backpacking. The primary navigation and footer are natural places for inter-silo links.

5. Internal Linking Strategy

A well-executed internal linking strategy distributes PageRank, improves crawlability, and enhances user navigation, ultimately boosting SEO performance.

5.1. Key Components

  • Global Navigation (Header & Footer):

* Main Menu (Header): Top-level categories (Camping, Hiking, Climbing, Water Sports, Apparel, Accessories, Blog) will be prominently featured. This ensures high PageRank distribution to the main silo hubs.

* Footer Navigation: Include links to important

gemini Output

SEO Site Architecture Design: Comprehensive Strategy

This document outlines a robust SEO site architecture designed to optimize your website for search engine visibility, enhance user experience, and establish strong topical authority. A well-planned architecture is the foundation for long-term SEO success, guiding both search engine crawlers and human visitors through your content efficiently.


1. URL Structure Design

A clean, logical, and descriptive URL structure is paramount for SEO and user experience. It provides clear signals to search engines about page content and helps users understand where they are on your site.

1.1. Core Principles:

  • Descriptive & Keyword-Rich: URLs should clearly indicate the page's content and ideally include target keywords where natural.
  • Simple & Readable: Easy for humans to understand and remember. Avoid long strings of numbers or irrelevant characters.
  • Consistent: Maintain a uniform structure across similar content types (e.g., all blog posts follow the same pattern).
  • Hierarchical: Reflect the logical organization of your site, showing relationships between parent and child pages.
  • Static: Prefer static URLs over dynamic ones with multiple parameters (e.g., ?id=123&category=abc).
  • Canonicalization: For pages with very similar content or multiple URLs leading to the same content, implement canonical tags to designate the preferred version.

1.2. Best Practices:

  • Use Hyphens (-): Separate words with hyphens for readability and search engine parsing (e.g., my-product-name). Avoid underscores (_).
  • Lowercase Only: All URLs should be lowercase to prevent duplicate content issues (e.g., /Product vs /product).
  • Avoid Stop Words: Omit common words like "a," "the," "and," "of" unless essential for clarity or meaning.
  • Keep Concise: Shorter, meaningful URLs are generally preferred.
  • Trailing Slashes: Be consistent. Decide whether to use trailing slashes (e.g., /page/) or not (e.g., /page) and implement 301 redirects for the non-preferred version.

1.3. Recommended URL Patterns (Examples):

  • Homepage: https://www.yourdomain.com/
  • Main Category Page: https://www.yourdomain.com/category-name/
  • Sub-Category Page: https://www.yourdomain.com/category-name/sub-category-name/
  • Product/Service Page: https://www.yourdomain.com/category-name/sub-category-name/product-service-name/
  • Blog Homepage: https://www.yourdomain.com/blog/
  • Blog Post: https://www.yourdomain.com/blog/topic-name/article-title/
  • Static Page (e.g., About Us): https://www.yourdomain.com/about-us/

2. Internal Linking Strategy

A robust internal linking strategy is crucial for distributing "link equity" (PageRank), improving crawlability, establishing topical relevance, and enhancing user navigation.

2.1. Purpose:

  • Distribute Link Equity: Pass authority from stronger pages (e.g., homepage) to deeper, important pages.
  • Improve Crawlability: Help search engine bots discover and index all relevant pages on your site.
  • Enhance User Navigation: Guide users to related and useful content, improving engagement and time on site.
  • Signal Content Hierarchy & Relevance: Reinforce the relationship between different pieces of content and their importance.

2.2. Key Principles:

  • Contextual Links: Embed links naturally within the body content of pages, pointing to other relevant pages. These are highly valuable.
  • Navigational Links: Utilize global navigation (main menu), breadcrumbs, and footer links for consistent site-wide access.
  • Hierarchical Links: Link from parent pages to child pages, and from child pages back up to their parent.
  • Descriptive Anchor Text: Use clear, keyword-rich (but natural) anchor text that accurately describes the destination page's content. Avoid generic "click here."
  • Depth: Aim to keep all important pages within 3-4 clicks from the homepage to ensure they are easily discoverable by crawlers and users.
  • Relevance: Only link to pages that are genuinely relevant and add value to the user experience.

2.3. Types of Internal Links:

  • Global Navigation: Main menu, sidebar menus – typically links to primary categories and top-level pages.
  • Footer Navigation: Links to essential but less frequently accessed pages (e.g., privacy policy, contact, sitemap, general categories).
  • Breadcrumbs: Provide a clear path back to higher-level categories, improving navigation and showing site structure.
  • In-Content (Contextual) Links: Links embedded within the main body of text, pointing to related articles, products, or services.
  • Related Posts/Products: Modules that suggest relevant content at the end of articles or on product pages.
  • Category/Tag Pages: Serve as hubs, linking to all content within that specific category or tag.

3. Content Silos

Content siloing is a method of grouping related content into distinct, thematically strong sections on your website. This strategy helps establish topical authority and makes it easier for search engines to understand the primary focus of different parts of your site.

3.1. Definition:

A content silo is a logical grouping of interlinked pages that focus on a specific, narrow topic. By strictly linking within these groups and limiting cross-silo links, you concentrate link equity and relevance signals for particular subjects.

3.2. Benefits:

  • Stronger Topical Relevance: Clearly signals to search engines what your site is an authority on.
  • Improved Search Engine Understanding: Helps crawlers categorize and rank your content more effectively.
  • Better Link Equity Flow: Concentrates PageRank within relevant topic clusters, boosting the authority of key pages.
  • Enhanced User Experience: Organizes content logically, making it easier for users to find comprehensive information on a topic.

3.3. Implementation Methods:

  • Physical Siloing (Directory Structure): The strongest method, where the URL structure directly reflects the silo.

* Example:

* www.yourdomain.com/digital-marketing/ (Silo Hub)

* www.yourdomain.com/digital-marketing/seo/ (Sub-silo/Spoke)

* www.yourdomain.com/digital-marketing/ppc/ (Sub-silo/Spoke)

  • Virtual Siloing (Internal Linking): Achieved through strategic internal linking, even if the URL structure isn't strictly siloed. This is less powerful than physical siloing but still effective.

3.4. Structure:

  • Silo Hub Page (Pillar Content): A comprehensive, high-level overview page for the main topic of the silo. This page should be highly authoritative and link to all the supporting pages within its silo.
  • Supporting Pages (Spokes): Detailed articles, guides, product pages, or service pages that delve into specific sub-topics related to the silo hub. These pages should link back up to the silo hub page and can link to other relevant pages within the same silo.
  • Limited Cross-Silo Linking: Avoid linking directly between pages in different silos unless absolutely necessary and highly relevant. If a cross-silo link is vital, ensure it's a natural, contextual link and not a systematic navigation pattern.

4. Hub-and-Spoke Models (Pillar Content Strategy)

The Hub-and-Spoke model is a specific, highly effective application of content siloing, focusing on creating comprehensive topical authority around core subjects.

4.1. Definition:

A Hub-and-Spoke model consists of a central, comprehensive "hub" page (often called a "pillar page") that broadly covers a significant topic. This hub page then links out to multiple "spoke" pages, which are more detailed articles or resources that delve into specific sub-topics related to the main hub. The spoke pages, in turn, link back to the hub page.

4.2. Benefits:

  • Establishes Clear Topical Authority: Signals to search engines that your site is a definitive resource for a particular subject.
  • Improves Search Engine Understanding: Helps search engines understand the relationships between your content pieces.
  • Boosts Ranking Potential: Concentrates link equity to the hub page, improving its chances of ranking for broad keywords, while spokes rank for long-tail variations.
  • Organizes Content for Users: Provides a clear, navigable path for users to explore a topic in depth.

4.3. Structure:

  • Hub Page (Pillar Content):

* Content: Long-form, evergreen content that provides a high-level overview of a broad topic. It should be comprehensive enough to answer basic questions but not go into excessive detail on every sub-topic.

* Keywords: Targets broad, head-term keywords (e.g., "Content Marketing Strategy").

* Linking: Links out to all its related spoke pages. Should ideally be free of external links (or very few).

  • Spoke Pages (Cluster Content):

* Content: Detailed articles, guides, studies, or case studies that explore specific sub-topics introduced in the hub page.

* Keywords: Targets long-tail keywords and specific questions related to the hub topic (e.g., "How to create a content calendar," "Measuring content marketing ROI").

Linking: Each spoke page must* link back to its parent hub page using relevant anchor text. Spoke pages within the same hub can link to each other if relevant.

4.4. Example:

  • Hub Page: https://www.yourdomain.com/digital-marketing-guide/ (Comprehensive guide to digital marketing)
  • Spoke Pages:

* https://www.yourdomain.com/digital-marketing-guide/seo-basics/ (Details on SEO)

* https://www.yourdomain.com/digital-marketing-guide/ppc-campaigns/ (Details on PPC)

* https://www.yourdomain.com/digital-marketing-guide/social-media-strategy/ (Details on social media)

* https://www.yourdomain.com/digital-marketing-guide/email-marketing-tips/ (Details on email marketing)


5. Technical SEO Specifications

A sound technical foundation ensures that search engines can efficiently crawl, index, and understand your website's content.

5.1. Crawlability & Indexability:

  • Robots.txt: A file that instructs search engine crawlers which parts of your site they can or cannot access. Use it to block irrelevant or low-value pages (e.g., internal search results, admin pages).
  • XML Sitemaps: A list of all important URLs on your site that you want search engines to crawl and index. Submit these to Google Search Console and Bing Webmaster Tools. Ensure they are kept up-to-date.
  • Canonical Tags (<link rel="canonical">): Essential for preventing duplicate content issues. Use canonical tags to specify the preferred URL when multiple URLs lead to the same or very similar content (e.g., product pages with different sorting parameters).
  • Noindex Tags (<meta name="robots" content="noindex">): Use this meta tag on pages you do not want search engines to index (e.g., thank you pages, internal policy documents, low-value category filters).
  • **Nofollow Attributes (rel="nofollow"):
gemini Output

SEO Site Architecture Design: Comprehensive Plan

This document outlines a comprehensive SEO site architecture design, encompassing URL structure, internal linking strategy, content siloing, hub-and-spoke models, and critical technical SEO specifications. This architecture is designed to maximize search engine crawlability, indexability, user experience, and ultimately, organic search performance for your new site or major redesign.


1. Executive Summary

A robust SEO site architecture is the foundational blueprint for a high-performing website in organic search. It dictates how search engines discover, understand, and rank your content, while simultaneously guiding users through a logical and intuitive journey. This plan provides a detailed framework for structuring your site to achieve superior topical authority, improved crawl efficiency, enhanced user engagement, and strong keyword rankings. By implementing these strategies, your website will be optimized for both current and future search algorithm demands.


2. Core Principles of SEO Architecture

Our design adheres to the following core principles:

  • User-Centricity: The architecture must be intuitive and easy for users to navigate.
  • Logical Hierarchy: Content should be organized in a clear, parent-child relationship.
  • Topical Authority: Grouping related content to establish expertise in specific areas.
  • Crawlability & Indexability: Ensuring search engines can easily find, crawl, and understand all important pages.
  • Scalability: The architecture must be flexible enough to accommodate future content growth without requiring a complete overhaul.
  • Efficiency: Minimizing "crawl budget" waste and ensuring important pages receive adequate attention.

3. URL Structure Design

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

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

3.1. Key Specifications:

  • Hierarchy: URLs should reflect the site's content hierarchy.

* Example: yourdomain.com/products/electronics/laptops/gaming-laptop-model-x/

  • Keyword Inclusion: Incorporate target keywords naturally in URLs. Avoid keyword stuffing.

* Good: yourdomain.com/blog/seo-best-practices/

* Bad: yourdomain.com/blog/seo-best-practices-seo-guide-seo-tips-2023/

  • Readability & Conciseness: Keep URLs as short and human-readable as possible.

* Use hyphens (-) to separate words.

* Avoid underscores (_), spaces, or special characters.

* Use lowercase letters only.

  • Static URLs: Avoid dynamic parameters where possible (?id=123). If necessary, ensure they are handled gracefully (e.g., canonicalization).
  • Trailing Slashes: Standardize on one format (e.g., always include trailing slashes or always omit them) and enforce with redirects if necessary to prevent duplicate content issues.

* Recommended: yourdomain.com/category/page/ (with trailing slash for directories)

* Recommended: yourdomain.com/page-name (without trailing slash for individual pages, if preferred and consistent)

  • Canonicalization: Implement canonical tags to designate the preferred version of a URL if multiple URLs point to the same or very similar content (e.g., www vs non-www, http vs https, URL parameters).

3.2. Actionable Steps:

  1. Map out your primary content categories and subcategories.
  2. Assign clear, descriptive slugs for each.
  3. Develop a URL generation rule for your CMS that adheres to these specifications.
  4. Conduct a URL audit post-implementation to ensure consistency.

4. Content Siloing Strategy

Content siloing is the practice of grouping related web pages into distinct categories or "silos" to establish clear topical relevance and authority for search engines.

  • Principle: Organize content into distinct, thematically unified sections.

4.1. Silo Types:

  • Directory-Based Silos (Physical Silos): The strongest form, where the URL structure directly reflects the silo.

* Example:

* /gardening/ (Main Silo Page - Hub)

* /gardening/vegetable-gardening/ (Sub-Silo Page)

* /gardening/vegetable-gardening/tomato-care/ (Spoke Page)

* /gardening/vegetable-gardening/pepper-growing-guide/ (Spoke Page)

* /gardening/flower-gardening/ (Sub-Silo Page)

* /gardening/flower-gardening/rose-pruning/ (Spoke Page)

  • Virtual Silos: Achieved purely through internal linking, without explicit directory structure in URLs. Less powerful than physical silos but useful for existing sites or complex cross-category content.

4.2. Benefits:

  • Topical Authority: Search engines understand your expertise in specific areas.
  • Improved Relevance: Pages within a silo reinforce each other's relevance for target keywords.
  • Enhanced Crawlability: Search engines can easily discover and index related content.
  • Better User Experience: Users can find related information more easily.

4.3. Actionable Steps:

  1. Identify Core Topics: Determine your primary business areas and the main topics you want to rank for.
  2. Group Content: Cluster all existing and planned content under these core topics.
  3. Design Silo Structure: Create a hierarchical structure (e.g., 3-5 main silos, each with 3-5 sub-silos).
  4. Implement Physical Silos: Configure your CMS to generate URLs that reflect this structure.
  5. Strict Internal Linking: Primarily link within a silo. Cross-silo linking should be done sparingly and strategically (e.g., from a hub page to another hub page, or very relevant spokes).

5. Internal Linking Strategy

Internal links are hyperlinks that point to other pages on the same domain. They are crucial for SEO, guiding both users and search engine crawlers.

  • Principle: Distribute PageRank, establish topical relevance, and enhance user navigation.

5.1. Key Components:

  • Navigational Links:

* Main Navigation: Primary menu items should link to your most important category/silo hub pages.

* Breadcrumbs: Implement breadcrumbs on all pages to show the user's location within the site hierarchy. These provide clear contextual links back to parent categories.

* Example: Home > Category > Subcategory > Current Page

* Footer Navigation: Can include links to less critical but still important pages (e.g., About Us, Contact, Privacy Policy, key service pages).

  • Contextual Links (In-Content Links):

* Links placed within the body of content (articles, product descriptions, service pages) that point to other relevant pages on your site.

* These are the most powerful for SEO as they pass topical relevance and PageRank.

* Best Practice: Link from higher-authority pages to lower-authority pages you want to boost.

  • Hub-and-Spoke Linking: See Section 6.
  • Related Content Widgets: Implement "Related Posts," "You Might Also Like," or "Customers Also Bought" sections. Ensure these are contextually relevant.

5.2. Anchor Text Best Practices:

  • Descriptive & Keyword-Rich: Anchor text should accurately describe the content of the linked page and ideally include target keywords.

* Good: "Learn more about our [organic gardening techniques](yourdomain.com/gardening/organic-techniques/)."

* Bad: "Click here" or "Read more."

  • Vary Anchor Text: Avoid using the exact same anchor text repeatedly for the same destination page. Use natural variations and synonyms.
  • Avoid Over-Optimization: Don't stuff anchor text with keywords. Keep it natural and user-friendly.

5.3. Link Depth Optimization:

  • Importance: Critical pages should be reachable within 2-3 clicks from the homepage. Deeper pages receive less PageRank and are harder for crawlers to find.
  • Actionable Step: Regularly audit your site to identify "orphan pages" (pages with no internal links) and pages that are too deep.

5.4. Actionable Steps:

  1. Develop a Linking Matrix: Map out how different silos and hub pages will link to each other.
  2. Train Content Creators: Educate anyone creating content on internal linking best practices.
  3. Automate Breadcrumbs: Ensure your CMS automatically generates breadcrumbs based on page hierarchy.
  4. Implement Related Content: Utilize plugins or custom development for relevant "related content" suggestions.
  5. Regular Audits: Use tools (e.g., Screaming Frog, Ahrefs, SEMrush) to identify broken links, orphan pages, and evaluate link distribution.

6. Hub-and-Spoke Model Implementation

The Hub-and-Spoke model is an advanced content siloing and internal linking strategy that clearly defines central "hub" pages and supporting "spoke" pages.

  • Principle: Establish a central, authoritative hub page for a broad topic, supported by detailed spoke pages that delve into specific sub-topics.

6.1. Definitions:

  • Hub Page (Pillar Page): A comprehensive, high-level page that covers a broad topic in detail. It's often a category page, a long-form guide, or a main service page. It links out to all related spoke pages.
  • Spoke Page (Cluster Content): More specific, in-depth articles or pages that elaborate on a sub-topic introduced on the hub page. Spoke pages link back to the hub page.

6.2. Benefits:

  • Strong Topical Authority: Clearly signals to search engines that your site is an authority on the overarching topic.
  • Improved Keyword Rankings: Hub pages can rank for broad, high-volume keywords, while spoke pages capture long-tail keywords.
  • Enhanced User Experience: Users can easily navigate between general overviews and specific details.
  • Efficient PageRank Distribution: PageRank flows effectively from the hub to spokes and back, strengthening all related pages.

6.3. Linking Patterns:

  1. Hub to Spokes: The hub page links out to all its supporting spoke pages using descriptive anchor text.
  2. Spokes to Hub: Each spoke page links back to its parent hub page, typically with a clear "back to [Hub Topic]" or "learn more about [Hub Topic]" anchor.
  3. Spokes to Spokes (Optional/Strategic): Spoke pages can link to other highly relevant spoke pages within the same cluster if it adds value and context, but the primary focus is on linking to and from the hub.

6.4. Example: "Sustainable Living" Hub

  • Hub Page: /sustainable-living/ (Comprehensive guide to sustainable living)

Links to:*

* /sustainable-living/zero-waste-kitchen/ (Spoke)

* /sustainable-living/eco-friendly-transportation/ (Spoke)

* /sustainable-living/renewable-energy-at-home/ (Spoke)

* /sustainable-living/composting-guide/ (Spoke)

  • Spoke Page Example: /sustainable-living/zero-waste-kitchen/

Content:* Detailed guide on reducing waste in the kitchen.

Internal Link:* "For a complete guide to sustainable practices, visit our [Sustainable Living Hub](yourdomain.com/sustainable-living/)." (Links back to hub)

Internal Link (optional, within silo):* "Pair your zero-waste efforts with our [composting guide](yourdomain.com/sustainable-living/composting-guide/)." (Links to another spoke in the same silo)

6.5. Actionable Steps:

  1. Identify Hub Topics: Based on your core product/service offerings and primary keywords.
  2. Map Spoke Content: Brainstorm all related sub-topics that can be developed into detailed spoke pages for each hub.
  3. Create Hub Content: Develop comprehensive, high-quality hub pages.
  4. Create Spoke Content: Write detailed, focused spoke articles/pages.
  5. Implement Linking: Ensure all hub-to-spoke and spoke-to-hub links are in place with relevant anchor text.

7. Technical SEO Specifications

Robust technical SEO ensures that search engines can efficiently crawl, index, and render your website, forming the bedrock of all other SEO efforts.

7.1. Crawlability & Indexability:

  • Robots.txt:

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

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

* Action: Disallow crawling of non-essential pages (e.g., admin areas, internal search results, duplicate content, staging sites). Include a link to your XML sitemap.

  • XML Sitemaps:

* Purpose: Provides search engines with a list of all important pages on your site, helping them discover and prioritize content.

* Specification: sitemap.xml (or multiple sitemaps linked from a sitemap index).

* Action: Generate an XML sitemap that includes only canonical, indexable URLs. Update it automatically when new content is added or removed. Submit to Google Search Console and Bing Webmaster Tools.

  • Meta Robots Tags:

* Purpose: Page-level instructions to search engines for crawling and indexing.

* Specification: <meta name="robots" content="noindex, follow"> or <meta name="robots" content="index, nofollow">.

* Action: Use noindex for pages you don't want in search results (e.g., thank you pages, internal policy documents). Use nofollow on specific links if you don't want to pass PageRank (generally not recommended for internal links). Default should be index, follow.

  • Canonical Tags (rel="canonical"):

* Purpose: Specifies the preferred version of a page when duplicate or near-duplicate content exists.

* Specification: <link rel="canonical" href="https://www.yourdomain.com/preferred-url/" />.

* Action: Implement canonical tags on all pages, pointing to their self-referencing canonical URL. Crucial for handling URL parameters, print versions, or syndicated content.

  • Hreflang Tags:

* Purpose: Informs search engines about pages with identical content but targeting different languages or geographical regions.

* Specification: `<link rel="alternate

seo_architect.md
Download as Markdown
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);}});}