Open-Source Cold Email & Warmup Platform
Warmbly 是开源的冷邮件平台:温暖您的邮箱、发送活动、并对每条回复进行分流。可在我们的云端运行,也可自行托管整套系统。
AI 翻译
尚未收集仓库信息。
尚未检测到更新。GitHub 发布版本后会显示在这里。
Score how generic an AI-written landing page is, then rebuild it around the founder's own story.
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗Most landing pages written with AI look like each other: a purple gradient, a headline that starts with "Unlock", three feature cards with emoji, six different buttons, and nobody on the page.
Desloper reads your landing page, scores how generic it is, and shows you every finding. Then it hands you a prompt to paste into your own AI coding tool, so the fix happens in your codebase, on your stack.
91 F "🚀 The AI-Powered Platform to Supercharge Your Workflow and Unlock Your Team's Full Potential"
CTA 1.1 screens down · 20 emoji, 4 of them rockets · 12.7 screens tall on mobile
0 A the hand-made fixture
Both are test fixtures in lib/analyze/__fixtures__. The test suite checks that the sloppy page scores above 65 and the hand-made page below 35.
.md file.Scoring and the fix prompt both run on the same eight principles, written out in lib/doctrine.ts:
If you disagree with how a page is judged, change that file. The judge reads its instructions from it and the fix prompt quotes it, so the scoring and the instructions change together.
lib/ai.ts.@sparticuz/chromium on Vercel, regular Chromium locally. Every request the browser makes goes through a small egress proxy that refuses private and loopback addresses, including after redirects and DNS changes.yarn
npx playwright install chromium
cp .env.example .env.local # add AI_GATEWAY_API_KEY
yarn dev
AI_GATEWAY_API_KEY turns on the model judge. Without it, the detectors score the page alone. Without Supabase settings, reports are kept in memory and accounts are turned off.
To persist reports, create a Supabase project, fill in the Supabase variables in .env.local, then:
npx supabase link --project-ref <ref>
npx supabase db push --linked
The same capture, detectors, score and fix prompt run from a terminal, against any URL, localhost included:
bin/desloper analyze http://localhost:3000 # screenshots, findings, a detector-only score
bin/desloper finish <run-dir> --judgement j.json # blend in a judgement, write fix-prompt.md
bin/desloper doctrine # the eight principles
bin/desloper analyze readme # the README in this directory
A README is scored on six of the principles (no folds, buttons or fonts), plus four checks only Markdown can answer: no example, no install path, a badge wall and a template outline. Its fix prompt edits the README instead of a page.
--judge on analyze runs the model judge when AI_GATEWAY_API_KEY is set. Without it, a coding agent can write the judgement itself: skills/desloper/SKILL.md walks Claude Code through capturing the page, judging it against the doctrine, and applying the fix prompt in whatever repo it is working in. Install it for every repo with:
ln -s "$PWD/skills/desloper" ~/.claude/skills/desloper
The command line skips the egress proxy so it can read your own dev server. Keep it on your machine; the web app is the one meant for strangers' URLs.
yarn test # detectors, scoring, the fix prompt, the egress guard, persistence
yarn typecheck
yarn lint
CAPTURE_E2E=1 yarn test # also drives a real browser
app/page.tsx the whole flow, one staged screen
app/r/[id] a saved report, reopened on its results
app/api/analyze capture → detectors → judge, streamed as server-sent events
app/api/interview saves the optional answers for the report's author
lib/analyze/ capture, snapshot, egress guard, detectors, judge, score
lib/fix-prompt.ts builds the fix prompt, deterministically
lib/generate/ interview questions, request schemas
lib/doctrine.ts what a good page is
cli/desloper.ts the command line (bin/desloper runs it from any directory)
skills/desloper/ the Claude Code skill that drives it
supabase/migrations/ schema, row-level security, storage bucket