粘贴 Google Maps 链接即可抓取商家名称、地址、电话、评价、照片和营业时间
Mapody — Next.js 后台模板
作者 agrosevakmak
Mapody 是一个基于 Next.js 的 SaaS 后台模板,可将 Google Maps 链接抓取为商家数据,经 AI 生成内容后发布为多页网站,并附带编辑器和分析面板。
看看你的网站会是什么样
浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。
全部页面与视图 2
截图用于了解视觉与布局,交互效果请以实际项目为准。
值得关注的模板亮点
从已有项目资料中,快速了解它的特点。
调用 OpenAI 生成页面改写、标语、FAQ、图片替代文本和评价情感分析
拖拽式多页编辑器,支持预设主题或自定义颜色、字体与样式
按站点统计页面浏览量、独立访客、来源和热门页面的分析面板
内置联系表单、积分系统、Stripe 升级入口和深色模式
邮箱密码与 GitHub OAuth 登录,含邮箱验证和密码重置
模板详细介绍
Mapody 是一个采用 Next.js App Router 与 TypeScript 构建的 SaaS 后台模板,核心流程是把 Google Maps 链接转换为可发布的网站。用户粘贴链接后,模板通过 Apify 抓取商家名称、地址、电话、评价、照片和营业时间,再调用 OpenAI 接口生成页面文案、标语、FAQ、图片替代文本和评价情感分析,随后在拖拽式多页编辑器中调整并一键发布到独立子域。
后台部分包含用户认证(邮箱密码与 GitHub OAuth、邮箱验证、密码重置)、按站点统计的页面浏览量、独立访客、来源和热门页面分析面板、内置联系表单、积分系统与 Stripe 升级入口,以及全局深色模式。数据层使用 PostgreSQL 配合 Prisma,文件上传走 AWS S3,邮件通过 Nodemailer 发送,状态管理使用 Zustand。
该模板依赖多个外部服务,需要自行准备数据库、Apify、OpenAI、AWS S3、SMTP 和 Google Maps Embed 的密钥;仓库采用 MIT 许可,但演示图片、字体、图标等第三方素材以及域名、托管、数据库、支付和 AI 调用等外部服务可能另行收费或受各自条款约束。
适合你的项目吗?
适用场景
- 为本地商家快速生成展示型网站并观察访问数据
- 作为 SaaS 后台模板,二次开发多租户站点发布与积分计费产品
- 学习 Next.js App Router 下抓取、AI 生成、编辑器和分析面板的组合方式
- 在演示环境中验证 Google Maps 抓取与 AI 内容生成流程
适合人群
- 需要现成 SaaS 后台骨架并愿意接入外部 API 的开发者
- 熟悉 Next.js、TypeScript、Prisma 和 PostgreSQL 的前端或全栈工程师
- 希望研究地图数据抓取与 AI 内容生成结合方式的技术团队
上手与定制指南
结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。
- 1
需要 Node.js 18+、PostgreSQL 数据库,以及 Apify、OpenAI、AWS S3、SMTP 和 Google Maps Embed 的密钥
- 2
克隆仓库后执行 npm install,在 .env.local 中配置 DATABASE_URL、NEXTAUTH_SECRET、NEXTAUTH_URL 等变量,可选配置 GitHub OAuth
- 3
运行 npx prisma db push 同步数据库结构,再执行 npm run dev 启动开发服务器
- 4
MIT 许可仅覆盖代码,演示图片、字体、图标等第三方素材及外部服务需单独核对许可与费用
授权与来源资料
使用条件与限制
免费使用 · 保留许可声明本次收录的是公开仓库中采用 MIT 许可的免费版本;免费范围为该版本代码,不代表外部服务或第三方素材免费。
使用时需要遵守
- 允许免费使用、修改、商用和分发该版本代码。
- 分发代码副本或实质性部分时,保留原作者版权声明和完整 MIT 许可声明。
- 代码按现状提供;担保与责任限制以原许可证及适用法律为准。
额外费用与待核对事项
- 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 MIT 许可判断。
- 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
- 使用 Google Maps 抓取功能需要自行注册 Apify 账号,属于外部服务依赖,可能产生费用。
- AI 内容生成功能需要自备 OpenAI API 密钥,调用按 OpenAI 计费,属于外部付费服务。
- 必须配置 Apify API Token 才能使用抓取功能,需在 Apify 平台注册并获取。
- 必须配置 OpenAI API Key 才能使用 AI 生成功能,需在 OpenAI 平台注册并获取。
- 文件上传功能依赖 AWS S3,需要自备 AWS 访问密钥并承担 S3 存储费用。
- 地图嵌入功能需要 Google Maps API Key,需在 Google Cloud 开通并可能产生费用。
- 邮件发送依赖自备 SMTP 服务,需要配置邮件服务器账号,可能产生费用。
- 积分系统设有免费额度上限,超出后需通过 Stripe 付费升级,属于付费升级限制。
- 需要自备 PostgreSQL 数据库,示例使用 Neon,属于外部服务依赖,可能产生费用。
查看原文依据
Permission is hereby granted, free of charge
许可证原文
- Apify account (for Google Maps scraping)
README 原文
- OpenAI API key (for AI content generation)
README 原文
APIFY_API_TOKEN=""
README 原文
OPENAI_API_KEY=""
README 原文
AWS_ACCESS_KEY_ID=""
README 原文
GOOGLE_MAPS_API_KEY=""
README 原文
SMTP_HOST=""
README 原文
- **Credit System** — Free tier with credit limits, upgradeable via Stripe
README 原文
https://github.com/agrosevakmak/Mapody/blob/main/LICENSEhttps://github.com/agrosevakmak/Mapody/blob/main/README.md- PostgreSQL database (e.g. [Neon](https://neon.tech/))
README 原文
DeepSeek 根据仓库许可证和 README 整理 ·2026-10-13。结果仅覆盖已读取资料,依赖、图片、字体及后续条款变更以各自原文为准。
项目核对记录与介绍依据
模板资料
- 来源平台
- GitHub
- 资料与维护参考分
- 资料较完整 · 85 / 100
- 技术栈
- Next.js · React
- 网站类型
- 后台 · SaaS
这个分数如何计算
本站按许可资料(最高30分)、演示链接(12分)、预览图(10分)、Star数(15分)、记录的维护时间(15分)、描述完整度(8分)、功能记录(5分)和分类资料(5分)计算。它不是代码、安全或性能测试,也不是 Google 评分;有链接不代表已实测可用。
这个项目需要核对什么
- 记录的仓库更新时间
- 2026-06-08
- 截图检查日期
- 2026-10-13
已收录演示链接。请用你的内容与屏幕尺寸检查;有演示不代表表单、认证或支付已经可用。
目录记录的主要技术栈是 Next.js。请通过依赖清单和锁文件核对实际版本与托管要求。这些说明基于收录资料,不代表代码审计或部署实测。
查看具体选型方法 →介绍的制作与核对状态
介绍由 AI 辅助整理目录与仓库资料。仓库作者不等于这篇介绍的审核者。
审核声明: [email protected] · 2026-10-13
查看当时使用的来源资料
SHA-256: 52be202c101458b004733a7cafe054f51570699a1ef591d8efd955fcf0a84c48
2026-10-13T09:28:13.071Z
来源文件 / 仓库# Mapody **Turn Google Maps links into beautiful websites in 60 seconds.** Paste a Google Maps link, and Mapody scrapes the business data, generates AI-powered content, and publishes a multi-page website with analytics, custom themes, and a contact form — all in one click. [](LICENSE) [](https://nextjs.org/) [](https://www.typescriptlang.org/) [](https://www.prisma.io/) [](https://tailwindcss.com/) [](https://www.postgresql.org/) --- ## Features - **Google Maps Scraping** — Paste any Google Maps link, extract business name, address, phone, reviews, photos, and hours - **AI Content Generation** — Auto-generate page rewrites, taglines, FAQs, alt text, and sentiment analysis - **Multi-Page Editor** — Drag-and-drop page manager with live preview - **Custom Themes** — Choose from preset themes or create your own with custom colors, fonts, and styles - **Analytics Dashboard** — Track page views, unique visitors, referrers, and top pages per site - **Contact Forms** — Built-in contact form on every published site with spam protection - **One-Click Publishing** — Deploy to a unique subdomain instantly - **User Authentication** — Email/password + GitHub OAuth, email verification, password reset - **Credit System** — Free tier with credit limits, upgradeable via Stripe - **Dark Mode** — Full dark mode support across the app ## Tech Stack | Category | Technology | |---|---| | **Framework** | [Next.js 15](https://nextjs.org/) (App Router) | | **Language** | [TypeScript 5](https://www.typescriptlang.org/) | | **Styling** | [Tailwind CSS 3](https://tailwindcss.com/) | | **Database** | [PostgreSQL](https://www.postgresql.org/) via [Neon](https://neon.tech/) | | **ORM** | [Prisma 6](https://www.prisma.io/) | | **Authentication** | [NextAuth.js](https://next-auth.js.org/) (JWT + Credentials + GitHub OAuth) | | **State Management** | [Zustand](https://zustand-demo.pmnd.rs/) | | **Email** | [Nodemailer](https://nodemailer.com/) | | **Web Scraping** | [Apify](https://www.apify.com/) (Google Maps scraper) | | **AI** | OpenAI API (content generation) | | **File Storage** | AWS S3 (via `@aws-sdk/client-s3`) | | **Deployment** | [Vercel](https://vercel.com/) | ## Getting Started ### Prerequisites - Node.js 18+ - PostgreSQL database (e.g. [Neon](https://neon.tech/)) - Apify account (for Google Maps scraping) - OpenAI API key (for AI content generation) ### Installation ```bash git clone https://github.com/agrosevakmak/Mapody.git cd Mapody npm install ``` ### Environment Variables Create a `.env.local` file: ```env # Database DATABASE_URL="postgresql://..." # Auth NEXTAUTH_SECRET="your-secret-here" NEXTAUTH_URL="http://localhost:3000" # GitHub OAuth (optional) GITHUB_CLIENT_ID="" GITHUB_CLIENT_SECRET="" # Apify (Google Maps scraping) APIFY_API_TOKEN="" # OpenAI (AI content generation) OPENAI_API_KEY="" # AWS S3 (file uploads) AWS_ACCESS_KEY_ID="" AWS_SECRET_ACCESS_KEY="" AWS_BUCKET_NAME="" AWS_REGION="" # SMTP (email delivery) SMTP_HOST="" SMTP_PORT="587" SMTP_USER="" SMTP_PASSWORD="" SMTP_FROM="[email protected]" # Google Maps Embed GOOGLE_MAPS_API_KEY="" ``` ### Setup ```bash # Run database migrations npx prisma db push # Start development server npm run dev ``` Open [http://localhost:3000](http://localhost:3000). ## Project Structure ``` Mapody/ ├── prisma/ # Database schema & migrations │ ├── schema.prisma │ └── migrations/ ├── public/ # Static assets ├── src/ │ ├── app/ # Next.js App Router pages │ │ ├── api/ # API routes │ │ │ ├── ai/ # AI endpoints (rewrite, tagline, faq, alttext, sentiment) │ │ │ ├── auth/ # Authentication (login, signup, forgot-password, verify) │ │ │ ├── sites/ # Site CRUD, pages, publish, duplicate │ │ │ ├── user/ # Profile, credits, theme, preferences │ │ │ ├── contact/ # Contact form handler │ │ │ ├── tracking/ # Analytics tracking │ │ │ ├── upload/ # File upload (S3) │ │ │ ├── scrape/ # Google Maps scraping proxy │ │ │ └── analytics/ # Analytics data endpoint │ │ ├── auth/ # Auth pages (login, signup, forgot-password, verify) │ │ ├── dashboard/ # User dashboard │ │ ├── editor/ # Site editor │ │ ├── preview/ # Site preview │ │ ├── analytics/ # Analytics dashboard │ │ ├── pricing/ # Pricing page │ │ ├── settings/ # User settings │ │ └── support/ # Support page │ ├── components/ # React components │ ├── lib/ # Utilities & services │ │ ├── ai.ts # OpenAI integration │ │ ├── apify.ts # Apify scraping client │ │ ├── auth.ts # NextAuth config │ │ ├── email.ts # Nodemailer email service │ │ ├── prisma.ts # Prisma client │ │ ├── s3.ts # AWS S3 uploads │ │ └── utils.ts # Shared utilities │ ├── middleware.ts # Rate limiting middleware │ ├── store/ # Zustand state management │ └── types/ # TypeScript declarations ├── .gitignore ├── LICENSE ├── next.config.mjs ├── package.json ├── tailwind.config.ts └── tsconfig.json ``` ## API Routes | Method | Endpoint | Description | |---|---|---| | POST | `/api/scrape` | Scrape Google Maps data from a URL | | POST | `/api/ai/rewrite` | Generate AI page content | | POST | `/api/ai/tagline` | Generate a business tagline | | POST | `/api/ai/faq` | Generate FAQ entries | | POST | `/api/ai/alttext` | Generate image alt text | | POST | `/api/ai/sentiment` | Analyze review sentiment | | GET/POST | `/api/sites` | List or create sites | | GET/PUT/DELETE | `/api/sites/[id]` | Manage a site | | POST | `/api/sites/[id]/publish` | Publish a site | | POST | `/api/sites/[id]/duplicate` | Duplicate a site | | GET/POST | `/api/sites/[id]/pages` | List or add pages | | PUT/DELETE | `/api/sites/[id]/pages/[pageId]` | Update or delete a page | | POST | `/api/contact` | Submit a contact form | | POST | `/api/tracking` | Record a page view | | POST | `/api/upload` | Upload a file to S3 | | GET/PUT | `/api/user/profile` | Get or update user profile | | GET/POST | `/api/user/credits` | Check or use credits | | PUT | `/api/user/theme` | Save user theme | | GET/PUT | `/api/user/preferences` | Get or update preferences | | POST | `/api/analytics` | Get analytics data | ## Security Features - **Rate Limiting** — Global middleware with per-route limits (scrape: 5/min, auth: 3/5min, AI: 20/min) - **Input Validation** — Zod schemas for all API inputs, HTML sanitization on user content - **Ownership Checks** — All site/page operations verify user ownership - **Atomic Operations** — Credit deduction uses raw SQL to prevent race conditions - **Secure Tokens** — OTP generation uses `crypto.randomInt()` instead of `Math.random()` - **Session Security** — JWT strategy with httpOnly cookies, CSRF protection ## Contributing Contributions are welcome! Please open an issue or submit a pull request. ## License This project is licensed under the [MIT License](LICENSE). --- Built with care by [agrosevakmak](https://github.com/agrosevakmak)
看看同类模板
对比同技术栈与用途的模板,找到更适合的视觉与内容结构。

Next.js SaaS Starter
Next.js SaaS Starter 是 Next.js 官方维护的 SaaS 起点模板,定位介于学习资源和可直接部署的脚手架之间。
Next.js · SaaS

SaaS-Boilerplate
🚀🎉📚 SaaS Boilerplate built with Next.js + Tailwind CSS + Shadcn UI + TypeScript. ⚡️ Full-stack React applic…
Next.js · SaaS

next-shadcn-dashboard-starter
Free, open source, AI-friendly admin dashboard template built with Next.js 16, shadcn/ui, Tailwind CSS, and Ty…
Next.js · 后台

create-t3-turbo
create-t3-turbo 是一个面向全栈 TypeScript 的 monorepo 起点,由 T3 OSS 维护,在 Vercel 模板目录中收录。
Next.js · 启动器

saas-starter-kit
🔥 Enterprise SaaS Starter Kit - Kickstart your enterprise app development with the Next.js SaaS boilerplate �…
Next.js · SaaS

Studio Admin · Radix UI
Modern Admin Dashboard Template built with Shadcn UI and Next.js 16
Next.js · 后台
