← 全部文字

从普通地图海报生成器,到个性化地图礼物工具:一次小站自救升级

这次升级让我重新意识到:独立项目最难的部分往往不是把功能做出来,而是让用户知道它为什么和自己有关。 Print City Road 原来是一个能生成城市地图的工具。现在,我希望它慢慢变成一个能帮人纪念地点的工具。 这听起来只是文案上的区别,但产品方向其实完全不一样。

最近我认真看了一下 Print City Road 的数据,心里其实有点凉:项目可以正常工作,搜索城市、拉 OpenStreetMap 数据、生成海报、导出 PNG/SVG 都没问题,但一天只有很少的访问。

这种感觉很熟悉。技术上“能跑”,但产品上好像没人来。于是我开始重新问自己一个问题:这个东西到底是没人需要,还是我把它做成了一个没人知道该怎么用的工具?

先承认一个现实:这个方向并不是没人做

我去看了一圈同类网站,发现 custom city map poster、map poster generator、personalized map print 这一类产品其实不少。比如 Cityograph、PrintCityLines、MapArtPrint、MapToPoster、Cartova、CityOutlines 等,都在做城市地图、道路网络、个性化地图海报或者打印服务。

这件事对我有两个提醒。

第一,有竞品不一定是坏事。它说明市场里确实有人愿意搜索、生成、购买或打印这类东西。

第二,问题也很明显:如果我只是做一个“输入城市,生成地图”的工具,那我和这些网站的差异太弱了。用户没有理由记住我,Google 也没有理由优先给我流量。

原来的定位太宽了

之前首页讲的是 Free City Map Poster Generator。这个描述没有错,但它太工具化,也太宽。

“城市地图海报生成器”听起来像一个功能;但用户真正搜索的,往往不是功能,而是场景。

  • 婚礼地点纪念海报
  • 第一次见面的城市地图
  • 第一套房子的 housewarming gift
  • 家乡地图墙画
  • 毕业城市纪念
  • 蜜月或旅行记忆海报

这些需求背后不是“我要一个地图”,而是“我要把一个地方变成礼物”。这是这次升级最大的转向。

所以我没有先做大功能,而是先改定位

这次我先把首页从“地图生成器”改成了更明确的方向:Personalized Map Poster Gift Maker

首屏标题也从 Turn Your City Into Art 改成了 Map a Place That Matters。这个变化很小,但我觉得很关键。它把重点从“城市”挪到了“有意义的地点”。

现在首页会直接告诉用户:这个工具可以用来做 wedding venue、first home、hometown、university city、travel memory、marathon route 这类海报。不是让用户自己猜用途,而是在第一屏就给他一个使用场景。

但只改文案是不够的

这里我也踩了一个很现实的问题:如果文章和首页都说 wedding map poster、first home map print、travel memory poster,但工具本身只能生成“城市名 + 国家 + 坐标”的普通海报,那其实是有落差的。

所以我做了一个第一阶段的真实功能升级:给海报增加可编辑的个性化文字。

现在用户进入海报预览页以后,可以编辑三项内容:

  • Title:例如 Where We Met、Our First Home、Wedding Weekend
  • Subtitle:例如 London · United Kingdom、Wedding venue · Paris
  • Date or note:例如 12 June 2026、The place we began

这些文字不是装饰在网页 UI 上,而是会真正进入最终导出的 PNG 和 SVG 文件里。也就是说,现在它确实可以生成一个更接近“个性化礼物”的地图海报。

技术上这次改了什么

这次升级主要集中在三个层面。

1. 首页和 SEO metadata

我更新了首页标题、描述、Open Graph、Twitter metadata 和结构化数据,把站点从通用 city road map generator 调整为 personalized map poster gift maker。

关键词也从泛泛的 city road map art,扩展到了 personalized map poster、custom map poster gift、wedding venue map poster、first home map poster、hometown map print、travel memory map 等更接近真实搜索意图的词。

2. 首页 SEO 内容块

我重写了首页下方的说明内容,不再只讲“这个工具能生成高分辨率地图”,而是列出用户真正可能搜索的礼物场景:

  • Wedding venue map poster
  • First home map print
  • Hometown wall art
  • Travel memory poster
  • University city poster
  • Race and route keepsake

这样做的目的不是堆关键词,而是让搜索引擎和用户都更快理解:这个工具适合什么场景。

3. 海报生成器支持自定义文字

在代码上,我给 poster generator 增加了 title、subtitle、note 三个字段。Canvas 和 SVG 导出都会读取这些字段。

如果用户不填写,它仍然保持原来的逻辑:显示城市、国家和坐标。这样不会破坏原来的城市海报生成流程。

如果用户填写了自定义内容,它就会变成更具体的礼物海报,比如:

  • WHERE WE MET / PARIS · FRANCE / 12 JUNE 2026
  • OUR FIRST HOME / MANCHESTER · UK / 2024
  • WEDDING WEEKEND / FLORENCE · ITALY / 18 MAY 2026

顺手修过的底层问题

在做增长和定位之前,我也先把工程可信度补了一轮。因为一个小工具站如果连生成地图都不稳定,谈 SEO 和转化没有意义。

这轮修复包括:

  • 修复 ESLint 配置,让 lint 能正常跑
  • 增加 typecheck 脚本
  • 更新 README,去掉旧的 Vue/Vite 描述,改成真实的 Next.js/React/WebGL 项目说明
  • 清理明显未使用代码
  • 修复复合 Overpass 查询拼接问题,避免搜索城市后只下载几百字节就切换 server

最后这一点尤其重要。之前项目搜索任何城市,都可能在加载几百字节后开始尝试不同服务器。后来发现原因不是 OpenStreetMap 完全连不上,而是查询模板把复合 filter 拼成了错误的 Overpass 查询。修掉以后,London 这类城市可以正常加载并生成地图。

为什么我觉得这条路还可以试

坦白说,我不确定这个项目一定能做起来。但我现在比较确定一件事:它不是完全没有需求。

真正的问题是,通用地图工具这个入口太冷了,也太同质化了。如果继续只说“我能生成城市地图”,那它大概率还是没有流量。

但如果把它放进具体场景里,比如婚礼、家、家乡、旅行、毕业、周年纪念,它就从一个工具变成了一个礼物创作器。这个方向至少更接近用户愿意搜索和分享的东西。

下一步我准备做什么

这次只是第一阶段。接下来我更想做的是独立落地页,而不是继续把所有流量都压在首页。

我准备优先做这些页面:

  • Wedding map poster
  • First home map poster
  • Hometown map poster
  • Travel memory map poster
  • University city map poster
  • Anniversary map poster

每个页面都应该有真实示例图、推荐文案、生成入口和 FAQ。这样它们才不是空洞的 SEO 页面,而是真正能把用户带到生成器的入口。

更远一点,可能还会做 marker、路线高亮、具体地址定位。比如在地图上标出婚礼地点、第一套房子、学校或旅行路线。但这一步会更复杂,因为需要从“城市边界搜索”升级到“地址/坐标搜索 + 地图投影 + 标记渲染”。我不想一次做太大,先把能稳定上线的部分做出来。

一点小结

这次升级让我重新意识到:独立项目最难的部分往往不是把功能做出来,而是让用户知道它为什么和自己有关。

Print City Road 原来是一个能生成城市地图的工具。现在,我希望它慢慢变成一个能帮人纪念地点的工具。

这听起来只是文案上的区别,但产品方向其实完全不一样。

我会继续观察接下来几周的 Search Console 数据。如果 impressions 上来了,说明方向可能对了;如果有 impressions 但没有 click,就继续改标题和摘要;如果有 click 但没人生成 poster,就继续改首屏和生成流程。

小站起死回生不一定靠一次大改,有时候是靠一次诚实的重新定位。