@@ -53,65 +53,66 @@ def extract_keywords(self, text: str, top_k: int = 10) -> List[str]:
5353 def generate_meta_tags (self , page_type : str , data : Dict ) -> Dict [str , str ]:
5454 """根据页面类型生成Meta标签."""
5555 if page_type == "homepage" :
56- title = "MeetSpot - Find Meeting Location Midpoint | 智能聚会地点推荐 "
56+ title = "MeetSpot 聚点 - 多人聚会地点智能推荐 "
5757 description = (
58- "MeetSpot让2-10人团队快速找到公平会面中点, 智能推荐咖啡馆、餐厅、共享空间, 自动输出路线、"
59- "预算与结构化数据, 15秒生成可索引聚会页面; Midpoint engine saves 30% commute, fuels SEO-ready recaps with clear CTA."
60- )
61- keywords = (
62- "meeting location,find midpoint,group meeting,location finder,"
63- "聚会地点推荐,中点计算,团队聚会"
58+ "MeetSpot 帮助 2-10 人快速找到公平的聚会中点,"
59+ "智能推荐咖啡馆、餐厅、图书馆等场所,"
60+ "球面几何算法计算公平中心,覆盖 350+ 城市,免费使用无需注册。"
6461 )
62+ keywords = "聚会地点推荐,中点计算,团队聚会,meeting location,midpoint"
6563 elif page_type == "city_page" :
6664 city = data .get ("city" , "" )
6765 city_en = data .get ("city_en" , "" )
6866 venue_types = data .get ("venue_types" , [])
6967 venue_snippet = "、" .join (venue_types [:3 ]) if venue_types else "热门场所"
70- title = f"{ city } 聚会地点推荐 | { city_en } Meeting Location Finder - MeetSpot"
68+ title = f"{ city } 聚会地点推荐 - MeetSpot 聚点 "
7169 description = (
72- f"{ city or '所在城市' } 聚会需要公平中点? MeetSpot根据2-10人轨迹计算平衡路线, 推荐{ venue_snippet } 等场所, "
73- "输出中文/英文场地文案、预算与交通信息, 15秒生成可索引城市着陆页; Local insights boost trust, shareable cards unlock faster decisions."
70+ f"在{ city or '所在城市' } 找多人聚会的公平中点?"
71+ f"MeetSpot 根据 2-10 人位置计算最佳会面点,推荐{ venue_snippet } 等高评分场所,"
72+ f"覆盖{ city } 主要商圈和高校周边。"
7473 )
75- keywords = f"{ city } , { city_en } ,meeting location, { venue_snippet } ,midpoint "
74+ keywords = f"{ city } 聚会地点, { city } 聚餐推荐, { venue_snippet } ,{ city_en } "
7675 elif page_type == "about" :
77- title = "About MeetSpot - How We Find Perfect Meeting Locations | 关于我们 "
76+ title = "关于 MeetSpot 聚点 - 智能聚会地点推荐 "
7877 description = (
79- "MeetSpot团队由地图算法、内容运营与产品负责人组成, 公开使命、技术栈、治理方式, 分享用户案例、AMAP合规、安全策略与开源路线图; "
80- "Learn how we guarantee equitable experiences backed by ongoing UX research。"
78+ "MeetSpot 是一款开源的多人聚会地点推荐工具,"
79+ "使用球面几何算法计算公平中点,结合智能评分推荐最佳场所,"
80+ "覆盖 350+ 城市,12 种场景主题。"
8181 )
82- keywords = "about meetspot,meeting algorithm,location technology,关于, 聚会算法"
82+ keywords = "关于 MeetSpot, 聚会算法,地点推荐技术 "
8383 elif page_type == "faq" :
84- title = "FAQ - Meeting Location Questions Answered | 常见问题 - MeetSpot"
84+ title = "常见问题 - MeetSpot 聚点 "
8585 description = (
86- "覆盖聚会地点、费用、功能等核心提问, 提供结构化答案, 支持Google FAQ Schema, 让用户与搜索引擎获得清晰指导, "
87- "并附上联系入口与下一步CTA, FAQ hub helps planners resolve objections faster and improve conversions 。"
86+ "MeetSpot 常见问题解答:如何计算聚会中点、支持多少人、 "
87+ "覆盖哪些城市、是否免费、推荐速度等核心问题一站式解答 。"
8888 )
89- keywords = "faq,meeting questions,location help, 常见问题,使用指南"
89+ keywords = "MeetSpot 常见问题,聚会地点帮助 ,使用指南"
9090 elif page_type == "how_it_works" :
91- title = "How MeetSpot Works | 智能聚会地点中点计算流程 "
91+ title = "使用指南 - MeetSpot 聚点 "
9292 description = (
93- "4步流程涵盖收集地址、平衡权重、筛选场地与导出SEO文案, 附带动图、清单和风控提示, 指导团队15分钟内发布可索引页面; "
94- "Learn safeguards, KPIs, stakeholder handoffs, and post-launch QA behind MeetSpot 。"
93+ "MeetSpot 使用指南:输入参与者地址、选择场所类型、 "
94+ "设置特殊需求,5 步智能推理流程为你找到对所有人都公平的聚会地点 。"
9595 )
96- keywords = "how meetspot works,midpoint guide,workflow,使用指南 "
96+ keywords = "MeetSpot 使用指南,聚会地点怎么选,中点计算教程 "
9797 elif page_type == "recommendation" :
9898 city = data .get ("city" , "未知城市" )
9999 keyword = data .get ("keyword" , "聚会地点" )
100100 count = data .get ("locations_count" , 2 )
101- title = f"{ city } { keyword } 推荐 - { count } 人聚会最佳会面点 | MeetSpot"
101+ title = f"{ city } { keyword } 推荐 - { count } 人聚会 | MeetSpot"
102102 description = (
103- f"{ city } { count } 人{ keyword } 推荐由MeetSpot中点引擎生成, 结合每位参与者的路程、预算与场地偏好, "
104- "给出评分、热力图和可复制行程; Share SEO-ready cards、CTA, keep planning transparent, document-ready for clients, and measurable。"
103+ f"{ city } { count } 人{ keyword } 推荐,"
104+ f"MeetSpot 根据所有参与者位置计算公平中点,"
105+ f"智能推荐评分最高的{ keyword } 。"
105106 )
106- keywords = f"{ city } ,{ keyword } ,聚会地点推荐,中点计算, { count } 人聚会 "
107+ keywords = f"{ city } ,{ keyword } ,聚会地点推荐,中点计算"
107108 else :
108- title = "MeetSpot - 智能聚会地点推荐"
109- description = "MeetSpot通过公平的中点计算, 为多人聚会推荐最佳会面地点。"
110- keywords = "meetspot,meeting location,聚会地点 "
109+ title = "MeetSpot 聚点 - 智能聚会地点推荐"
110+ description = "MeetSpot 通过公平的中点计算, 为多人聚会推荐最佳会面地点。"
111+ keywords = "MeetSpot,聚会地点推荐,中点计算 "
111112
112113 return {
113114 "title" : title [:60 ],
114- "description" : description [:160 ],
115+ "description" : description [:155 ],
115116 "keywords" : keywords ,
116117 }
117118
@@ -152,13 +153,11 @@ def generate_schema_org(self, page_type: str, data: Dict) -> Dict:
152153 "@type" : "Organization" ,
153154 "name" : "MeetSpot" ,
154155 "url" : base_url ,
155- "logo" : f"{ base_url } /static/images/og-image.png" ,
156- "foundingDate" : "2023-08-01" ,
157156 "contactPoint" : [
158157 {
159158 "@type" : "ContactPoint" ,
160159 "contactType" : "customer support" ,
161- "email" : "hello@meetspot.app " ,
160+ "email" : "Johnrobertdestiny@gmail.com " ,
162161 "availableLanguage" : ["zh-CN" , "en" ],
163162 }
164163 ],
@@ -184,12 +183,6 @@ def generate_schema_org(self, page_type: str, data: Dict) -> Dict:
184183 "latitude" : venue .get ("lat" ),
185184 "longitude" : venue .get ("lng" ),
186185 },
187- "aggregateRating" : {
188- "@type" : "AggregateRating" ,
189- "ratingValue" : venue .get ("rating" , 4.5 ),
190- "reviewCount" : venue .get ("review_count" , 100 ),
191- },
192- "priceRange" : venue .get ("price_range" , "$$" ),
193186 }
194187 if page_type == "faq" :
195188 faqs = data .get ("faqs" , [])
@@ -230,8 +223,14 @@ def generate_schema_org(self, page_type: str, data: Dict) -> Dict:
230223 }
231224 for step in steps
232225 ],
233- "supply" : data .get ("supplies" , ["参与者地址" , "交通方式偏好" ]),
234- "tool" : data .get ("tools" , ["MeetSpot Dashboard" ]),
226+ "supply" : [
227+ {"@type" : "HowToSupply" , "name" : s }
228+ for s in data .get ("supplies" , ["参与者地址" , "交通方式偏好" ])
229+ ],
230+ "tool" : [
231+ {"@type" : "HowToTool" , "name" : t }
232+ for t in data .get ("tools" , ["MeetSpot Dashboard" ])
233+ ],
235234 }
236235 if page_type == "breadcrumb" :
237236 items = data .get ("items" , [])
0 commit comments