new-term-radar
Daily radar for new AI terms: names of new models, products and repos, caught on X, Hugging Face, GitHub and sitemaps before keyword tools list them.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗Autonomous LinkedIn content engine with a human-in-the-loop approval gate. Generates 2 posts bi-monthly (1st + 15th 8 AM PST by default), schedules approved posts for Tuesday 9 AM / Thursday 10 AM PST via Publer, and tracks performance from a branded dashboard.
[Cron 1st + 15th 8 AM PST] or [Generate Batch button]
↓
[Scrape patientpartner.com/resources] (Cheerio, lib/scraper.ts)
↓
[Claude web-search for fresh industry stats] (lib/stat-finder.ts)
↓
[Content engine picks 2 categories + formats] (lib/content-engine.ts)
↓
[Claude Opus 4.7 generates 2 posts with cached 5K voice prompt + Zod output]
↓
[Quality gates: compliance → self-review → plagiarism → UTM injection]
↓
[Render SVG → PNG (image) / PDF (carousel)] (lib/image-generator.ts)
↓
[Upload to Supabase Storage · insert posts row · audit log]
↓
[Slack: "N posts ready for review"]
↓
[Dashboard /queue — team reviews + approves (or rejects with feedback)]
↓
[Approve → Publer upload + schedule + job poll → status=scheduled]
↓
[LinkedIn publishes at Tue 9am / Thu 10am PST]
↓
[Daily weekday cron syncs insights from Publer → analytics charts]
↓
[Monthly 20th: evergreen scan recycles high-performers with new hook + visual]
| Surface | Tech |
|---|---|
| Frontend | Next.js 16 · Tailwind v4 · Manrope/Inter · Recharts · Sonner |
| Data | Supabase Postgres + Storage (post-assets public bucket) |
| Content | Claude Opus 4.7 · Zod · prompt caching (1h TTL on 5K voice prompt) · adaptive thinking |
| Rendering | @resvg/resvg-js (Rust SVG → PNG) · pdf-lib (carousel PDFs) |
| Publishing | Publer REST (Bearer-API auth · async 202+job_id polling · LinkedIn document carousels) |
| Deploy | Vercel Pro · cron · Password Protection · Edge Config |
/ — Dashboard home (stats, queue count, published count, recent activity)/queue — Approval queue with SWR polling, batch actions, schedule override, audit trail/calendar — Month view with status-color dots per day/history — Filterable table + CSV export/analytics — Trend charts, best/worst post, per-category breakdown/settings — Live integration status + manual controlsPOST /api/generate — orchestrator (manual or cron)GET /api/runs/[id] — poll a generation runGET /api/posts — list with filtersGET /api/posts/[id] — single post + audit trailPOST /api/posts/[id]/approve — approve + Publer schedulePOST /api/posts/[id]/reject — reject + kick off regeneratePOST /api/posts/[id]/regenerate — single-post regen with feedbackPATCH /api/posts/[id]/schedule — override scheduled_forPOST /api/posts/batch-approve — approve manyPOST /api/analytics/sync — pull Publer insights (cron)GET /api/analytics/summary — dashboard + analytics dataGET /api/analytics/calendar?month=YYYY-MM — calendar bucketed by dayGET /api/audit — recent action logPOST /api/scrape/resources — manual scrape triggerPOST /api/recycle/scan — evergreen recycle (cron, monthly 20th)POST /api/webhook/generate — external generate trigger (secured by WEBHOOK_SECRET)GET /api/health — env + Supabase sanity checksupabase/migrations/20260424000000_init.sql → Run.supabase/migrations/20260424_v2_scope.sql → Run.post-assets → Public → Save..env.local.PUBLER_API_KEY.PUBLER_WORKSPACE_ID.curl -H "Authorization: Bearer-API $PUBLER_API_KEY" -H "Publer-Workspace-Id: $PUBLER_WORKSPACE_ID" https://app.publer.com/api/v1/social_accounts — find LinkedIn company account → PUBLER_LINKEDIN_ACCOUNT_ID.ANTHROPIC_API_KEY.#social-media-agent) → copy URL → SLACK_WEBHOOK_URL.GOOGLE_CSE_API_KEY.GOOGLE_CSE_CX.openssl rand -hex 32 # paste into CRON_SECRET
Copy .env.local.example → .env.local and fill in:
# Supabase
NEXT_PUBLIC_SUPABASE_URL=
NEXT_PUBLIC_SUPABASE_ANON_KEY=
SUPABASE_SERVICE_ROLE_KEY=
# Publer
PUBLER_API_KEY=
PUBLER_WORKSPACE_ID=
PUBLER_LINKEDIN_ACCOUNT_ID=
# Anthropic
ANTHROPIC_API_KEY=
# Slack
SLACK_WEBHOOK_URL=
# Google CSE (optional — plagiarism check gracefully skips if unset)
GOOGLE_CSE_API_KEY=
GOOGLE_CSE_CX=
# Cron + webhooks
CRON_SECRET=
WEBHOOK_SECRET=
# Cadence
GENERATION_RUN_DAYS=1,15
# CADENCE_LABEL="1st and 15th"
# App
NEXT_PUBLIC_APP_URL=http://localhost:3000
# Dev safety — when true, approve stops before Publer API call
DEV_MODE=true
npm install
npm run dev # first cold compile is slow (~2-5 min on Next.js 16 + Tailwind v4)
Open http://localhost:3000.
apps/patientpartner-social-agent..env.local. Mark SUPABASE_SERVICE_ROLE_KEY, ANTHROPIC_API_KEY, PUBLER_API_KEY, SLACK_WEBHOOK_URL, CRON_SECRET, WEBHOOK_SECRET, GOOGLE_CSE_API_KEY as Sensitive.DEV_MODE in prod (or set to false).vercel.json registers the 3 crons automatically:
/api/generate · 0 16 1,15 * * (1st + 15th at 8 AM PST)/api/analytics/sync · 0 18 * * 1-5 (weekdays 10 AM PST)/api/recycle/scan · 0 16 20 * * (20th at 8 AM PST)DEV_MODE=true in .env.local:
status=scheduled with publer_post_id=dev_mode_skipped.skipped: "dev_mode".Useful for local/preview testing without touching real LinkedIn.
lib/approved-stats.ts — 34 approved stats with sources. Claude must pull from this list — never invent numbers.lib/constants.ts::VOICE_SYSTEM_PROMPT — 5K-token deterministic prompt with George Kramb's voice, banned vocabulary, anti-AI writing rules, positioning angles, and competitive wedges. Cached 1h TTL on every generation call.lib/compliance-checker.ts) — PHI, off-label claims, fabricated testimonials → auto-block.lib/claude.ts::reviewPost) — originality score 0-100; <60 triggers one rewrite.lib/plagiarism-checker.ts) — Google-searches 5 unique sentences, flags external matches.patientpartner.com link gets ?utm_source=linkedin&utm_medium=social&utm_campaign=....Two migrations in supabase/migrations/:
20260424000000_init.sql — posts, generation_runs, content_sources, external_stats + enums + indexes.20260424_v2_scope.sql — audit_log, social_accounts, quality-gate columns, recycling columns.See the spec at the end of brand/ for full rationale.
lib/ — all business logic (Publer client, Claude client, image generator, compliance, plagiarism, UTM, audit, recycle, scheduler, Slack, storage, scraper, content engine).app/ — pages (6) + API routes (17).components/ — 13 React components, all client-side where interactivity matters.supabase/migrations/ — SQL.templates/ — empty; reserved for future HTML-template extension.brand/ — voice profile, positioning, audience, design tokens, approved stats, image skill.scripts/smoke-images.mjs — standalone PNG render test that bypasses the Next.js build.