封面

Frey Chu · 88 分钟 · 发布 2025-02-27 · 3.1万次观看(截至抓取) · 观看原视频

主旨

用一条完整实操链路,把一个全美「狗公园」niche 从选题验证一路做成上线的 directory 站:Ahrefs 选词 → Outscraper 抓 Google Maps → 清洗富化数据 → WordPress(Elementor + JetEngine)建三级页面 → 靠 display ads 被动变现。

核心论点

  1. 一个 directory 押一个中心词,靠 topical authority 整站超越标杆站——先在 Ahrefs 找到一个高流量、反链不吓人的 Bounty 竞品 作为要超越的靶子。(→ 详解1)
  2. 页面形态定生死:选 支柱页(一城一长列表),不做「一园一页」——因为流量几乎全落在城市页,单个园子页只有个位数访问。(→ 详解2)
  3. 数据富化 才是 directory 的护城河——Outscraper 给的是「你需要知道的信息」,富化补的是「用户想知道的信息」(有没有水、袋子、遮阴),这才比 Google Maps 更有用。(→ 详解5)
  4. 数据先建模再导入:post type + meta field + 层级 taxonomy 是批量导入的地基——字段名必须和 CSV 列名逐一对齐,否则映射全乱。(→ 详解6)
  5. 三级导航(州→城市→城市详情)靠 query + glossary + dynamic visibility 三件套拼出来——JetEngine 的组合拳,不是现成模板。(→ 详解7)
  6. 变现选 展示广告变现——常青、位置型、纯被动,是这类站最省心的收入模型。(→ 详解1)

知识点详解

1. 选 niche 与需求验证 01:45

选题用的是 near me 选词法:在 Ahrefs 里搜「near me」,翻到第 10 页往后捞低竞争词,锁定「dog parks near me」作为整站的一个中心词,再把「dog beach」「off-leash dog park」等长尾词当作要一并拿下的目标词。

验证竞品时找一个 Bounty 竞品:一个反链不算强、却拿到月 4.1 万访问的 dog park finder,证明这个 niche 天花板够高又不难打。再去 Reddit 读帖做 sentiment analysis,确认「人们确实找狗公园找得费劲」这个真实问题存在——没有一个扎实要解决的问题,directory 很难做起来。

变现在选题阶段就定了调:位置型常青 niche 走 展示广告变现,是最被动的收入模型。变现方式反过来决定站的形态。

2. 页面形态:支柱页 vs 一园一页 04:34

核心架构决策是选 支柱页:每个城市一个长页面,把该城所有狗公园平铺成一份可滚动的目录,而不是给每个狗公园单独建一个 listing 页。

依据来自竞品流量拆解 07:00:bring fido 的单个园子页(Laurel Canyon)月访问只有 6,城市页(dog parks Las Vegas)却有 500。因为用户搜的是「dog parks Las Vegas」而不是某个具体园名,流量几乎全落在城市页。

再叠加一层考量:5000+ 个独立 listing 页容易被 Google 判为 thin content(低流量页拖累)。所以主动收敛成支柱页,只优化人们真正会搜的城市级 query。

3. 建站底座:主机 · 域名 · WordPress · 技术栈 08:24

主机选 Hostinger 的 managed WordPress,因为目标是高流量 niche,直接上支持 10 万月访问的 business plan(赞助植入,含 SSL、每日备份、免费域名)。域名在面板里一键 claim 一个免费的 dogparks.org。

装 WordPress 是傻瓜式的 10:33:选 blank site、绑定域名,装完必须把域名 connect 到主机面板,否则 Google 抓不到。

技术栈全景:Elementor Pro(主题/页面)、WP All Import(批量导入)、JetEngine + JetThemeCore(自定义数据结构与主题模板)、W3 Total Cache(存不上时清缓存)、UpdraftPlus(备份)。JetThemeCore 是因为 Elementor 原生 theme builder 有坑才补上的,可选。

4. 抓数据:Outscraper + Google Maps 类目 11:18

用 Outscraper 的 Google Maps scraper 抓全美狗公园。关键技巧 11:55:先在 Google Maps 确认「dog park」有独立的 Google category,抓取时打开 exact match 只按类目抓,数据量小且干净;没有独立类目就退回 plain queries,量大、清洗更累但也能用。

参数只勾有用的列:name、website、phone、full address、city、state、postal code、working hours、business status。其中 location link 必勾——后面自动化富化就是靠它回访每条评论。

关于抓照片的合规:博主只抓不用,因为有变现意图就属商用、踩 Google TOS,他打算日后靠 UGC 拿用户上传的免版权图。最终约 6000 条狗公园,实际约 2 小时抓完。

5. 清洗与数据富化 16:50

清洗按列逐步 whittle down:先按 business status 删掉永久/临时关闭的(约 300 行),再删无地址、无评论的(一次删 643 行)。一个 SEO 小技巧 19:15:很多园子都叫「dog park」重名,用 CONCATENATE 拼成「dog park in Overland Park」,既做城市级去重、又天然带城市关键词。

数据富化 是整套里最关键的一步 21:07。先从三处挖「用户在意什么」:Google Maps 评论标签、Reddit 讨论、Ahrefs 关键词,汇总出约 15 个富化属性(遮阴、水、袋子、长椅…)。再用一个自建工具(付费,与朋友 Min 合建)批量回访 location link 的评论,给每条返回 true / false / not enough info。

拿到属性后再上一层:用 GPT for Sheets 调 Claude,基于这些评论文本给每个园子生成 3 句独特的 listing 描述 26:32——独特描述能多命中关键词、利于 on-page SEO,又不会撞成 duplicate content。另用 ChatGPT 把「一整列营业时间」拆成每天一列,便于后面单独字段展示。

6. WordPress 数据建模与批量导入 32:58

先想清导航结构:州页 → 城市页 → 城市详情页。据此在 JetEngine 建一个 post type「dog parks」,打开 hierarchical。再建 27 个 meta field 装所有信息。

富化属性这类只有真/假的字段,要把 field type 设成 radio 36:07,用 true::has shade / false::no shade 定义值与展示标签。铁律:每个 meta field 的 name ID 必须和 CSV 列名一字不差,否则后面映射会错。存不上就用 W3 Total Cache 清缓存再存。

再建 taxonomy「states」40:18,连到 dog parks post type、打开 hierarchical:父级=州、子级=城市。地基齐了才用 WP All Import 批量导入 43:28:先小批量试跑,再上约 4800 条。映射时 44:04 把 park name 拖到 title、27 个 custom field 逐一对齐、taxonomy 选「手动设计层级」把 state 拖成父、city 拖成子,并存成模板便于出错重跑。导入前务必把州名统一(AL 和 Alabama 会被当成两个州)。

7. 三级页面:query + glossary + dynamic visibility 53:45

三级页面全靠 JetEngine 三件套拼。state 页:用 terms listing 展示 taxonomy,但默认会把城市也列出来;解法是建一个 terms query,把 parent 设成 0 只取顶层(州),再在 listing grid 上开 custom query 指向它。

城市详情页的 listing:标题、地址、每天营业时间都用 Elementor 的 dynamic field 拉 meta 数据。富化属性直接拉会显示数据库里的「true」,解法是建 glossary 60:39——glossary 名对齐 meta field 名,值 true 映射标签 has shade(大小写要和 CSV 一致),再在字段输出用「get labels by glossary」回调。「Get directions」按钮的 URL 用 custom field 拉 Google Maps link。

把三级串起来 73:24:建 cities query(child of 设成 queried term),在同一个 archive 模板里同时放「城市列表」和「园子列表」两个 grid,再用 Dynamic Visibility 控制——查询有 cities 就显示城市列表、隐藏园子列表;点进具体城市(无 cities)才显示园子列表。archive title 加「dog parks in 」前缀作为 H1。slug 在 taxonomy 的 rewrite slug 改成 dog parks,改完去 Permalinks 重存一次修复断链——permalink 结构一定要开局就定,后改会断页

8. 收尾:设计、E-E-A-T 与提交索引 83:00

首页 on-page 讲究层级:H1 是主词「dog parks near me」,H2「dog parks in popular cities」放 top 15 城市入口,H3 放富化特性,FAQ 直接抄 Ahrefs 的 questions 面板。背景图用 Pexels 免版权。

单独做一个 About us 页,讲自己养狗的小故事——不是 SEO play,而是让站显得有真人在背后,是一层 E-E-A-T 信号。

上线动作 87:13:注册 Google Analytics + Search Console、提交 sitemap 催 Google 索引。列出的待办改进:内部链接(自认卡点)、目录 TOC(移动端、某些城市 30+ 园子)、可点击地图、用户上传图片与评论区(UGC + SEO 信号)。

可执行步骤

  • 选一个位置型常青 niche:在 Ahrefs 搜「near me」,翻后几页捞低竞争中心词,再挑一个反链不强但流量高的 Bounty 竞品作靶子。
  • 去 Reddit 读帖确认这个 niche 存在一个真实、反复被抱怨的问题。
  • 拆竞品流量:确认「聚合页(城市级)」流量远大于「单条 listing 页」,据此决定用支柱页而非一园一页。
  • 抓数据前先在 Google Maps 查目标是否有独立 category;有就开 exact match 抓,勾上 location link 列。
  • 清洗:删关闭/无地址/无评论行,用 CONCATENATE 给重名条目拼上城市名去重。
  • 富化:从 Google Maps 评论标签 + Reddit + Ahrefs 汇总用户在意的属性,批量给每条打 true/false,再用 AI 生成独特 listing 描述。
  • 建站按顺序:post type(hierarchical)→ meta field(name ID 严格对齐 CSV 列名,布尔字段用 radio)→ 层级 taxonomy → 小批量试导 → 全量导入。
  • 三级页面用 terms query 分离父/子级、glossary 翻译布尔标签、Dynamic Visibility 控制同页显隐。
  • 开局就定好 permalink/slug 结构,别等有内容了再改。
  • 上线:配 GA + Search Console,提交 sitemap。

关联

  • 补充:内容变现三阶段打法 讲的是内容创作者的 affiliate→邮件→课程叠加;本片是另一条变现路线——位置型 directory 靠 display ads 被动收租,两者是不同业态的变现打法。
  • 张力:2026 无 SEO 依赖的创业策略 警告 AI Overview 让排名与点击解耦、纯 SEO 流量风险上升;本片整套打法完全押注 Google 自然点击(靠城市页排名),正是那篇提示的风险敞口。

术语

  • pillar page(支柱页):把一类内容平铺进一个长页面,而非拆成大量独立小页
  • Bounty(靶标竞品):要整站超越的那个高流量标杆站
  • topical authority(主题权威):靠覆盖某主题的广度与深度,让整站在该主题下更易排名
  • data enrichment(数据富化):给原始数据补充「用户想知道」的属性,拉开与原始来源的价值差
  • meta field(元字段):post type 上自定义的结构化字段
  • taxonomy(分类法):对内容分类组织的层级结构(此处父=州、子=城市)
  • radio field(单选字段):只能选一个的字段类型,用于布尔属性
  • glossary(词表映射):JetEngine 里把存储值翻译成前端展示标签的映射表
  • Dynamic Visibility(动态显隐):按查询条件控制元素显示或隐藏
  • display ads(展示广告):按展示/点击付费的被动广告变现

金句

data enrichment is all about the information that people want to know → 原始抓取给的是「你需要知道」的信息(名称、地址),富化补的是「用户想知道」的信息(有没有水、遮阴)——后者才是 directory 相对 Google Maps 的价值差。

you want a main website that you want to outrank → 选 niche 先找一个要超越的靶子;有明确 Bounty 竞品,才知道天花板在哪、值不值得打。

立场与利益

Frey Chu 自己卖 directory 相关产品:片中反复导流自建社区「ship your directory」(2025 年 4 月推付费版),整片本质是其 directory 打法的内容营销。

本视频与 Hostinger 官方合作(赞助),给专属 10% off 优惠码,主机推荐带利益。富化工具是他与朋友 Min 合建的付费产品,给免费额度后需付费——属自家工具导流。其余 Ahrefs、Outscraper、GPT for Sheets、Elementor Pro、JetEngine 等均以 affiliate 链接放在 description。

可与工具解绑的通用共识:near me 选词、Bounty 竞品验证、支柱页 vs 一园一页的流量逻辑、「需要知道 vs 想知道」的富化框架、permalink 开局定死——这些换任何栈都成立。强绑定的是具体工具链(Outscraper / JetEngine / 那个自建富化工具),可替换。

价值定位

  • 适合谁:想照着从零建第一个 niche directory 站的 solo builder,尤其偏好位置型(近我搜索)、打算靠 display ads 被动变现的人。
  • 解决什么:给出一条端到端可跟做的链路——从选题验证、抓数据、清洗富化,到 WordPress 三级页面搭建与上线,填平「知道要做 directory 但不知每步怎么落地」的空档。
  • 认知 vs 实操:以实操为主(大量 JetEngine/WP All Import 具体点击步骤),但选题、页面形态、富化三处是可迁移的认知框架,换栈仍成立。
  • 与 内容变现三阶段打法 重叠于「niche 变现」话题,但本片独有的是 directory 这一业态的完整技术实现与 display ads 被动变现路径。

自检问题

  1. 为什么选支柱页(一城一长列表)而不是给每个狗公园单独建页? 答案:因为流量几乎全落在城市级 query(如 dog parks Las Vegas),单个园子页只有个位数访问,且 5000+ 独立低流量页易被判 thin content。见详解2 07:00
  2. 「数据富化」补的是什么信息,凭什么说它是护城河? 答案:Outscraper 给的是「用户需要知道」的名称地址,富化补的是「用户想知道」的属性(水、袋子、遮阴),这才让站比 Google Maps 更有用。见详解5 21:07
  3. 批量导入前,meta field 有哪条铁律?为什么? 答案:每个 meta field 的 name ID 必须和 CSV 列名一字不差,否则 WP All Import 映射会错乱。见详解6 36:07
  4. 州页为什么会误列出城市,怎么修? 答案:terms listing 默认连子级一起列;建 terms query 把 parent 设成 0 只取顶层(州),再在 listing grid 上开 custom query 指向它。见详解7 53:45
  5. 为什么强调 permalink 结构要开局就定? 答案:上线后再改 slug 会导致页面断链,得去 Permalinks 重存修复;开局定好可避免返工。见详解7 73:24

💬 热门评论 top-17 主 + 3 回(抓取 2026-07-07)

[1] 📌 @FreyChu(UP):需要改进的地方很多,但我会先放一个月,看看它开始排哪些关键词(已经索引了300页)。享受吧❤ 👍 26   ↪ @daniel.mcleay:你能做个后续视频吗? 👍 5 [3] @ajsommer5:我看了你的网站,有几个建议:添加一个城市/州的搜索框,避免滚动;添加一个显示附近区域的按钮(尤其是对于选择有限的乡村城市);添加关键词搜索,直接跳转到当地狗公园。我觉得你为带宠物旅行的狗主人和寻找特定地点属性的当地人创造了真正的价值。链接到当地宠物店、宠物急诊或兽医护理会是一个加分项——也可能让你获得互惠的反向链接机会。 👍 6 [4] @baconbigbeats:超棒的视频!专业提示:在构建过程中禁用缓存插件,这样保存时就不会出现奇怪的问题。😊 👍 4 [6] @tpj8269:很想看到后续分析,随着你开始获得更多流量、改进SEO和变现。很棒的内容。 👍 1 [7] @TaulantLucaBalla:我觉得如果你做一个后续视频,涵盖以下内容会很好:1. 你构建网站的设计方面;2. SEO方面——如何确保每个页面通过SEO,如何检查排名?3. 如何变现?4. 如何监控?5. 如何更新过时的狗公园信息? 👍 7   ↪ @FreyChu(UP):肯定会分享更新/我做的所有SEO优化。这个网站还有很多事要做……我觉得页面内优化大概完成了60%。可能会在免费社区分享更新! 👍 5 [8] @ViralityPro:值得注意的是——如果你的目录较小,不一定需要批量删除;点击页面顶部的屏幕选项,你可以选择一次显示多少项(最多999项)。 👍 1 [10] @maryvh5823:很棒的教程视频,谢谢Frey,价值满满!在你的狗公园列表中,点击蓝色导航按钮时,一个小小的改进是设置在新标签页打开,这样你的网站保持打开。在你的狗公园文章下显示其他城市的可能解决方案是在列表网格中显示相关文章,如果你设置文章关联,或者你可以在列表网格中做自定义文章查询,通过slug显示州或城市。另外,对于你的slug/URL州城市问题,你可以通过调整WordPress固定链接结构来包含父级分类来解决,是的,最佳实践总是在创建文章之前就规划好固定链接结构👍🏽 对于你未来的地图部分,不需要额外插件,JetEngine有一个地图列表功能你可以开启。希望有帮助!点赞订阅了🙌🏽 [12] @maryvh5823:很棒的教程视频,谢谢Frey,价值满满!在你的狗公园列表中,点击蓝色导航按钮时,一个小小的改进是设置在新标签页打开,这样你的网站保持打开。在你的狗公园文章下显示其他城市的可能解决方案是在列表网格中显示相关文章,如果你设置文章关联,或者你可以在列表网格中做自定义文章查询,通过slug显示州或城市。希望有帮助!点赞订阅了🙌🏽 [13] @Manuela-md3pt:那Google AdSense呢?你如何变现这个目录? 👍 3 [14] @girlwithstrangename:Frey,这超级有用。谢谢!但对于完全的新手来说,信息量很大。你能分享一个视频,用更小的样本量和更简单的细节,甚至是一个模拟目录吗?谢谢你提供这么有信息量的视频。 [15] @elliotwalker96:感谢这么全面的指南。我特别欣赏JetEngine设置的讲解,因为第一眼看到它真的很吓人。做得好,祝排名顺利! 👍 3 ——其他 6 条:感谢/夸赞([2]@MinhNguyen-wd2wc、[5]@franks69、[9]@CaseSolversClub、[11]@farhan-app、[16]@lana-miro、[17]@compostreviewer)

英文原文[1] @FreyChu(UP):Lots of improvements need to be made, but for now I’ll let this sit for an about a month to see what keywords it starts to rank for (300 pages have already indexed). Enjoy ❤ 👍 26
  ↪ @daniel.mcleay:Can you do a follow up video ? 👍 5
[2] @MinhNguyen-wd2wc:Holy 1.5 hours?! Frey you're spoiling us! Thanks for taking this through to the finish line my man! 👍 17
[3] @ajsommer5:I looked at your site and have a few suggestions: A search box for city, state to skip the scroll; a button to show near by areas (especially for more rural cities with limited options); a key word search to jump directly to the local dog park. I think you have created real value for dog owners who take their pets while traveling as well as locals seeking specific location attributes. Links to local pet stores, pet ERs or vet care would be a bonus - and also might benefit you with reciprocal back link offers. 👍 6
[4] @baconbigbeats:Amazing vid! Pro tip: disable your cache plugin during the build and you won’t have weirdness happen with saving. 😊 👍 4
[5] @franks69:no way you're showing this for freeee! thank you so so much for the tutorial! 👍 4
[6] @tpj8269:Would love to see follow ups with analytics as you start to get more traffic, improve the seo, and monetize. Awesome content. 👍 1
[7] @TaulantLucaBalla:I think it would be great if you make a follow up video where you go over: 1. the design aspect of how you built the site 2. the seo aspect - how do you make sure each page is passing seo, how do you check rankings? 3. How do you monetize? 4. How do you monitor? 5. How do you update outdated dog park info? 👍 7
  ↪ @FreyChu(UP):Definitely will be sharing updates/all the SEO optimizations I make. Lots to do with this site...I'd say it's 60% there in terms of on-page. Will likely share updates in the free community! 👍 5
[8] @ViralityPro:Something worth noting - if you have a smaller directory you don't strictly need bulk delete, if you click on screen options at the top of the page you can choose how many items to display at a time (up to 999) 👍 1
[9] @CaseSolversClub:I found you on Greg’s channel and now you have a new stalker 😂 I am gonna binge watch your videos right now. Excited to make my first directory! 👍 6
  ↪ @Sickdrummermagazine:Same :)
[10] @maryvh5823:Great video tutorial, thanks Frey, so much value! Such a small thing in your dog park listings when you click blue directions button maybe set to open in new tab so your site stays open. Possible solution to display other cities under your dog parks posts is to display related posts in a listing grid, if you set post relations or you can do a custom post query in your listing grid to display the state or city by slug. Also for your slug/ url state city issue, you can fix that by adjusting your Wordpress permalink structure to include the parent-taxonomy, and yes best practice is always to structure your permalinks before you create posts 👍🏽 For your future map section no need for extra plugin, jetengine has a map listing feature you can turn on. Hope that might help! Liked and subscribed 🙌🏽
[11] @farhan-app:Can't believe I just came across this channel! Got loads of ideas for my WP journey...awesome stuff - subscribed!
[12] @maryvh5823:Great video tutorial, thanks Frey, so much value! Such a small thing in your dog park listings when you click blue directions button maybe set to open in new tab so your site stays open. Possible solution to display other cities under your dog parks posts is to display related posts in a listing grid, if you set post relations or you can do a custom post query in your listing grid to display the state or city by slug. Hope that might help! Liked and subscribed 🙌🏽
[13] @Manuela-md3pt:and for google adsense? how do you monetize this directory? 👍 3
[14] @girlwithstrangename:Frey, this is super helpful. Thank you! But for a complete beginner, it's a lot to digest. Is there a video you can share, where you use a smaller sample size with simpler details maybe even for a mock directory. Thank you for such informative videos.
[15] @elliotwalker96:Thanks for such a thorough guide. I especially appreciated the JetEngine set up explanation because that is so intimidating on first sight. Well done and good luck with rankings! 👍 3
[16] @lana-miro:Wow! Thank you so much!
[17] @compostreviewer:I just disliked the video just so I can like it again Thank you Frey ❤