From 2f4de3e25a3b7677cf735833805a30bb55a4561b Mon Sep 17 00:00:00 2001 From: Matt Dean Date: Wed, 10 Jun 2026 00:54:49 -0400 Subject: [PATCH] fix: tighten GSC CTR surfaces --- .../app/agent-api-governance/page.tsx | 2 +- .../app/agent-authority-layer/page.tsx | 1 + .../app/agent-spending-limits/page.tsx | 8 +- .../app/ai-api-budget-enforcement/page.tsx | 4 +- .../page.tsx | 4 +- .../page.tsx | 98 ++++++++++++++----- .../app/capability-lifecycle-demo/page.tsx | 2 +- .../app/components/GovernClient.tsx | 8 +- .../app/economic-firewall/page.tsx | 4 +- .../app/evidence-pack-demo/page.tsx | 3 +- satgate-landing/app/govern/page.tsx | 16 +-- .../app/l402-agent-payments/page.tsx | 2 +- .../app/mcp-budget-enforcement/page.tsx | 2 +- satgate-landing/app/mcp-cost-control/page.tsx | 8 +- satgate-landing/app/mcp-governance/page.tsx | 6 +- satgate-landing/app/partners/rails/page.tsx | 1 + satgate-landing/app/robots.ts | 2 +- satgate-landing/app/sitemap.ts | 13 +-- .../stripe-link-agents-vs-satgate/page.tsx | 4 +- .../scripts/internal_link_audit.py | 8 ++ .../seo/reports/opportunities.json | 2 +- satgate-landing/seo/reports/opportunities.md | 2 +- satgate-landing/seo/reports/page-audit.json | 33 ++++--- .../seo/reports/recommendations.json | 2 +- .../seo/reports/recommendations.md | 2 +- 25 files changed, 152 insertions(+), 85 deletions(-) diff --git a/satgate-landing/app/agent-api-governance/page.tsx b/satgate-landing/app/agent-api-governance/page.tsx index c6e215d2..9b53d62f 100644 --- a/satgate-landing/app/agent-api-governance/page.tsx +++ b/satgate-landing/app/agent-api-governance/page.tsx @@ -3,7 +3,7 @@ import { ArrowRight, BadgeCheck, Ban, Clock, Fingerprint, GitBranch, KeyRound, S export const metadata = { title: 'Agent API Governance | Identity, Revocation, Budgets, Audit', - description: 'Govern AI agent API access with scoped capabilities, delegation limits, revocation, policy checks, and Evidence Pack receipts. Replace unlimited API keys with authority enforced before execution.', + description: 'Govern AI agent API access with scoped capabilities, delegation limits, revocation, policy checks, and Evidence Pack receipts before execution.', alternates: { canonical: 'https://satgate.io/agent-api-governance' }, keywords: [ 'agent API governance', diff --git a/satgate-landing/app/agent-authority-layer/page.tsx b/satgate-landing/app/agent-authority-layer/page.tsx index acdb9577..b36fee48 100644 --- a/satgate-landing/app/agent-authority-layer/page.tsx +++ b/satgate-landing/app/agent-authority-layer/page.tsx @@ -97,6 +97,7 @@ const jsonLd = { name: "Agent Authority & Accountability Layer", url: "https://satgate.io/agent-authority-layer", description: metadata.description, + dateModified: '2026-06-10', isPartOf: { "@type": "WebSite", name: "SatGate", url: "https://satgate.io" }, about: [ { "@type": "Thing", name: "AI agent authority" }, diff --git a/satgate-landing/app/agent-spending-limits/page.tsx b/satgate-landing/app/agent-spending-limits/page.tsx index a130dcef..92e0a232 100644 --- a/satgate-landing/app/agent-spending-limits/page.tsx +++ b/satgate-landing/app/agent-spending-limits/page.tsx @@ -3,7 +3,7 @@ import { ArrowRight, Ban, BarChart3, Bot, DollarSign, Gauge, KeyRound, ReceiptTe export const metadata = { title: 'Agent Spending Limits | Spend Caps for Autonomous AI Agents', - description: 'Set AI agent spending limits by task, route, tool, model, tenant, workflow, session, and day. Enforce authority, revocation, and Evidence Pack receipts before spend occurs.', + description: 'Set AI agent spending limits by task, route, tool, model, tenant, workflow, session, and day. Enforce authority before spend occurs.', alternates: { canonical: 'https://satgate.io/agent-spending-limits' }, keywords: [ 'agent spending limits', @@ -18,14 +18,14 @@ export const metadata = { ], openGraph: { title: 'Agent Spending Limits | Spend Caps for Autonomous AI Agents', - description: 'Set AI agent spending limits by task, route, tool, model, tenant, workflow, session, and day with authority and Evidence Pack receipts before spend occurs.', + description: 'Set AI agent spending limits by route, tool, model, tenant, workflow, session, and day before spend occurs.', url: 'https://satgate.io/agent-spending-limits', type: 'website', }, twitter: { card: 'summary_large_image', title: 'Agent Spending Limits | Spend Caps for Autonomous AI Agents', - description: 'Set AI agent spending limits by task, route, tool, model, tenant, workflow, session, and day with authority and Evidence Pack receipts before spend occurs.', + description: 'Set AI agent spending limits by route, tool, model, tenant, workflow, session, and day before spend occurs.', }, }; @@ -34,7 +34,7 @@ const controls = [ { icon: DollarSign, title: 'Budget checks', body: 'Evaluate remaining spend, per-request ceilings, daily caps, tool caps, and route budgets before forwarding.' }, { icon: KeyRound, title: 'Scoped credentials', body: 'Use expiring capabilities instead of broad static keys so authority matches the job.' }, { icon: Ban, title: 'Revocation', body: 'Block the next request when a credential, workflow, route, budget, or agent should stop.' }, - { icon: ReceiptText, title: 'Audit trails', body: 'Record allow/deny decisions with policy, budget remaining, route, tool, estimated cost, and outcome.' }, + { icon: ReceiptText, title: 'Evidence receipts', body: 'Record allow/deny decisions with policy, budget remaining, route, tool, estimated cost, and outcome.' }, { icon: BarChart3, title: 'Benchmark risk', body: 'Model loops, retry storms, fanout, detection delay, and avoided spend with benchmark-backed scenarios.' }, ]; diff --git a/satgate-landing/app/ai-api-budget-enforcement/page.tsx b/satgate-landing/app/ai-api-budget-enforcement/page.tsx index fa72cd81..b4cb9ccd 100644 --- a/satgate-landing/app/ai-api-budget-enforcement/page.tsx +++ b/satgate-landing/app/ai-api-budget-enforcement/page.tsx @@ -3,7 +3,7 @@ import { ArrowRight, Ban, BarChart3, Bot, DollarSign, Gauge, KeyRound, ReceiptTe export const metadata = { title: 'AI API Budget Enforcement | Hard Caps for Agent API Spend', - description: 'Enforce AI API budgets before agents call OpenAI, Claude, MCP tools, paid APIs, or internal services with request-path controls, revocation, and Evidence Pack receipts.', + description: 'Enforce AI API budgets before agents call OpenAI, Claude, MCP tools, paid APIs, or internal services, with Evidence Pack receipts.', alternates: { canonical: 'https://satgate.io/ai-api-budget-enforcement' }, keywords: [ 'AI API budget enforcement', @@ -34,7 +34,7 @@ const controls = [ { icon: DollarSign, title: 'Budget checks', body: 'Evaluate remaining spend, per-request ceilings, daily caps, tool caps, and route budgets before forwarding.' }, { icon: KeyRound, title: 'Scoped credentials', body: 'Use expiring capabilities instead of broad static keys so authority matches the job.' }, { icon: Ban, title: 'Revocation', body: 'Block the next request when a credential, workflow, route, budget, or agent should stop.' }, - { icon: ReceiptText, title: 'Audit trails', body: 'Record allow/deny decisions with policy, budget remaining, route, tool, estimated cost, and outcome.' }, + { icon: ReceiptText, title: 'Evidence receipts', body: 'Record allow/deny decisions with policy, budget remaining, route, tool, estimated cost, and outcome.' }, { icon: BarChart3, title: 'Benchmark risk', body: 'Model loops, retry storms, fanout, detection delay, and avoided spend with benchmark-backed scenarios.' }, ]; diff --git a/satgate-landing/app/blog/always-on-agents-economic-authority/page.tsx b/satgate-landing/app/blog/always-on-agents-economic-authority/page.tsx index c5927edb..f84b6f5a 100644 --- a/satgate-landing/app/blog/always-on-agents-economic-authority/page.tsx +++ b/satgate-landing/app/blog/always-on-agents-economic-authority/page.tsx @@ -20,13 +20,13 @@ export const metadata = { 'MCP governance', 'AI agent spend controls', 'agent policy enforcement', - 'agent audit evidence', + 'agent Evidence Pack proof', 'Microsoft Scout', ], openGraph: { title, description, - url, + url: 'https://satgate.io/blog/always-on-agents-economic-authority', type: 'article', publishedTime: '2026-06-04T00:00:00Z', modifiedTime: '2026-06-04T00:00:00Z', diff --git a/satgate-landing/app/blog/how-to-add-budget-limits-to-openai-api-calls/page.tsx b/satgate-landing/app/blog/how-to-add-budget-limits-to-openai-api-calls/page.tsx index 01580785..bfe146c2 100644 --- a/satgate-landing/app/blog/how-to-add-budget-limits-to-openai-api-calls/page.tsx +++ b/satgate-landing/app/blog/how-to-add-budget-limits-to-openai-api-calls/page.tsx @@ -2,22 +2,25 @@ import Link from 'next/link'; import RoiCta from '../../components/RoiCta'; import { ArrowLeft, Calendar, Clock } from 'lucide-react'; +const pageTitle = 'OpenAI API Budget Limits: Prevent Runaway GPT Spend'; +const pageDescription = 'Set OpenAI API budget limits by agent, team, or workflow. Block, downgrade, or route GPT calls before spend exceeds policy, with Evidence Pack receipts.'; + export const metadata = { - title: "OpenAI API Budget Limits: Hard Caps Before GPT Calls Run", - description: "Set OpenAI API budget limits by agent, team, or workflow. Enforce hard caps before GPT calls execute and preserve Evidence Pack proof.", + title: 'OpenAI API Budget Limits: Prevent Runaway GPT Spend', + description: 'Set OpenAI API budget limits by agent, team, or workflow. Block, downgrade, or route GPT calls before spend exceeds policy, with Evidence Pack receipts.', alternates: { canonical: 'https://satgate.io/blog/how-to-add-budget-limits-to-openai-api-calls' }, keywords: ['OpenAI API budget limits', 'OpenAI cost control', 'API gateway OpenAI', 'GPT-4 spending limits', 'OpenAI API costs', 'prevent OpenAI overspending', 'hard cap OpenAI spend', 'per-agent OpenAI budget'], openGraph: { - title: 'OpenAI API Budget Limits: Hard Caps Before GPT Calls Run', - description: 'Set OpenAI API budget limits by agent, team, or workflow. Enforce hard caps before GPT calls execute and preserve Evidence Pack proof.', + title: pageTitle, + description: pageDescription, url: 'https://satgate.io/blog/how-to-add-budget-limits-to-openai-api-calls', type: 'article', publishedTime: '2026-04-07T00:00:00Z', }, twitter: { card: 'summary_large_image', - title: 'OpenAI API Budget Limits: Hard Caps Before GPT Calls Run', - description: 'Set per-agent, team, and workflow budgets before GPT calls execute, then prove each allow, deny, or downgrade decision.', + title: pageTitle, + description: pageDescription, }, }; @@ -25,12 +28,12 @@ export default function HowToAddBudgetLimitsToOpenAIAPICallsPage() { const articleJsonLd = { '@context': 'https://schema.org', '@type': 'TechArticle', - headline: 'OpenAI API Budget Limits: Hard Caps Before GPT Calls Run', + headline: pageTitle, description: metadata.description, author: { '@type': 'Organization', name: 'SatGate' }, publisher: { '@type': 'Organization', name: 'SatGate', url: 'https://satgate.io' }, datePublished: '2026-04-07', - dateModified: '2026-06-01', + dateModified: '2026-06-10', mainEntityOfPage: 'https://satgate.io/blog/how-to-add-budget-limits-to-openai-api-calls', about: [ { '@type': 'Thing', name: 'OpenAI API budget limits' }, @@ -90,6 +93,51 @@ export default function HowToAddBudgetLimitsToOpenAIAPICallsPage() { ], }; + const howToSchema = { + '@context': 'https://schema.org', + '@type': 'HowTo', + name: 'How to add OpenAI API budget limits', + description: 'A request-path rollout for enforcing OpenAI API budget limits before autonomous agent calls reach GPT models.', + totalTime: 'PT30M', + supply: [ + { '@type': 'HowToSupply', name: 'OpenAI API key' }, + { '@type': 'HowToSupply', name: 'SatGate gateway or request-path budget proxy' }, + { '@type': 'HowToSupply', name: 'Per-agent, team, customer, or workflow budget policy' }, + ], + step: [ + { + '@type': 'HowToStep', + name: 'Route OpenAI calls through the budget gateway', + text: 'Place SatGate in front of OpenAI so every GPT request can be identified, priced, and governed before execution.', + url: 'https://satgate.io/blog/how-to-add-budget-limits-to-openai-api-calls#step-1-install-the-gateway', + }, + { + '@type': 'HowToStep', + name: 'Create scoped budget-limited tokens', + text: 'Issue separate tokens for development, production, high-priority workflows, teams, customers, or agents with hard daily, hourly, session, and per-request limits.', + url: 'https://satgate.io/blog/how-to-add-budget-limits-to-openai-api-calls#step-2-create-budget-limited-tokens', + }, + { + '@type': 'HowToStep', + name: 'Configure the OpenAI client base URL', + text: 'Point the existing OpenAI SDK client at the SatGate base URL and use the budget-limited token instead of a broad upstream API key.', + url: 'https://satgate.io/blog/how-to-add-budget-limits-to-openai-api-calls#step-3-update-your-code', + }, + { + '@type': 'HowToStep', + name: 'Attach budgets to teams, customers, and agents', + text: 'Enforce separate OpenAI API budgets by team, customer, workflow, environment, session, or autonomous agent before each call executes.', + url: 'https://satgate.io/blog/how-to-add-budget-limits-to-openai-api-calls#step-4-configure-team-budgets', + }, + { + '@type': 'HowToStep', + name: 'Preserve proof for allow, deny, and downgrade decisions', + text: 'Record request-path budget decisions as Evidence Pack receipts so teams can audit why a GPT call was allowed, blocked, downgraded, or routed.', + url: 'https://satgate.io/policy-to-proof', + }, + ], + }; + return (