From e121d59929095c668b6d45640ede9fb321020fdb Mon Sep 17 00:00:00 2001 From: CriptoGus <128640021+criptogus@users.noreply.github.com> Date: Sun, 1 Nov 2026 11:19:33 -0300 Subject: [PATCH] fix(pricing): publish dated GEO price source and structured offers --- src/lib/pricing-copy.ts | 71 +++++++++++++++- src/routes/pricing.tsx | 29 +++++-- src/routes/sitemap[.]xml.tsx | 11 ++- tests/pricing-copy.test.ts | 154 ++++++++++++++++++++++++++++++++--- 4 files changed, 243 insertions(+), 22 deletions(-) diff --git a/src/lib/pricing-copy.ts b/src/lib/pricing-copy.ts index c47d5cc7..7387a07b 100644 --- a/src/lib/pricing-copy.ts +++ b/src/lib/pricing-copy.ts @@ -7,6 +7,11 @@ * Legacy grandfather only (do not use on new checkout paths): * agent_pass_pro_monthly | agent_pass_pro_yearly */ +export const PRICES_UPDATED_ON = "November 1, 2026"; +export const PRICES_UPDATED_ON_ISO = "2026-11-01"; + +export const FREE_PRICING = { price: 0 } as const; + export const PRO_PRICING = { monthly: 29, yearly: 240, @@ -26,14 +31,14 @@ export const PRO_INCLUDED_AGENTS = 1; * Pro = human builder seat + 1 included production agent. * Agent Pass = standalone monthly seat ($12/agent) — no Pro required; also covers extras beyond Pro's included 1. */ -export const PRO_VS_AGENT_PASS = - `Pro is the human builder seat (Agent Factory, Store, University, reviews) and includes ${PRO_INCLUDED_AGENTS} production agent. Extra production agents beyond that are Agent Pass at $${AGENT_PASS_PRICING.monthlyPerAgent}/agent/mo. Agent Pass is also sold standalone (monthly only, no Pro required) for people who only run agents.`; +export const PRO_VS_AGENT_PASS = `Pro is the human builder seat (Agent Factory, Store, University, reviews) and includes ${PRO_INCLUDED_AGENTS} production agent. Extra production agents beyond that are Agent Pass at $${AGENT_PASS_PRICING.monthlyPerAgent}/agent/mo. Agent Pass is also sold standalone (monthly only, no Pro required) for people who only run agents.`; export const PRO_YEARLY_SAVINGS = PRO_PRICING.yearlyList - PRO_PRICING.yearly; // 108 export const PRO_YEARLY_DISCOUNT_PCT = Math.round( (PRO_YEARLY_SAVINGS / PRO_PRICING.yearlyList) * 100, ); // 31 +export const PRICE_FREE = `$${FREE_PRICING.price}`; export const PRICE_MONTHLY = `$${PRO_PRICING.monthly}`; export const PRICE_YEARLY = `$${PRO_PRICING.yearly}`; export const PRICE_YEARLY_LIST = `$${PRO_PRICING.yearlyList}`; @@ -43,3 +48,65 @@ export const SAVE_SHORT = `save $${PRO_YEARLY_SAVINGS}`; /** Canonical one-line answer reused in FAQ copy, meta descriptions and JSON-LD. */ export const PRICING_SENTENCE = `Browsing and installing public capabilities is free — no account needed. Pro is ${PRICE_YEARLY} per year (down from ${PRICE_YEARLY_LIST}, ${PRO_YEARLY_DISCOUNT_PCT}% off) or ${PRICE_MONTHLY} per month for the human builder seat (Agent Factory, Agent Store, SAK University and unlimited tested reviews) and includes ${PRO_INCLUDED_AGENTS} production agent. Extra production agents are Agent Pass at ${PRICE_AGENT_PASS} per agent per month (monthly only) — buy Agent Pass without Pro if you only run agents. Enterprise adds a private registry, SSO and audit logs.`; + +/** Dated price source shared by the visible /pricing copy and structured data. */ +export const PRICE_UPDATE_SENTENCE = `Prices updated on ${PRICES_UPDATED_ON}. Pro costs ${PRICE_MONTHLY} per month or ${PRICE_YEARLY} per year, and Agent Pass costs ${PRICE_AGENT_PASS} per agent per month.`; +export const PRICING_FAQ_QUESTION = "How much does Super Agent Skill cost?"; +export const PRICING_FAQ_ANSWER = `${PRICE_UPDATE_SENTENCE} The Free plan costs ${PRICE_FREE} and is free forever. Enterprise pricing is custom.`; + +const PRICING_URL = "https://superagentskill.com/pricing"; + +function paidOffer(name: string, price: number, unitText: string) { + return { + "@type": "Offer", + name, + url: PRICING_URL, + price: String(price), + priceCurrency: "USD", + priceSpecification: { + "@type": "UnitPriceSpecification", + name, + price: String(price), + priceCurrency: "USD", + unitText, + }, + }; +} + +export const PRICING_SOFTWARE_LD = { + "@context": "https://schema.org", + "@type": "SoftwareApplication", + name: "Super Agent Skill", + applicationCategory: "DeveloperApplication", + operatingSystem: "Any (MCP-compatible)", + url: PRICING_URL, + dateModified: PRICES_UPDATED_ON_ISO, + offers: [ + { + "@type": "Offer", + name: "Free", + url: PRICING_URL, + price: String(FREE_PRICING.price), + priceCurrency: "USD", + }, + paidOffer("Pro monthly", PRO_PRICING.monthly, "MONTH"), + paidOffer("Pro yearly", PRO_PRICING.yearly, "YEAR"), + paidOffer("Agent Pass per agent per month", AGENT_PASS_PRICING.monthlyPerAgent, "agent/month"), + ], +}; + +export const PRICING_FAQ_LD = { + "@context": "https://schema.org", + "@type": "FAQPage", + url: PRICING_URL, + mainEntity: [ + { + "@type": "Question", + name: PRICING_FAQ_QUESTION, + acceptedAnswer: { + "@type": "Answer", + text: PRICING_FAQ_ANSWER, + }, + }, + ], +}; diff --git a/src/routes/pricing.tsx b/src/routes/pricing.tsx index 0f9b596d..9407f184 100644 --- a/src/routes/pricing.tsx +++ b/src/routes/pricing.tsx @@ -2,6 +2,7 @@ import { createFileRoute, Link } from "@tanstack/react-router"; import { useState } from "react"; import { Check } from "lucide-react"; import { Nav } from "@/components/site/Nav"; +import { JsonLd } from "@/components/site/JsonLd"; import { Footer } from "@/components/site/Footer"; import { PaymentTestModeBanner } from "@/components/PaymentTestModeBanner"; import { useAuth } from "@/hooks/use-auth"; @@ -10,6 +11,12 @@ import { useStripeCheckout } from "@/hooks/useStripeCheckout"; import { AGENT_PASS_PRICING, PRICE_AGENT_PASS, + PRICE_FREE, + PRICE_UPDATE_SENTENCE, + PRICING_FAQ_QUESTION, + PRICING_FAQ_ANSWER, + PRICING_SOFTWARE_LD, + PRICING_FAQ_LD, PRICE_MONTHLY, PRICE_YEARLY, PRICE_YEARLY_LIST, @@ -111,6 +118,7 @@ function Pricing() { return (
+