尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證100Questions
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗100Questions is a private, prepaid AI visibility audit. Benchmark v2 freezes exactly 25 shared questions and plans 100 provider answers across OpenAI, Claude, Gemini, and Grok with a shared web-search harness. It turns stored answer and citation evidence into up to five prioritized actions. Historical v1 runs keep their original frozen provider set and denominators.
The product is an API-grounded benchmark, not a claim of parity with the providers' consumer chat interfaces.
The complete methodology and operational decisions live in PLAN.md.
Requirements: Node.js 20.9 or newer, a Neon project with Managed Neon Auth, a Stripe test-mode account, and a Vercel project with AI Gateway enabled.
npm install
cp .env.example .env.local
npm run db:migrate
npm run dev
On Windows PowerShell, copy the environment file with Copy-Item .env.example .env.local.
npm run db:migrate above applies migrations to whichever database DATABASE_URL
points at, so it is only needed for local development. Deployments migrate
themselves — see Database migrations.
Vercel deployments authenticate to AI Gateway using Vercel OIDC. Local Gateway development may require vercel env pull or the local credentials documented by Vercel.
Production deployments apply pending migrations automatically. Vercel runs the
vercel-build script, which executes scripts/deploy-migrate.mjs before
next build:
DATABASE_URL fail deliberately rather than
skipping silently, because a silent skip is what lets drift reappear.DATABASE_URL is readable at build time, which surfaces
broken environment wiring before a production deploy depends on it.DATABASE_URL must therefore be present in the Vercel project's production
environment variables and exposed to the build step.
To add a migration, run npm run db:generate after changing
lib/db/schema.ts, commit the generated SQL in drizzle/, and let the deploy
apply it. Note that Drizzle's migrator tracks progress by timestamp: it applies
everything newer than the newest applied migration, so never edit or reorder a
migration that has already run in production.
Run notifications require a verified sender domain plus RESEND_API_KEY and
RUN_NOTIFICATION_FROM_EMAIL. If either value is missing, benchmark execution
continues normally and the notification step is skipped.
Provider jobs run in bounded batches. WORKFLOW_MAX_CONCURRENT_JOBS is capped
at the four configured providers. WORKFLOW_AI_CALL_DELAY_MS defaults to zero
and can add an incident-response cooldown without requiring a deploy. Per-run
duration, budget, credit, and cancellation guards still apply before new model
calls are scheduled.
Internal test accounts can bypass prepaid credits and per-user daily quotas by
setting UNLIMITED_ACCESS_USER_IDS to a comma-separated list of trusted Neon
Auth user IDs. This policy is evaluated only from the authenticated server
session. Unlimited runs still keep one active run at a time, workflow
accounting, and Gateway-level spending controls.
STRIPE_SECRET_KEY, STRIPE_PRICE_INTRO, STRIPE_PRICE_SINGLE, STRIPE_PRICE_THREE, and STRIPE_PRICE_TEN./api/stripe/webhook and set the resulting signing secret as STRIPE_WEBHOOK_SECRET: checkout.session.completed, checkout.session.expired, checkout.session.async_payment_succeeded, checkout.session.async_payment_failed, charge.refunded, charge.dispute.funds_withdrawn, and charge.dispute.funds_reinstated.The browser submits only a package key; the server maps it to a configured Stripe Price and versioned, immutable credit grant. The $9 introductory package is enforced by one durable per-user claim. Its complete Checkout request snapshot and resulting Session URL are reused across browser retries, while expired or failed Sessions advance that claim to a new attempt. Signed Checkout events grant 1, 3, or 10 credits, and each credit expires 12 months after purchase. Billing is fail-closed unless every package Price, webhook configuration, and an active Stripe Tax Registration are present. Full refunds revoke still-unspent purchased credits; dispute withdrawals freeze them and timely reinstatements restore exactly the frozen amount.
For local webhook testing:
stripe listen --forward-to localhost:3000/api/stripe/webhook
npm run lint
npm run typecheck
npm test
npm run build
Do not run a paid provider canary or a full fixed benchmark without deliberate approval. A run contains 25 shared questions and plans 100 provider answers (20 discovery and 5 diagnostic questions per provider). Internal cost ceilings remain enforced server-side. Results are directional: with only 25 questions, a rough worst-case sampling interval is about +/-20 percentage points, before accounting for question-set selection and provider variability. The pure metric and question-validation test suites do not make paid model calls.
Public search inventory is generated from lib/seo.ts and includes the home
page, a central resource library, research, guides, free tools, comparisons,
trust pages, the methodology, and the FAQ. Private authentication, dashboard,
run, workflow, and API URLs are excluded from the sitemap or marked noindex
at the page level.
For Google Search Console and Bing Webmaster Tools, set the production
GOOGLE_SITE_VERIFICATION and BING_SITE_VERIFICATION values supplied by the
respective ownership flows. The site also hosts an IndexNow ownership key at
the domain root so newly published or materially updated public URLs can be
submitted to participating search engines after deployment. Run
npm run indexnow:check to validate the hosted key and live sitemap without
submitting anything, or npm run indexnow:submit to submit the complete public
sitemap as one IndexNow batch. Run npm run discovery:validate to confirm that
the live raw HTML exposes the expected product, brand, offer, FAQ, and comparison
facts. .github/workflows/indexnow.yml runs that validation before submitting
the sitemap after a successful Vercel production deployment; preview deployments
are excluded.
The SaaS-specific schema decisions and intentionally inapplicable retail fields
are documented in AEO_GEO_IMPLEMENTATION.md.
NEON_AUTH_COOKIE_SECRET at least 32 random characters.CRON_SECRET for dispatch reconciliation.