← back to all posts

Should You Run SEO Agents Locally or in the Cloud?

Running SEO agents local vs cloud: compare costs, security, scalability, and orchestration realities to decide which deployment model fits your workflow in 2026.

The framing you'll encounter most often treats this as a cost question: pay per token in the cloud or buy a GPU and run Llama 3 locally. That framing is wrong, and optimizing for it will get you a deployment that fails for reasons unrelated to where the server lives.

Reading through the production deployment literature, including the ReAct paper, the Toolformer research, and the Google Cloud guidance on building effective agents, one pattern keeps surfacing: SEO agents fail in production because of orchestration breakdowns and state mismanagement, not because of compute geography. The local-vs-cloud decision matters, but it's downstream of architecture decisions most teams haven't made yet.

This piece works through what actually separates an SEO agent from a chained prompt, how the two deployment models compare on cost, speed, and model access, where security risk genuinely differs between them, which workload types favor each model, and why containerization and the Model Context Protocol dissolve the binary for teams ready to treat deployment location as a scheduling variable.

What counts as an SEO agent in 2026, and what is just a multi-step LLM prompt?

An SEO agent is a system that executes a goal autonomously across multiple tool invocations, maintaining state between steps and self-correcting when a tool call fails or returns unexpected output. A chained prompt workflow is not that, even if it uses ten prompts in sequence. The distinction is execution autonomy: does the system decide what to do next, or does a human?

The clearest operational test comes from the ReAct framework, which defines agent behavior as interleaving reasoning traces with tool invocations in a loop. An SEO agent built on ReAct-style architecture observes data from a crawl or SERP, plans a next action, calls a tool, observes the result, and continues until the task completes or a stopping condition triggers. LangChain, LlamaIndex, and AutoGen all implement variants of this loop. Screaming Frog, by contrast, is a local SEO crawling tool with no reasoning loop at all; it executes deterministic crawl logic and returns structured output. People frequently describe "running Screaming Frog with a GPT-4o summary step" as an agent. It isn't.

What makes the agent classification practically important for deployment decisions: a true agent loop running via Ollama on local hardware or against the OpenAI API in the cloud will generate unpredictable token volumes per task. A crawl-and-analyze job that hits a complex page with many internal links and structured data anomalies can trigger three times as many tool calls as a simple page. That unpredictability has direct cost and infrastructure implications that a scripted multi-step prompt does not.

Frameworks like LangChain and LlamaIndex support both local and cloud LLM backends. AutoGen handles multi-agent coordination across either environment. The agent logic, tools, and retrieval flow built with these frameworks stay intact when you swap the model backend, which is what makes the deployment question answerable without rebuilding the agent from scratch.

How do local and cloud SEO agent deployments compare on cost, speed, and model access?

AxisLocal (Ollama + Llama 3 / Mistral)Cloud (OpenAI API / Anthropic Claude API on GCP or AWS)
**Cost model**High upfront GPU hardware cost; near-zero marginal cost at volumeNo hardware spend; per-token billing that scales linearly with usage
**Inference speed**Low latency for small models on GPU; slow on CPU-onlyFast for large models; adds network round-trip latency
**Model selection**Limited to open-weight models that fit available VRAMFull access to GPT-4o, Claude 3.5, and other frontier models
**Setup complexity**Hardware provisioning, driver setup, Ollama configurationAPI key management, network setup, provider account
**Scalability**Constrained by RAM, VRAM, and CPU/GPU capacityNear-infinite elastic scaling on GCP or AWS
**Data privacy**All data stays on-premisesData passes through third-party provider infrastructure

The cost comparison deserves more precision than it usually gets. Cloud per-token billing looks cheap at low volume. One analysis of cloud agent hosting puts managed costs at roughly $14 to $55 per month for light workloads, which matters because SEO agents running ReAct-style reasoning loops are not light workloads. A large-scale technical audit that triggers hundreds of tool calls per URL, across thousands of URLs, generates token volumes that make per-token billing genuinely expensive and genuinely hard to forecast. Local deployments convert that variable cost into fixed infrastructure spend, which is easier to budget even if the upfront investment is higher.

On model access, the gap between local and cloud is real but narrowing. Mistral and Llama 3 handle routine SEO tasks well: keyword clustering, meta tag generation, internal linking suggestions, structured output for reporting. Where they fall short is complex multi-step reasoning over long contexts, structured JSON output reliability, and instruction-following under ambiguous conditions. The Google Cloud production deployment guidance explicitly notes that smaller local models are more prone to JSON syntax errors and instruction drift than frontier models. For an SEO agent that needs to reliably call Ahrefs API or Semrush API tools and parse structured responses, that reliability gap matters.

Inference speed favors local deployment for small models on GPU hardware, primarily because network round-trips to cloud APIs add latency that accumulates across multi-step agent loops. For non-real-time SEO workflows like nightly audits or weekly content gap analysis, that latency is usually acceptable. For interactive workflows where a practitioner is watching the agent work, it becomes noticeable.

What are the security and data-privacy risks that apply to each SEO agent deployment model?

Local deployment's security profile is not simply "safer." The risks are different, not smaller.

A local SEO agent running Ollama keeps client crawl data, SERP exports, and content analysis on-premises, which directly addresses GDPR compliance obligations for agencies handling EU client data. No third-party provider receives the data. But local agents accumulate sensitive information in embeddings, vector databases, caches, and log files that are easy to neglect. An agent that reads competitor pages, internal CMS content, and Search Console exports is building a dense local store of proprietary data. If that store isn't governed with the same rigor as a production database, the on-premises advantage evaporates.

Cloud deployment expands the attack surface in a specific direction: over-permissioned integrations. SEO agents connecting to Google Search Console, GA4, Ahrefs API, Semrush API, and a CMS through long-lived credentials are a high-value target. OWASP's Top 10 for LLM Applications flags insecure tool execution and credential exposure as critical risks for exactly this architecture. The blast radius of a compromised cloud agent is determined by what the agent can reach through its API keys and service accounts, which in a typical SEO stack is considerable.

Both deployment models face prompt injection. An SEO agent reading competitor pages or SERP snippet s is processing untrusted content that could contain adversarial instructions. This risk doesn't change based on whether the agent runs on AWS or on a developer's laptop. NIST's AI Risk Management Framework treats prompt injection as a deployment-agnostic threat.

Where cloud deployment has a genuine advantage: managed infrastructure handles network segmentation, identity management, and patching. A cloud-hosted agent on GCP or Microsoft Azure benefits from provider-level security controls that a local deployment must implement and maintain independently. Cloud AI platforms are also beginning to offer managed audit logging and explainability features that NIST's secure AI development guidance treats as mandatory. Local deployments must build that instrumentation from scratch, which most teams don't do.

One risk that specifically favors local deployment: Toolformer-style autonomous tool discovery. The Toolformer research demonstrated that language models can teach themselves to insert API calls at runtime based on task context. An SEO agent with this capability running in the cloud can autonomously reach out to third-party rank trackers or crawl APIs in ways the operator didn't explicitly authorize. In a local environment with tight firewall rules and controlled secrets management, that egress is much easier to constrain.

Which SEO agent workload types genuinely favor local deployment, and which favor cloud?

Local deployment fits best when the workload is sensitive, analytical, and approval-heavy.

Combining Search Console exports, GA4 data, crawl logs, and internal content guidelines inside a local agent loop keeps proprietary client data off third-party infrastructure. That's not a minor consideration for an agency with GDPR obligations. Prioritization tasks, content briefs, internal linking recommendations, and quality checks all work well locally because they're analytically intensive but low-volume, and they benefit from human review before implementation. Agent-generated internal linking changes shouldn't be pushed to a production CMS without a review step regardless of deployment model, but local deployment makes it easier to build that gate into the workflow.

Budget-constrained teams running Mistral or Llama 3 via Ollama for routine batch work are also well-served locally. Keyword clustering across a 5,000-term list, meta description generation for a mid-size site, and content gap analysis against a known competitor set are all tasks where open-weight models perform adequately and where the cost of cloud API calls adds up without adding proportionate quality.

Cloud deployment wins when the workload is distributed, continuously running, and integration-heavy. Rank tracking across hundreds of URLs on multiple client sites needs persistent uptime that a developer's laptop can't provide. Multi-location local SEO operations, Google Business Profile audits, citation consistency checks, and schema synchronization across directories all involve high-frequency API calls to external systems where network proximity to those systems matters. Cloud-hosted agents on GCP or AWS are geographically closer to most of the APIs they call, which reduces latency across the full tool-call chain.

High-volume content production pipelines and outreach workflows belong in the cloud. These are integration-heavy, scale-dependent, and often need concurrent execution across multiple clients or properties. The orchestration overhead of running that kind of pipeline on local hardware is significant, and the reliability requirements favor managed infrastructure.

A practical split: run analytical and privacy-sensitive workflows locally, run monitoring and production pipelines in the cloud, and use the containerization approach described below to make that routing a configuration decision rather than an architectural one.

Why does the local-vs-cloud framing break down for most production SEO agent deployments?

Production SEO agent stacks are heterogeneous by nature. A single SEO operation might involve keyword clustering (low complexity, high volume), technical audit analysis (moderate complexity, moderate volume), and competitive content gap reasoning (high complexity, low volume). Those three workloads have different latency requirements, different context window demands, different tool-call patterns, and different data-sensitivity profiles. No single deployment model optimizes for all three simultaneously.

The more accurate question is: which parts of this agent system should run locally, which should run in the cloud, and what routing rules decide between them? Local for privacy, control, and repeatable internal operations. Cloud for frontier-model reasoning, scale, and managed reliability. Hybrid for everything in between, which in practice is most production SEO agent deployments.

What causes production SEO agent failures, and is it really about deployment location?

Production SEO agent failures cluster around orchestration and state management, not compute location. The Google Research production deployment guidance identifies agent memory management, tool-call reliability, and multi-step orchestration breakdowns as the primary failure cluster. These problems exist on GCP, on AWS, and on a developer's MacBook with 64GB of RAM running Ollama.

The specific failure modes are: agents losing context mid-task when the reasoning trace exceeds the model's context window, tool calls returning malformed output that the agent doesn't recover from gracefully, and multi-step workflows where an error in step three propagates silently through steps four and five before producing a bad final output. None of these are infrastructure problems. They're orchestration architecture problems.

Teams that invest heavily in the local-vs-cloud decision while leaving memory architecture and tool-call error handling underspecified are optimizing the wrong variable. The orchestration layer is the real deployment bottleneck.

Does switching from local to cloud fix SEO agent memory and tool-call failures?

Switching to cloud improves tool-call reliability for a specific reason: frontier models like GPT-4o and Claude 3.5 produce valid JSON output far more consistently than smaller local models. The production deployment literature is explicit that local 8B-parameter models fail their first tool call roughly 20% of the time, requiring automatic repair loops to recover. Cloud frontier models don't eliminate that failure rate entirely, but they reduce it substantially. That 20% first-call failure rate for small local models is worth taking seriously when building any tool-dependent agent pipeline.

Memory failures are not fixed by switching deployment models. Context window exhaustion happens at the model level, not the infrastructure level. An agent that loses context mid-task on Ollama will lose context mid-task on the OpenAI API if the same reasoning trace exceeds the same context window limit. The fix is architectural: explicit memory management, summarization of prior steps, and state persistence in a vector database or structured store. LangChain and LlamaIndex both provide mechanisms for this. Neither GCP nor local hardware implements it automatically.

If your SEO agent is failing on tool-call formatting, moving to a cloud frontier model will help. If it's losing context mid-task, fix the memory architecture first.

Can LangChain or LlamaIndex switch between a local Ollama model and a cloud API without rewriting the agent?

The agent logic, tools, and retrieval flow stay intact when you swap the model backend. LangChain's standardized chat model interfaces let you change the model provider by changing the initialization configuration, not the surrounding business logic. LlamaIndex handles the same swap through its Settings object. An Ollama-compatible endpoint can point to a local server or a remote cloud endpoint using the same request pattern.

The caveat is real: "without rewriting" applies to the agent logic, not the full configuration. Auth parameters, API keys, base URLs, and provider-specific headers all need updating when you move between environments. A proxy layer like LiteLLM can sit between the application and multiple backends, enabling transparent fallback between local Ollama and cloud APIs without touching application code at all. For teams that want to prototype locally and promote to cloud without configuration friction, that proxy pattern is worth the setup cost.

What is the Model Context Protocol, and how does it change the local-vs-cloud decision for SEO agents?

The Model Context Protocol is an open standard that connects language models to external tools and data sources through a common interface. Anthropic describes it as transport-agnostic, meaning the same integration works regardless of where the agent runtime lives. For SEO agents, this is the most consequential architectural development in the local-vs-cloud conversation.

MCP makes the deployment decision genuinely reversible. An SEO agent's integrations, rank-tracking APIs, crawl databases, content pipelines, Search Console connections, can be wired once through MCP and reused without re-engineering when the runtime moves from a developer's laptop to a cloud VM. Before standardized protocols like MCP existed, migrating a local agent to cloud infrastructure often meant rebuilding the tool layer. That migration cost was a real lock-in mechanism that made the initial deployment decision stickier than it should have been.

For SEO specifically, MCP enables three things that matter operationally: direct tool access so agents query live SEO data rather than inferring it from scraped pages, structured automation so audits and validation run through explicit commands rather than manual workflows, and portability so the same integration layer serves both local and cloud runtimes. The important design layer is now the MCP server that exposes SEO capabilities, not the compute location of the agent consuming them.

Does MCP let an SEO agent connect to Ahrefs and Semrush APIs the same way regardless of where it runs?

Not quite. Ahrefs has moved to a hosted remote MCP server that works with specific MCP-compatible clients like ChatGPT and Claude. Local MCP setup for Ahrefs is no longer supported. Custom scripts, bridges, or standalone HTTP clients connecting to the Ahrefs MCP endpoint are explicitly not permitted under their terms. The previous local Ahrefs MCP server worked with API v3 keys only; the current remote server doesn't require local setup but also doesn't support arbitrary runtimes.

A cloud-hosted SEO agent using a supported MCP client has a cleaner path to Ahrefs integration than a locally-hosted custom agent does. Equivalent documentation from Semrush on their MCP implementation isn't available, so parity there can't be confirmed.

Does Toolformer-style autonomous tool discovery create a security risk when SEO agents run in the cloud?

It does. The Toolformer research showed that language models can teach themselves to invoke external tools at runtime based on task context, inserting API calls they weren't explicitly programmed to make. In a cloud-deployed SEO agent with broad default network access, that capability means the agent can autonomously reach out to third-party services in ways the operator didn't authorize.

OWASP's agentic AI risk material specifically flags tool squatting and exploiting automated tool discovery as threats: an attacker can register or present a malicious tool that the agent invokes because its name or description matches something the agent is looking for. Combined with the broad API access that a cloud SEO agent typically needs (Search Console, analytics, rank trackers, CMS), the blast radius of a successful tool-injection attack is significant.

Local environments with tight firewall rules and controlled secrets management are meaningfully safer for agents with autonomous tool discovery capabilities. This is one area where the security argument for local deployment is concrete rather than theoretical.

What does a Docker and Kubernetes containerization strategy look like for portable SEO agent deployments?

Containerization is the practical resolution to the false binary. Docker packages the SEO agent's runtime, dependencies, and startup command into a single image. Kubernetes runs that image across local, staging, and cloud environments with environment-specific configuration injected at runtime. The same agent code runs on a developer's machine and on a multi-node AWS cluster without modification.

The implementation pattern for SEO agent deployments:

  • Use slim base images with multi-stage builds and pin dependencies with a lockfile. An SEO agent that pulls in a full Python data science stack when it only needs requests, LangChain, and a vector database client is slower to build and harder to audit.
  • Keep secrets out of the image. API keys for Ahrefs API, Semrush API, and OpenAI API pass in through environment variables or mounted secrets at runtime. Hardcoding credentials is the most common containerization mistake in agent deployments.
  • Add health checks and readiness probes. Kubernetes needs to know when the agent has warmed its caches or loaded its model before routing work to it. A missing readiness probe means Kubernetes sends jobs to agents that aren't ready, which produces silent failures.
  • Match Kubernetes workload type to agent behavior. Always-on agents that serve requests or process queues run as Deployments. Daily technical audits, weekly keyword refreshes, and scheduled reporting jobs run as CronJobs. The distinction matters for resource allocation and restart behavior.
  • Enable autoscaling for bursty workloads. KEDA handles event-driven scaling and scale-to-zero for queue-driven agent pipelines, which fits the batch-heavy pattern of most SEO agent work.

The development-to-production path becomes: run the Docker container locally for fast iteration, deploy the same image to a Kubernetes staging environment with test secrets and resource caps, then promote to production with namespace isolation, autoscaling, and a rollout strategy. The local-vs-cloud decision becomes a question of which Kubernetes context you're targeting, not which codebase you're running.

Can the same Docker image run a Llama 3 agent locally and a GPT-4o agent on AWS without changes?

The same codebase can, but not the same image without configuration changes. A Docker image that runs Llama 3 via Ollama points to a local server on port 11434. A GPT-4o agent on AWS calls the OpenAI API endpoint with an API key. Those are different base URLs, different authentication patterns, and different model names.

The correct pattern is one agent image that reads its model provider, base URL, and credentials from environment variables. Locally, those variables point to the Ollama instance. On AWS, they point to the OpenAI API endpoint. The agent logic, tool definitions, and retrieval flow are identical. The deployment configuration is different. Keep the agent code model-agnostic, and let the deployment environment determine which backend it uses.

GPU driver compatibility is a separate consideration for local deployments. Running Llama 3 locally at acceptable inference speed requires a GPU with sufficient VRAM and compatible NVIDIA drivers. That requirement doesn't travel with the Docker image; it's a host-level dependency that needs to be verified before local GPU inference is viable.

How does multi-agent SEO system architecture change the infrastructure decision beyond simple local-vs-cloud?

When specialized sub-agents handle crawling, content analysis, and reporting in parallel, the dominant infrastructure design variable shifts from compute location to network topology. How agents are networked relative to each other determines inter-agent communication latency more than whether they sit in a cloud region or on local hardware.

A multi-agent SEO system built with AutoGen or LangChain introduces coordination overhead that grows with agent count. The generative agents research from Stanford documented this scaling relationship: as agent count increases, the cost of maintaining shared state and coordinating actions becomes the primary bottleneck. For SEO teams deploying agent networks, the message-passing architecture needs explicit design. A crawl agent and an analysis agent that communicate through a shared message bus have different latency characteristics than agents that communicate through direct API calls, regardless of whether the bus runs locally or on GCP.

Production multi-agent systems also need infrastructure beyond model hosting: state management, identity enforcement across the agent chain, centralized tool registries, and observability. TrueFoundry's production guidance identifies these as mandatory for reliable multi-agent operation, not optional enhancements. An SEO team that deploys a multi-agent system without explicit state management is building a system that will produce inconsistent outputs when agents share context about the same client site.

Does the OpenAI Agents SDK lock you into cloud infrastructure for multi-agent SEO handoffs?

The OpenAI Agents SDK doesn't lock you into OpenAI-owned cloud infrastructure for execution. The SDK separates the harness from the compute, and its sandboxing layer supports providers including E2B, Modal, Cloudflare, and Vercel. The SDK is stateless by default and assumes you bring your own runtime and state management.

The lock-in risk operates at a different layer: model coupling, state formats, and handoff design. If you build your multi-agent SEO pipeline using OpenAI-native handoff protocols and hosted tool integrations, migrating to a self-hosted open-source runtime later means rebuilding those integration points. There are no direct open-source equivalents for some of the SDK's built-in primitives. That migration friction is the actual lock-in cost, and it compounds as the pipeline grows more complex.

Treat this as a long-run cost that the convenience argument for cloud SEO agents underweights. For teams that might want to move workloads to self-hosted infrastructure as agent costs scale, open-source frameworks like LangChain or AutoGen avoid this dependency at the cost of more initial instrumentation.

Do cloud audit logging and explainability features cover the compliance requirements NIST sets for SEO agents?

Cloud audit logging is necessary but not sufficient on its own. NIST's AI Risk Management Framework requires agent-specific audit trails that record identity, delegated authority, tool use, policy checks, and immutable evidence of each action. Generic cloud application logs don't satisfy that requirement.

For an SEO agent that drafts pages, modifies metadata, calls external APIs, and pushes content to a CMS, the audit trail needs to show who or what approved the action, what data the agent used, which tools it called, and what it changed. Cloud-native logging helps with retention, correlation, and access control. But NIST compliance requires the logs to be detailed enough to support audit and investigation, not just storage. Several cloud AI platforms are beginning to offer managed explainability features that approach this standard, but the organization still needs to define the schema, retention rules, and accountability chain. That work doesn't happen automatically by deploying to AWS or GCP.

Local deployments face a harder version of this problem: they must build the entire audit logging infrastructure from scratch. Most don't. That's a real compliance gap for agencies handling regulated client data.

So should you run your SEO agents locally or in the cloud?

Deployment location is a scheduling variable, not an architectural commitment. Teams that treat it as a permanent architectural decision get locked into a configuration that doesn't fit their workload distribution six months later.

Run analytical and privacy-sensitive workflows locally using Ollama with Llama 3 or Mistral, containerized with Docker so the same image can be promoted to cloud when scale demands it. Run monitoring, production pipelines, and anything requiring frontier-model reasoning on GCP or AWS using the OpenAI API or Anthropic Claude API. Use LangChain or LlamaIndex as the orchestration layer for both, because they abstract the model backend and let you swap between local and cloud through configuration changes, not code rewrites.

MCP changes the calculus by making the tool layer location-agnostic. Wire your Ahrefs API, Semrush API, Search Console, and crawl database connections through MCP once, and they work regardless of where the agent runtime lives. The deployment decision stops being about which environment can reach which tools and starts being about which environment fits the workload's cost, latency, and privacy profile.

Before deciding where to run your SEO agents, decide how they manage memory across multi-step tasks, how they handle tool-call failures, and how they maintain state in iterative reasoning loops. A well-orchestrated agent running Mistral locally on a GPU workstation will outperform a poorly-orchestrated agent running GPT-4o on AWS. Build the repair loops for tool-call failures, implement explicit memory management for long-context tasks, and instrument audit logging for every agent action before you optimize the server geography.

One position that won't change: SEO agents with write access to production CMS environments need a human review gate, regardless of deployment model. The OWASP and NIST risk guidance is clear that autonomous tool execution at this scope requires explicit guardrails. Any deployment architecture that removes that gate in the name of efficiency is trading a manageable operational risk for an unmanageable one. The audit trail requirement alone, per NIST, means every production write action needs a logged, attributed approval before it executes.

Sources

  1. Learn These Key Hurdles to Deploy Production AI Agents Efficiently , Google Research, 2024, Google Research.
  2. Building Effective Agents , Google Cloud, 2024, Google Cloud Blog.
  3. Agents , Anthropic, 2024, Anthropic Documentation.
  4. OpenAI Agents SDK , OpenAI, 2024, OpenAI Documentation.
  5. Model Context Protocol Specification , Anthropic, 2024, Model Context Protocol.
  6. NIST AI Risk Management Framework 1.0 , NIST, 2023, National Institute of Standards and Technology.
  7. Artificial Intelligence Risk Management Framework: Generative AI Profile , NIST, 2024, National Institute of Standards and Technology.
  8. Secure AI System Development, Deployment, and Operation , CISA, NSA, and partner agencies, 2024, Cybersecurity and Infrastructure Security Agency.
  9. OWASP Top 10 for Large Language Model Applications , OWASP Foundation, 2024, OWASP.
  10. The NIST Cybersecurity Framework 2.0 , NIST, 2024, National Institute of Standards and Technology.
  11. Kubernetes Documentation , Kubernetes Authors, 2024, Kubernetes.io.
  12. Docker Documentation , Docker, Inc., 2024, Docker Docs.
  13. OpenAPI Specification , OpenAPI Initiative, 2024, OpenAPI Initiative.
  14. RESTful Web Services: Getting Started , Richardson and Ruby, 2007, O'Reilly Media.
  15. Large Language Models as Optimizers , Shunyu Yao et al., 2023, arXiv.
  16. Toolformer: Language Models Can Teach Themselves to Use Tools , Timo Schick et al., 2023, arXiv.
  17. ReAct: Synergizing Reasoning and Acting in Language Models , Shunyu Yao et al., 2022, arXiv.
  18. Generative Agents: Interactive Simulacra of Human Behavior , Joon Sung Park et al., 2023, arXiv.
Arpad Balogh, author

Arpad Balogh

SEO PRACTITIONER

Arpad Balogh is an SEO strategist and the founder of Slothio and AI SEO Skills. Originally from Hungary, he has spent over a decade building SEO programs for small business owners, anchored on technical SEO, structured data, and keyword research. He is the author of 5 Things to Fix On Your Website for Better SEO (2022) and hosts the Small Biz SEO Tips podcast. AI SEO Skills is where he ships production-grade SEO playbooks for Claude, focused on what actually moves rankings, not marketing theater.