Featured image of post GENSO-GEO:在博丽神社门口,把现实地名折成幻想名帖

GENSO-GEO:在博丽神社门口,把现实地名折成幻想名帖

记录 GENSO-GEO 幻想霊脈帖:一个东方 Project 风格的地缘幻想命名工具,支持地图点选、描述共鸣、三语名字、符卡式由来、多模型后端和 Vercel 部署。

最近又做了一个小站,名字叫 GENSO-GEO / 幻想霊脈帖

如果用一句“博丽神社门口的说明”来讲,它大概是这样的:

你把现实里的地名或者角色设定交过来,我把它往结界里晃一晃,最后还你一张带着幻想乡味道的名帖。别一直戳按钮,名字总会出来的。

当然,灵梦真要坐在神社门口收费,可能会先问一句香火钱。不过这个项目是开源的。

GENSO-GEO 幻想霊脈帖

这是什么

网站:genso-geo.danzaii.cn
仓库:DanZai233/GENSO-GEO
作品集:works.danzaii.cn

GENSO-GEO 是一个东方 Project 风格的地缘幻想命名工具。

它有两种主要用法:

  1. 在地图上点一个现实地点,或者搜索一个地名;
  2. 输入角色的外貌、性格、背景,让它和一个地理锚点产生“描述共鸣”。

然后它会生成:

  • 中文名;
  • 英文名;
  • 日文汉字名;
  • 罗马音;
  • 二つ名 / 角色定位;
  • 命名由来;
  • 可以收藏和导出的符卡式设定卡。

它不是为了“替创作者决定角色最终叫什么”,而是给创作一个可以继续打磨的第一稿。很多时候起名最难的不是最后一锤,而是从完全空白走到“好像有点方向”。这个小站想做的就是把这一步变轻一点。

为什么是地名

我一直觉得地名很适合拿来做角色设定的起点。

一个地方会天然带着很多东西:气候、地貌、历史、语言、建筑、传说、颜色、声音。比如京都和黄山给人的感觉完全不一样,西湖和大峡谷也不可能长出同一种角色气质。

所以 GENSO-GEO 没有只做“随机名字生成器”,而是让现实地图成为入口:

  • 点击京都,可以往神社、古都、竹林、町屋、山路的方向走;
  • 点击西湖,可能会有水、雾、桥、月色和文人气;
  • 点击欧洲古堡,气质自然会偏向雾、塔楼、长廊、红茶和旧书;
  • 点击北美旷野,名字会带一点外界灵脉和异乡感。

这其实是把“地点”当成创作上下文。AI 生成只是其中一层,真正有趣的是:一个现实坐标会把想象力拉到某个方向上。

博丽灵梦式新手引导

这次我给网站加了一个新手引导。

第一次进入时,它会先问你使用什么语言。选完之后,再用一种偏“博丽神社临时说明”的口吻告诉你:

  • 这个网站是做什么的;
  • 怎么用地图模式;
  • 怎么用描述共鸣;
  • 怎么收藏和导出;
  • GitHub、博客、作品集在哪里。

我没有直接使用官方对白,也没有使用官方图片。语气上只是借了神社、结界、巫女、名帖这些意象,让网站的第一眼更像它自己的世界观,而不是普通工具站的“欢迎使用,请阅读说明”。

对我来说,这种引导不只是帮助用户知道按钮在哪里。它也是网站气质的一部分。

两种生成方式

地图灵脉定位

这是最直觉的模式。

你可以在地图上直接点击,也可以用搜索框搜索现实地名。地图会放置一个红色灵脉标记,服务端会根据地名、国家、地理类型和角色风格生成名字。

这个模式适合:

  • 想从某个真实地点获得角色灵感;
  • 给城市、景点、山水、建筑做拟人化;
  • 快速随机探索一组地缘角色。

描述宿命之契

如果你已经有角色设定,就可以切到描述共鸣。

比如写:

一个住在深山神社、喜欢读古籍、能操纵金色落叶的角色。

然后再选择一个地理依附范围,比如日本、华夏古原、欧洲古堡、北美旷野。网站会把角色描述和地理气质揉在一起,生成更贴近设定的名字。

这个模式适合:

  • 已经有 OC 设定,但名字还没定;
  • 想把角色设定本地化到某个地区;
  • 想快速得到中文、英文、日文、罗马音四套可参考文本。

“少女祈祷中~”和防连点

AI 生成不是瞬间完成的,尤其是多语言字段比较多、模型偶尔慢的时候。

所以我加了一个请求锁:当用户已经选定地点并开始生成后,地图点击、随机生成、搜索结果点选、描述生成都会暂时锁住。界面上会出现一个“少女祈祷中~”的过场,不再让用户误以为没点上,然后连续触发多次请求。

这个细节很实用。它既保护后端,也让用户知道结界还在工作。

灵梦的提醒大概就是:别连点,结界不是赛马券出票机。

后端模型对用户无感

这个项目后端支持多种模型供应商:

  • Gemini;
  • 火山引擎方舟;
  • 其他 OpenAI-compatible 服务。

但是用户侧完全不显示模型名,也不显示供应商。前端只关心两个 API:

  • /api/generate-name
  • /api/generate-description-name

服务端根据 Vercel 环境变量选择供应商和模型。这样做的好处是:用户体验是稳定的,后端以后换模型、换供应商、调参数,都不需要把这些技术细节丢给用户。

我更喜欢这种方式。一个创作工具应该让人感觉自己在调灵感,而不是在调控制台。

技术栈

项目结构不复杂:

技术
前端React 19 + TypeScript + Vite
样式Tailwind CSS v4
地图MapLibre + OpenStreetMap / Carto tiles
地理搜索Nominatim
后端Vercel Serverless Functions
AI 接入Gemini / Volcengine Ark / OpenAI-compatible
收藏localStorage
导出html2canvas 生成 PNG

部署在 Vercel 上,函数执行时间配置到了 300 秒。这样模型慢一点也不至于过早超时。

开源以后想怎么继续做

目前 GENSO-GEO 已经能承担基础的地缘命名和设定卡生成,但我还想继续补几件事:

  • 更完整的地区预设,比如幻想乡风的“地脉语义标签”;
  • 更漂亮的导出卡片模板;
  • 更细的角色风格控制;
  • 一键生成角色小传;
  • 更适合手机端的地图和收藏交互;
  • 把生成历史做成可分享的名帖页面。

这个项目最有意思的地方,是它可以继续往“创作辅助工具”和“世界观小玩具”两个方向长。

它可以很实用:帮人起名、翻译、生成设定卡。
它也可以很没用但很好玩:在地图上乱点,看现实世界被结界重新命名。

这两种感觉我都喜欢。


你可以在这里试用:genso-geo.danzaii.cn
代码在这里:github.com/DanZai233/GENSO-GEO

如果你已经走到神社门口了,就随便点一个地方吧。名字这种东西,有时候真的要从一条路、一片水、一座山开始。

Powered by Hugo & Stack