Skip to content

Commit bf1108f

Browse files
committed
feat: improve SEO with meta tags, structured data, sitemap, and robots.txt
1 parent 5ae79db commit bf1108f

6 files changed

Lines changed: 145 additions & 7 deletions

File tree

AGENTS.md

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,72 @@
33
- **Type:** Static Website
44
- **Test:** `pre-commit run -a`
55
- **Lint:** `actionlint`, `prettier`
6+
7+
# context-mode — MANDATORY routing rules
8+
9+
You have context-mode MCP tools available. These rules are NOT optional — they protect your context window from flooding. A single unrouted command can dump 56 KB into context and waste the entire session.
10+
11+
## BLOCKED commands — do NOT attempt these
12+
13+
### curl / wget — BLOCKED
14+
15+
Any shell command containing `curl` or `wget` will be intercepted and blocked by the context-mode plugin. Do NOT retry.
16+
Instead use:
17+
18+
- `context-mode_ctx_fetch_and_index(url, source)` to fetch and index web pages
19+
- `context-mode_ctx_execute(language: "javascript", code: "const r = await fetch(...)")` to run HTTP calls in sandbox
20+
21+
### Inline HTTP — BLOCKED
22+
23+
Any shell command containing `fetch('http`, `requests.get(`, `requests.post(`, `http.get(`, or `http.request(` will be intercepted and blocked. Do NOT retry with shell.
24+
Instead use:
25+
26+
- `context-mode_ctx_execute(language, code)` to run HTTP calls in sandbox — only stdout enters context
27+
28+
### Direct web fetching — BLOCKED
29+
30+
Do NOT use any direct URL fetching tool. Use the sandbox equivalent.
31+
Instead use:
32+
33+
- `context-mode_ctx_fetch_and_index(url, source)` then `context-mode_ctx_search(queries)` to query the indexed content
34+
35+
## REDIRECTED tools — use sandbox equivalents
36+
37+
### Shell (>20 lines output)
38+
39+
Shell is ONLY for: `git`, `mkdir`, `rm`, `mv`, `cd`, `ls`, `npm install`, `pip install`, and other short-output commands.
40+
For everything else, use:
41+
42+
- `context-mode_ctx_batch_execute(commands, queries)` — run multiple commands + search in ONE call
43+
- `context-mode_ctx_execute(language: "shell", code: "...")` — run in sandbox, only stdout enters context
44+
45+
### File reading (for analysis)
46+
47+
If you are reading a file to **edit** it → reading is correct (edit needs content in context).
48+
If you are reading to **analyze, explore, or summarize** → use `context-mode_ctx_execute_file(path, language, code)` instead. Only your printed summary enters context.
49+
50+
### grep / search (large results)
51+
52+
Search results can flood context. Use `context-mode_ctx_execute(language: "shell", code: "grep ...")` to run searches in sandbox. Only your printed summary enters context.
53+
54+
## Tool selection hierarchy
55+
56+
1. **GATHER**: `context-mode_ctx_batch_execute(commands, queries)` — Primary tool. Runs all commands, auto-indexes output, returns search results. ONE call replaces 30+ individual calls.
57+
2. **FOLLOW-UP**: `context-mode_ctx_search(queries: ["q1", "q2", ...])` — Query indexed content. Pass ALL questions as array in ONE call.
58+
3. **PROCESSING**: `context-mode_ctx_execute(language, code)` | `context-mode_ctx_execute_file(path, language, code)` — Sandbox execution. Only stdout enters context.
59+
4. **WEB**: `context-mode_ctx_fetch_and_index(url, source)` then `context-mode_ctx_search(queries)` — Fetch, chunk, index, query. Raw HTML never enters context.
60+
5. **INDEX**: `context-mode_ctx_index(content, source)` — Store content in FTS5 knowledge base for later search.
61+
62+
## Output constraints
63+
64+
- Keep responses under 500 words.
65+
- Write artifacts (code, configs, PRDs) to FILES — never return them as inline text. Return only: file path + 1-line description.
66+
- When indexing content, use descriptive source labels so others can `search(source: "label")` later.
67+
68+
## ctx commands
69+
70+
| Command | Action |
71+
| ------------- | --------------------------------------------------------------------------------- |
72+
| `ctx stats` | Call the `stats` MCP tool and display the full output verbatim |
73+
| `ctx doctor` | Call the `doctor` MCP tool, run the returned shell command, display as checklist |
74+
| `ctx upgrade` | Call the `upgrade` MCP tool, run the returned shell command, display as checklist |

makeitwork.cloud/index.html

Lines changed: 54 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,67 @@
11
<!doctype html>
22
<html lang="en-US">
33
<head>
4-
<title>Make IT Work</title>
4+
<title>Make IT Work - Personal DevOps Portal & Cloud Infrastructure</title>
55
<meta charset="UTF-8" />
6-
<meta name="description" content="Make IT Work Cloud - DevOps Portal" />
6+
<meta
7+
name="description"
8+
content="A curated collection of self-hosted DevOps tools: Ansible, Argo CD, OpenShift, Grafana, and more. Personal cloud infrastructure showcase by Steven Welch."
9+
/>
710
<meta
811
name="keywords"
9-
content="Make IT Work, AWS, Cloudflare, DevOps, Ansible, Kubernetes, OpenShift, GitOps"
12+
content="Make IT Work, DevOps, homelab, self-hosted, AWS, Cloudflare, Ansible, Kubernetes, OpenShift, GitOps, Argo CD, Grafana, infrastructure"
1013
/>
11-
<meta name="author" content="steven@makeitwork.cloud" />
14+
<meta name="author" content="Steven Welch" />
1215
<meta name="viewport" content="width=device-width, initial-scale=1" />
16+
<meta name="robots" content="index, follow" />
17+
<link rel="canonical" href="https://makeitwork.cloud/" />
1318
<meta
1419
http-equiv="onion-location"
1520
content="http://zvr4i7wkppsuj3czsxk3dtdkodbrvobre2ao57z4nebqgyijuwp6znad.onion"
1621
/>
22+
<!-- Open Graph -->
23+
<meta
24+
property="og:title"
25+
content="Make IT Work - Personal DevOps Portal & Cloud Infrastructure"
26+
/>
27+
<meta
28+
property="og:description"
29+
content="A curated collection of self-hosted DevOps tools: Ansible, Argo CD, OpenShift, Grafana, and more."
30+
/>
31+
<meta
32+
property="og:image"
33+
content="https://makeitwork.cloud/android-chrome-512x512.png"
34+
/>
35+
<meta property="og:url" content="https://makeitwork.cloud/" />
36+
<meta property="og:type" content="website" />
37+
<meta property="og:site_name" content="Make IT Work" />
38+
<!-- Twitter Cards -->
39+
<meta name="twitter:card" content="summary_large_image" />
40+
<meta name="twitter:title" content="Make IT Work - DevOps Portal" />
41+
<meta
42+
name="twitter:description"
43+
content="Personal DevOps infrastructure showcase with self-hosted services."
44+
/>
45+
<meta
46+
name="twitter:image"
47+
content="https://makeitwork.cloud/android-chrome-512x512.png"
48+
/>
49+
<!-- Structured Data -->
50+
<script type="application/ld+json">
51+
{
52+
"@context": "https://schema.org",
53+
"@type": "WebSite",
54+
"name": "Make IT Work",
55+
"url": "https://makeitwork.cloud/",
56+
"description": "Personal DevOps portal showcasing self-hosted cloud infrastructure and tools",
57+
"author": {
58+
"@type": "Person",
59+
"name": "Steven Welch",
60+
"email": "steven@makeitwork.cloud",
61+
"url": "https://github.com/xnoto"
62+
}
63+
}
64+
</script>
1765
<link rel="icon" type="image/x-icon" href="/favicon.ico" />
1866
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
1967
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
@@ -606,7 +654,7 @@
606654
<body>
607655
<!-- Header -->
608656
<header class="cloud-header">
609-
<h1 class="site-title">MAKE IT WORK</h1>
657+
<h1 class="site-title" itemprop="name">MAKE IT WORK</h1>
610658
<p class="subheader">Upon hearing this, the employee was enlightened.</p>
611659
</header>
612660

@@ -853,7 +901,7 @@ <h1 class="site-title">MAKE IT WORK</h1>
853901
<div class="install-banner-content">
854902
<img
855903
src="/android-chrome-192x192.png"
856-
alt="Make IT Work"
904+
alt="Make IT Work - DevOps Portal Icon"
857905
class="install-banner-icon"
858906
/>
859907
<div class="install-banner-text">

makeitwork.cloud/robots.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
User-agent: *
2+
Allow: /
3+
4+
Sitemap: https://makeitwork.cloud/sitemap.xml

makeitwork.cloud/site.webmanifest

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "Make IT Work",
33
"short_name": "Make IT Work",
4-
"description": "Make IT Work Cloud - DevOps Portal",
4+
"description": "A curated collection of self-hosted DevOps tools: Ansible, Argo CD, OpenShift, Grafana, and more.",
55
"start_url": "/",
66
"scope": "/",
77
"id": "/",

makeitwork.cloud/sitemap.xml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
3+
<url>
4+
<loc>https://makeitwork.cloud/</loc>
5+
<lastmod>2026-03-24</lastmod>
6+
<changefreq>weekly</changefreq>
7+
<priority>1.0</priority>
8+
</url>
9+
<url>
10+
<loc>https://makeitwork.cloud/onion/</loc>
11+
<lastmod>2026-03-24</lastmod>
12+
<changefreq>monthly</changefreq>
13+
<priority>0.5</priority>
14+
</url>
15+
</urlset>

makeitwork.cloud/sw.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ const ASSETS_TO_CACHE = [
33
'/',
44
'/index.html',
55
'/site.webmanifest',
6+
'/robots.txt',
7+
'/sitemap.xml',
68
'/favicon.ico',
79
'/favicon-16x16.png',
810
'/favicon-32x32.png',

0 commit comments

Comments
 (0)