Saleor Store
우리 컬렉션을 쇼핑하세요
한 번 클릭으로 eBay에 다량 상품 등록, AI가 설명 작성·옵션 자동 생성·수수료 반영 가격·브랜드명 검증
Bulk-list products on eBay in one click. AI listing copy, automatic variant building, pricing after eBay fees, and brand-name screening.
커머스TypeScript · CSSGitHub @SaaSPulseMedia온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Ebay-Autopilot — eBay Dropshipping Automation Suite for US sellers
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Run your eBay store on autopilot.
Listing is the job every eBay store owner hates: retyping the title into an 80-character box, filling 20+ item specifics, re-uploading photos, and building every size and color variant by hand — per product. It is the most commonly outsourced task in the business.
eBay AutoPilot replaces that work with one button. Select up to 50 products, press List selected, and the batch is written by AI, variant-expanded, brand-screened, priced after real eBay fees, and published. Repricing, stock sync, and automatic order ingestion are in progress.
Built with Next.js 16 (App Router), Drizzle ORM, and PostgreSQL.
| Area | Detail |
|---|---|
| Bulk listing | The core feature. Tick any number of products and publish the whole batch in one run — the same engine handles 1 or 200 |
| Variants | Size, color, and style options expanded into proper multi-variant listings, each row with its own SKU, price, and quantity |
| Research | Supplier catalog with cost, suggested eBay price, shipping, and net profit after eBay's 13.55% final value fee and $0.40 per-order fee |
| Listing defaults | Settings → Listing defaults (seller_settings table): pricing rule (suggested or own markup), ad rate, quantity per variant, handling time, description footer — applied to Bulk list, Paste links, and New listing. Every price has a "Why this price" fee breakdown (priceBreakdown in src/lib/pricing.ts) and money-losing items are never listed |
| Import | Paste up to 50 supplier links (/dashboard/import); each page is read for title, price, and image, priced at your markup, VeRO-screened, and listed with variants. Links to retailers/marketplaces (Amazon, Walmart, etc.) are refused because eBay does not allow filling orders from another retailer (src/lib/supplier-policy.ts) |
| AI copy | Claude drafts an 80-character title, bullets, description, and item specifics, with a deterministic template fallback |
| Publishing | Store connection over eBay OAuth is built (/api/ebay/connect → /api/ebay/callback, state-checked, tokens AES-256-GCM encrypted at rest and auto-refreshed). Publishing through the Sell/Inventory API is in progress — until then every listing falls back to demo mode and says so. Headless-Chromium fallback is scaffolded only |
| Plan limits | Active listings are the upgrade driver: 50 on Starter, 200 on Pro, 1,000 on Business. Batch size: 50 per run and up to 20 variants per product on every plan. Limits enforced server-side (non-ended listings counted, typed plan_limit_reached error) |
| Maintenance | Built: VeRO brand screening on every listing (src/lib/vero.ts); drip posting on Pro/Business — listings are scheduled and released up to 10 per account per hour by /api/cron/release, triggered hourly by .github/workflows/drip-release.yml (Vercel Hobby cron only runs daily). In progress: supplier re-checks, repricing rules, out-of-stock pause |
| Orders | Fulfillment queue with buyer details, supplier cost, and realized margin, feeding the analytics totals |
| Billing | Stripe Checkout with a demo fallback so the flow is clickable before live keys are added |
Every number shown in the product is computed from the data in that deployment. There are no placeholder metrics and no testimonials.
"use client" only for interactive formsjose JWT sessions + bcryptjs password hashing, HTTP-only cookiesnpm install
cp .env.example .env # fill in DATABASE_URL and AUTH_SECRET
npm run db:push # create tables
npm run db:seed # load the 24 starter products (example prices)
npm run dev
Open http://localhost:3000.
| Script | Purpose |
|---|---|
npm run dev | Development server |
npm run build | Production build |
npm run start | Serve the production build |
npm run typecheck | tsc --noEmit |
npm run lint | ESLint |
npm run db:push | Apply the Drizzle schema |
npm run db:seed | Load the 24 starter products (example prices) |
Required:
| Variable | Purpose |
|---|---|
DATABASE_URL | PostgreSQL connection string |
AUTH_SECRET | Signing key for session JWTs (openssl rand -base64 32) |
Optional — each has a working fallback:
| Variable | Purpose |
|---|---|
NEXT_PUBLIC_BASE_URL | Canonical site URL for metadata and Stripe redirects |
ANTHROPIC_API_KEY | Claude listing copy; falls back to the built-in template |
ANTHROPIC_MODEL | Override the Claude model |
STRIPE_SECRET_KEY | Live Stripe Checkout; falls back to demo checkout |
CRON_SECRET | Protects /api/cron/release (drip posting). Same value as the GitHub secret CRON_SECRET |
EBAY_CLIENT_ID / EBAY_CLIENT_SECRET | eBay keyset App ID and Cert ID |
EBAY_REDIRECT_URI | The RuName (eBay Redirect URL name) shown on the developer portal's User Tokens page — not a URL. Its auth accepted URL must be https://<your-domain>/api/ebay/callback |
EBAY_AUTH_ORIGIN | Optional. A second domain of this same deployment without "ebay" in it (e.g. https://autopilot-lister.vercel.app). eBay's sign-in settings reject privacy/accept URLs on a domain containing "ebay", so the RuName points there: privacy …/legal/privacy, accepted and declined …/api/ebay/callback. The seller is handed over with a 2-minute signed token and returned to NEXT_PUBLIC_BASE_URL |
TOKEN_ENCRYPTION_KEY | Optional. Key for encrypting stored eBay tokens; defaults to AUTH_SECRET. Changing it means sellers reconnect |
EBAY_SANDBOX | true to target eBay sandbox |
ENABLE_BROWSER_ENGINE / CHROMIUM_EXECUTABLE_PATH | Enable the headless-Chromium fallback (not implemented yet) |
This trips people up, so to be explicit:
| You (the operator), once | Your customers, ever | |
|---|---|---|
| eBay developer account | Yes — register one free app at developer.ebay.com | No. Never. |
eBay app keys (EBAY_CLIENT_ID / EBAY_CLIENT_SECRET) | Yes — paste into Vercel env vars | No |
| Redirect URI | Yes — set it to https://yourdomain.com/api/ebay/callback | No |
| Connecting a store | Not applicable | One click. Press Connect eBay store, approve on eBay's screen, done |
You register one eBay application for the whole product. Every customer then authorises your application against their own eBay account through eBay's standard permission screen — the same flow as "Sign in with Google". A customer never sees a key, a redirect URI, or any configuration, and they never type their eBay password into our site.
Until you add the eBay keys, the app runs every customer in demo mode: the full pipeline works and nothing is posted to eBay.
https://yourdomain.com/api/ebay/callback.EBAY_CLIENT_ID, EBAY_CLIENT_SECRET, and EBAY_REDIRECT_URI into your Vercel environment variables.AUTH_SECRET on the Configure Project screen before the first deploy.DATABASE_URL.vercel link && vercel env pull .env.production
DATABASE_URL="$(grep DATABASE_URL .env.production | cut -d= -f2-)" npx drizzle-kit push
DATABASE_URL="$(grep DATABASE_URL .env.production | cut -d= -f2-)" npm run db:seed
NEXT_PUBLIC_BASE_URL with your production URL and redeploy.Serverless function memory stays at the default 1024 MB — Chromium is not bundled in this release, so any "missing Chromium" warning is expected and safe to ignore.
No invented testimonials, no fabricated user counts, no superlative claims. Marketing figures are either generic
truthful statements or values computed at request time from the running deployment. CI fails the build if
unverifiable social-proof strings reappear in README.md, src/, or public/.
eBay AutoPilot is not affiliated with, endorsed by, or sponsored by eBay Inc.
MIT — see LICENSE.