Writesonic today is mainly an AI-visibility tracker: it asks ChatGPT, Gemini and Google's AI answers a fixed set of buyer questions every day and charts how often your brand comes up next to competitors. The DIY version is a scheduled job that sends those questions to the OpenAI, Gemini and Perplexity APIs with web search switched on, counts brand mentions and cited domains, and draws the trend; an agent writes it in a sitting. The catch, which Writesonic itself points out, is that API answers differ from what people see in the ChatGPT app or on Google, and capturing those means scraping the real interfaces from many locations. That part is the hard, paid one.
Before you buildWritesonic has a trial but no free plan. For a one-off snapshot, asking ChatGPT and Gemini your ten most important questions by hand costs nothing.
Build me an AI-search visibility tracker to replace Writesonic for my own brand. Requirements: - Node.js 22 + TypeScript CLI run by cron (weekly by default, daily optional); history in better-sqlite3 at ./data/geo.db and a static report at ./report/index.html after each run. - Config in ./geo.yaml: my brand, my domains, up to 5 competitors with name aliases, and up to 50 buyer-style questions grouped by topic. - Each run asks every question to each engine whose key is in .env: the OpenAI Responses API with the web_search tool, Gemini with Google Search grounding, and Perplexity's Sonar API. - Store the full answer and every cited URL. Detect each brand by case-insensitive alias match on word boundaries, record the position of its first mention, and note whether one of my domains is cited. - Report: visibility (share of answers that mention each brand) per engine, share of voice, a 90-day trend chart with Chart.js, the most-cited domains, and the questions where a competitor appears and I don't. - Cost guard: print the number of API calls before each run and stop if it exceeds MAX_CALLS from .env. - No accounts, no telemetry, local-first. - Out of scope: scraping chatgpt.com or Google result pages, AI search volume estimates and ads monitoring. - README: an honest note that API answers differ from what people see in the ChatGPT app and on Google, plus the cost of one run per engine.
Opens your agent with the prompt filled in, you press enter. Or copy it and paste it into an empty folder.
The first prompt builds the core. Run these one at a time in the same folder to grow it into your own Writesonic.
Add an article drafter to the visibility tracker in this folder. Requirements: - For any question where competitors are mentioned and I am not, build a brief: the question, the sources the engines cited, and the points those pages make. - Draft a Markdown article from the brief with the model in .env, in the voice described in ./voice.md, citing the sources it used. - Save drafts to ./drafts/<date>-<slug>.md with front matter (title, description, target question). Never publish anything. - Flag every sentence the model could not back with a source. - Update the README.
Add AI-crawler stats to the visibility tracker in this folder. Requirements: - Parse nginx or Apache access logs (path in .env), including gzip-rotated files. - Count requests per day from GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-User, PerplexityBot and Perplexity-User. - Before counting, check that requests claiming to be these bots come from the IP ranges their operators publish, so spoofed user agents don't count. - Add a report section: requests per bot per day and the 20 most-read URLs. - Update the README.
Add alerts to the visibility tracker in this folder. Requirements: - After each run, compare every question and engine with the previous run. - Alert when my brand disappears from an answer it was in, when a new competitor appears, or when one of my domains stops being cited. - Send one email per run through Resend (RESEND_API_KEY and my address in .env), only when something changed; --dry-run prints it instead. - Update the README.
Marketing teams need a number for a channel that barely existed two years ago, and Writesonic gives them one, with competitor benchmarks, sentiment and a to-do list in the same dashboard. Agencies pay because a single tool covers tracking, audits and the articles meant to close the gaps, and because data from the consumer interfaces is hard to collect on their own.
Estimate · OpenAI charges $10 per 1,000 web-search calls plus tokens, and Perplexity Sonar from $5 per 1,000 requests plus tokens. Fifty questions on three engines comes to about a dollar a run: a few dollars a month weekly, around $30 daily.
| Plan | Monthly | Annual, per month | What you get |
|---|---|---|---|
| Starter | $99 | $79 | 1 user, 1 project; 50 prompts tracked daily on ChatGPT, Gemini and Google AI Overviews; 15 AI articles and 10 site audits (100 pages each) a month; 10 trial agent runs. |
| Basic | $249 | $199 | 2 users, 1 project; 100 prompts and 300 answers tracked daily; 25 articles and 20 audits (1,200 pages each) a month. |
| Growth | $499 | $399 | 3 users, 2 projects; 200 prompts and 600 answers tracked daily; sentiment analysis and a trial of the Action Center; 50 articles and 50 audits (2,500 pages each). |
| Enterprise | custom | — | All 8 AI platforms, including Perplexity, Claude, Copilot and Google AI Mode; custom prompts, markets and users; full Action Center; SSO. |
Kinda. The core is a weekend build with the prompt on this page, but real gaps remain: Answers captured from the real ChatGPT, Gemini and Google AI interfaces, per country, Estimated search volume for AI prompts.
About $99 a month on the Starter plan, $1,188 a year (checked 2026-10-13).
Answers captured from the real ChatGPT, Gemini and Google AI interfaces, per country; Estimated search volume for AI prompts; Monitoring of ads inside ChatGPT and Google's AI answers; The Action Center's ranked fixes and the site audits; The built-in article writer with WordPress publishing. If any of those matter to you, keep paying.
Yes: Elmo (open source), Limelit Open (open source), GeoReady GEO Optimizer (open source).