Skip to content

Commit 618d9e9

Browse files
author
TechStack Global
committed
Fix: Site-wide branding synchronization and sitemap fetch optimization (GSD+HERALD)
1 parent 35ca73a commit 618d9e9

File tree

53 files changed

+425
-342
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+425
-342
lines changed

about.html

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,14 +45,14 @@
4545
"@type": "Organization",
4646
"name": "TechStack Global",
4747
"url": "https://techstackglobal.github.io/",
48-
"logo": "https://techstackglobal.github.io/favicon-32x32.png"
48+
"logo": "https://techstackglobal.github.io/apple-touch-icon.png"
4949
}
5050
</script>
5151
<!-- Site Favicons -->
52-
<link href="/favicon.ico" rel="icon"/>
53-
<link href="/favicon-32x32.png" rel="icon" sizes="32x32" type="image/png"/>
54-
<link href="/favicon-16x16.png" rel="icon" sizes="16x16" type="image/png"/>
55-
<link href="/apple-touch-icon.png" rel="apple-touch-icon" sizes="180x180"/>
52+
<link href="/favicon.ico?v=2" rel="icon"/>
53+
<link href="/favicon-32x32.png?v=2" rel="icon" sizes="32x32" type="image/png"/>
54+
<link href="/favicon-16x16.png?v=2" rel="icon" sizes="16x16" type="image/png"/>
55+
<link href="/apple-touch-icon.png?v=2" rel="apple-touch-icon" sizes="180x180"/>
5656
<link href="https://techstackglobal.github.io/about.html" rel="canonical"/><meta content="summary_large_image" name="twitter:card"/><meta content="About TechStack Global | Our B2B Tech Vetting Methodology" name="twitter:title"/><meta content="Transparency and technical rigor in every review." name="twitter:description"/><meta content="https://techstackglobal.github.io/assets/images/og-about.jpg" name="twitter:image"/></head>
5757
<body class="dark-theme">
5858
<div class="ambient-grid"></div>

affiliate-disclosure.html

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,14 @@
4040
"@type": "Organization",
4141
"name": "TechStack Global",
4242
"url": "https://techstackglobal.github.io/",
43-
"logo": "https://techstackglobal.github.io/favicon-32x32.png"
43+
"logo": "https://techstackglobal.github.io/apple-touch-icon.png"
4444
}
4545
</script>
4646
<!-- Site Favicons -->
47-
<link href="/favicon.ico" rel="icon"/>
48-
<link href="/favicon-32x32.png" rel="icon" sizes="32x32" type="image/png"/>
49-
<link href="/favicon-16x16.png" rel="icon" sizes="16x16" type="image/png"/>
50-
<link href="/apple-touch-icon.png" rel="apple-touch-icon" sizes="180x180"/>
47+
<link href="/favicon.ico?v=2" rel="icon"/>
48+
<link href="/favicon-32x32.png?v=2" rel="icon" sizes="32x32" type="image/png"/>
49+
<link href="/favicon-16x16.png?v=2" rel="icon" sizes="16x16" type="image/png"/>
50+
<link href="/apple-touch-icon.png?v=2" rel="apple-touch-icon" sizes="180x180"/>
5151
<link href="https://techstackglobal.github.io/affiliate-disclosure.html" rel="canonical"/><meta content="summary_large_image" name="twitter:card"/><meta content="Affiliate Disclosure | TechStack Global" name="twitter:title"/><meta content="Read the TechStack Global affiliate disclosure policy to understand how we fund our independent research and hardware reviews." name="twitter:description"/><meta content="https://techstackglobal.github.io/og-image.jpg" name="twitter:image"/></head>
5252
<body class="dark-theme">
5353
<div class="ambient-grid"></div>

amazon-stack.html

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,14 +57,14 @@
5757
"@type": "Organization",
5858
"name": "TechStack Global",
5959
"url": "https://techstackglobal.github.io/",
60-
"logo": "https://techstackglobal.github.io/favicon-32x32.png"
60+
"logo": "https://techstackglobal.github.io/apple-touch-icon.png"
6161
}
6262
</script>
6363
<!-- Site Favicons -->
64-
<link href="/favicon.ico" rel="icon"/>
65-
<link href="/favicon-32x32.png" rel="icon" sizes="32x32" type="image/png"/>
66-
<link href="/favicon-16x16.png" rel="icon" sizes="16x16" type="image/png"/>
67-
<link href="/apple-touch-icon.png" rel="apple-touch-icon" sizes="180x180"/>
64+
<link href="/favicon.ico?v=2" rel="icon"/>
65+
<link href="/favicon-32x32.png?v=2" rel="icon" sizes="32x32" type="image/png"/>
66+
<link href="/favicon-16x16.png?v=2" rel="icon" sizes="16x16" type="image/png"/>
67+
<link href="/apple-touch-icon.png?v=2" rel="apple-touch-icon" sizes="180x180"/>
6868
<link href="https://techstackglobal.github.io/amazon-stack.html" rel="canonical"/><meta content="summary_large_image" name="twitter:card"/><meta content="Amazon Product Stack | Modern Tech Hardware | TechStack Global" name="twitter:title"/><meta content="The definitive guide to Amazon-sourced hardware for students, freelancers, and remote workers. Vetted benchmarks for modern productivity." name="twitter:description"/><meta content="https://techstackglobal.github.io/assets/og-image.jpg" name="twitter:image"/></head>
6969
<body class="dark-theme">
7070
<div class="ambient-grid"></div>

assets/icons/favicon-16.png

-115 Bytes
Loading

assets/icons/favicon-32.png

1.13 KB
Loading
24 KB
Loading

blog.html

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,14 +51,14 @@
5151
"@type": "Organization",
5252
"name": "TechStack Global",
5353
"url": "https://techstackglobal.github.io/",
54-
"logo": "https://techstackglobal.github.io/favicon-32x32.png"
54+
"logo": "https://techstackglobal.github.io/apple-touch-icon.png"
5555
}
5656
</script>
5757
<!-- Site Favicons -->
58-
<link href="/favicon.ico" rel="icon"/>
59-
<link href="/favicon-32x32.png" rel="icon" sizes="32x32" type="image/png"/>
60-
<link href="/favicon-16x16.png" rel="icon" sizes="16x16" type="image/png"/>
61-
<link href="/apple-touch-icon.png" rel="apple-touch-icon" sizes="180x180"/>
58+
<link href="/favicon.ico?v=2" rel="icon"/>
59+
<link href="/favicon-32x32.png?v=2" rel="icon" sizes="32x32" type="image/png"/>
60+
<link href="/favicon-16x16.png?v=2" rel="icon" sizes="16x16" type="image/png"/>
61+
<link href="/apple-touch-icon.png?v=2" rel="apple-touch-icon" sizes="180x180"/>
6262
<link href="https://techstackglobal.github.io/blog.html" rel="canonical"/><meta content="summary_large_image" name="twitter:card"/><meta content="Hardware Reviews &amp; Tech Guides | TechStack Global" name="twitter:title"/><meta content="Compare and choose the best hardware for your workspace." name="twitter:description"/><meta content="https://techstackglobal.github.io/assets/images/og-blog.jpg" name="twitter:image"/></head>
6363
<body class="dark-theme">
6464
<div class="ambient-grid">

contact.html

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,14 +45,14 @@
4545
"@type": "Organization",
4646
"name": "TechStack Global",
4747
"url": "https://techstackglobal.github.io/",
48-
"logo": "https://techstackglobal.github.io/favicon-32x32.png"
48+
"logo": "https://techstackglobal.github.io/apple-touch-icon.png"
4949
}
5050
</script>
5151
<!-- Site Favicons -->
52-
<link href="/favicon.ico" rel="icon"/>
53-
<link href="/favicon-32x32.png" rel="icon" sizes="32x32" type="image/png"/>
54-
<link href="/favicon-16x16.png" rel="icon" sizes="16x16" type="image/png"/>
55-
<link href="/apple-touch-icon.png" rel="apple-touch-icon" sizes="180x180"/>
52+
<link href="/favicon.ico?v=2" rel="icon"/>
53+
<link href="/favicon-32x32.png?v=2" rel="icon" sizes="32x32" type="image/png"/>
54+
<link href="/favicon-16x16.png?v=2" rel="icon" sizes="16x16" type="image/png"/>
55+
<link href="/apple-touch-icon.png?v=2" rel="apple-touch-icon" sizes="180x180"/>
5656
<link href="https://techstackglobal.github.io/contact.html" rel="canonical"/><meta content="summary_large_image" name="twitter:card"/><meta content="Contact TechStack Global | Partner with the B2B Authority" name="twitter:title"/><meta content="Reach out to our experts for tech stack advice and partnerships." name="twitter:description"/><meta content="https://techstackglobal.github.io/assets/images/og-contact.jpg" name="twitter:image"/></head>
5757
<body class="dark-theme">
5858
<div class="ambient-grid"></div>

generate_sitemap.py

Lines changed: 27 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
import os
2-
import glob
32
from datetime import datetime
43

54
BASE_DIR = os.path.abspath(os.path.dirname(__file__))
65
BASE_URL = "https://techstackglobal.github.io"
76

87
def get_html_files():
9-
skip_dirs = ['.git', '.vscode', 'node_modules', '.gemini']
8+
skip_dirs = ['.git', '.vscode', 'node_modules', '.gemini', '.agent', '.planning', '.venv', 'tmp', 'tools', 'blogging_project']
109
html_files = []
1110
for root, dirs, files in os.walk(BASE_DIR):
1211
dirs[:] = [d for d in dirs if d not in skip_dirs]
@@ -19,34 +18,47 @@ def main():
1918
date_str = datetime.now().strftime('%Y-%m-%d')
2019
sitemap_path = os.path.join(BASE_DIR, 'sitemap.xml')
2120

22-
# Proper XML with encoding and formatting
21+
# HERALD Standard: High-compatibility XML with strict UTF-8
2322
xml_header = '<?xml version="1.0" encoding="UTF-8"?>\n'
23+
# Optional XML stylesheet can help in some cases, but for GSC, the structure is most critical
2424
xml_urlset_open = '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">\n'
2525
xml_content = xml_header + xml_urlset_open
2626

2727
html_files = sorted(get_html_files())
2828

29+
# 1. Primary Page (Root)
30+
xml_content += f' <url>\n <loc>{BASE_URL}/</loc>\n <lastmod>{date_str}</lastmod>\n <changefreq>daily</changefreq>\n <priority>1.0</priority>\n </url>\n'
31+
2932
for f in html_files:
3033
rel_path = os.path.relpath(f, BASE_DIR).replace('\\', '/')
31-
if rel_path in ['404.html', 'thank-you.html', 'google50e160eb06944afd.html']:
34+
35+
# Skip utility and low-value pages
36+
if rel_path in ['404.html', 'thank-you.html', 'index.html'] or 'google' in rel_path:
3237
continue
3338

34-
# Clean URL: remove index.html from the end of URLs for SEO canonicality
35-
display_path = rel_path
36-
if display_path.endswith('index.html'):
37-
display_path = display_path[:-10]
38-
elif display_path == 'index.html':
39-
display_path = ''
39+
# GSD Strategy: Strict canonical URLs
40+
# Remove .html extension for cleaner indexing if server supports it,
41+
# but for GH Pages, we keep the .html but ensure consistency.
42+
# We also want to assign priority based on depth.
43+
44+
url = f"{BASE_URL}/{rel_path}"
45+
46+
# Priority Logic: Higher priority for core clusters
47+
priority = "0.8"
48+
if "posts/" in rel_path:
49+
priority = "0.7"
50+
if rel_path in ["blog.html", "amazon-stack.html"]:
51+
priority = "0.9"
4052

41-
url = f"{BASE_URL}/{display_path}"
42-
xml_content += f' <url>\n <loc>{url}</loc>\n <lastmod>{date_str}</lastmod>\n <changefreq>weekly</changefreq>\n <priority>0.8</priority>\n </url>\n'
53+
xml_content += f' <url>\n <loc>{url}</loc>\n <lastmod>{date_str}</lastmod>\n <changefreq>weekly</changefreq>\n <priority>{priority}</priority>\n </url>\n'
4354

4455
xml_content += '</urlset>'
4556

46-
with open(sitemap_path, 'w', encoding='utf-8', newline='\n') as f:
47-
f.write(xml_content)
57+
# Write with explicit UTF-8 and ensure NO BOM to prevent GSC parsing errors
58+
with open(sitemap_path, 'wb') as f:
59+
f.write(xml_content.encode('utf-8'))
4860

49-
print(f"Minimal sitemap generated at {sitemap_path}")
61+
print(f"GSD Optimized sitemap generated at {sitemap_path}")
5062

5163
if __name__ == "__main__":
5264
main()

global_branding_fix.py

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
import os
2+
import re
3+
4+
repo_root = r'c:\Users\PMLS\Desktop\Youtube Shorts\b2b_blog'
5+
6+
def update_html_file(file_path):
7+
with open(file_path, 'r', encoding='utf-8') as f:
8+
content = f.read()
9+
10+
new_content = content
11+
12+
# 1. Update Organization Schema Logo (high-res apple icon is best for Google)
13+
schema_pattern = r'("@type"\s*:\s*"Organization",\s*"name"\s*:\s*"TechStack Global",\s*"url"\s*:\s*"https://techstackglobal.github.io/",\s*"logo"\s*:\s*)"[^"]+"'
14+
new_content = re.sub(schema_pattern, r'\1"https://techstackglobal.github.io/apple-touch-icon.png"', new_content)
15+
16+
# 2. Update Favicon Links with Cache-Busting ?v=2
17+
# Matches href="/favicon.ico", href="../favicon.ico", etc.
18+
new_content = re.sub(r'href=["\']([^"\']*favicon\.ico)(\?v=\d+)?["\']', r'href="\1?v=2"', new_content)
19+
new_content = re.sub(r'href=["\']([^"\']*favicon-32x32\.png)(\?v=\d+)?["\']', r'href="\1?v=2"', new_content)
20+
new_content = re.sub(r'href=["\']([^"\']*favicon-16x16\.png)(\?v=\d+)?["\']', r'href="\1?v=2"', new_content)
21+
new_content = re.sub(r'href=["\']([^"\']*apple-touch-icon\.png)(\?v=\d+)?["\']', r'href="\1?v=2"', new_content)
22+
23+
# 3. Handle specific variants like techstack-logo-192.png if they appear in head
24+
new_content = re.sub(r'href=["\']([^"\']*techstack-logo-192\.png)(\?v=\d+)?["\']', r'href="\1?v=2"', new_content)
25+
26+
if new_content != content:
27+
with open(file_path, 'w', encoding='utf-8') as f:
28+
f.write(new_content)
29+
return True
30+
return False
31+
32+
# List directories to process
33+
dirs_to_process = [repo_root, os.path.join(repo_root, 'posts')]
34+
35+
updated_count = 0
36+
for d in dirs_to_process:
37+
if os.path.exists(d):
38+
for f in os.listdir(d):
39+
if f.endswith('.html'):
40+
fpath = os.path.join(d, f)
41+
if update_html_file(fpath):
42+
updated_count += 1
43+
print(f"Updated: {f}")
44+
45+
print(f"\nGlobal update complete. Total files updated: {updated_count}")

0 commit comments

Comments
 (0)