Site settings

URL slug, fallback SEO, share image, search and AI crawlers, timezone, language, Next.js mounts.

This is the guide the PageHub MCP server gives an AI agent for get_style_reference({ topic: "site" }). Names like set_theme are its tools (connect one), and the liquid topic is the HTML + Liquid reference.

Every field takes effect immediately — no publish needed. Empty string clears. select_site returns the current values.

  • name: the URL slug (subdomain) — lowercase letters, digits, hyphens.
  • title / description: the fallback <title> and meta description for every page without its own seo. update_page can't reach them.
  • ogImage: the site-wide share image (https URL, 1200×630) — the og:image for every page without its own seo.ogImage. Unset, those pages get a generated text card. Set it once here instead of on each page.
  • ogVideo: the site-wide animated link preview — https URL of an H.264 MP4 (1200×630, a few seconds, muted, under ~5 MB), sent as og:video beside the still og:image. iMessage, Discord, Slack and Telegram play it; X, LinkedIn, Facebook and WhatsApp show the still. Upload the MP4 with upload_file and pass the url it returns. A page's own seo.ogVideo (update_page) beats it.
  • crawlMode: public (indexed — the default for new sites), noindex (viewable by link, sent noindex, nofollow and left out of the sitemap) or private_preview (noindex plus a robots.txt Disallow: /). Set noindex BEFORE publishing a client's copy that isn't on its final domain yet, or search engines index it as a duplicate of their real site. Flip to public at domain cutover.
  • blockAiCrawlers: true adds a robots.txt Disallow for known AI crawlers (GPTBot, ClaudeBot, Google-Extended, PerplexityBot, …) and turns off /llms.txt + /llms-full.txt. Search engines are unaffected. Leaving it off also lets AI assistants read the site to answer questions or book on a visitor's behalf.
  • timezone: the business's IANA timezone, e.g. "America/Los_Angeles". Liquid dates (date, time_tag, 'now' | date), {{ year }}, {{ site.timezone }} and the times in form notification emails use it; unset or unknown means UTC. A date-only string (2026-06-15) keeps its day; a date-time with no offset (2026-06-15T10:00) is wall-clock time in this timezone.
  • language: the BCP 47 tag the pages are written in ("uk", "es", "pt-BR"), sent as <html lang> on every page so browsers, screen readers and search engines read the right language. Unset means "en". Set it on every site that isn't in English.

Mounting in your own Next.js app (@pagehub/next)

  • mountOrigin: the origin of the app that serves this site at its root, e.g. "https://app.example.com" — https, no path or trailing slash. Canonical URLs, og:url and the sitemap then use that origin, and the page's form, analytics and favicon calls go through the app's /_pagehub/ path. Setting it issues a mount key (returned once) that the app must send so PageHub sees each visitor's real IP; clearing it removes the key.
  • rotateMountKey: true issues a new mount key and invalidates the old one (the site must have a mountOrigin). The new key is returned once — set it as PAGEHUB_MOUNT_KEY in the host app, or that app's visitors share one IP for rate limits and analytics until you do.