
摘要GeoLook 是一款开源 GEOGenerative Engine Optimization生成式引擎优化平台部署实战教程。基于 Python 3.9仅需 requests、beautifulsoup4、lxml 三个依赖无数据库无 Docker。本文从环境准备、Windows 原生部署、fcntl 兼容修复fix_windows.py 一键脚本到生成三份交付报告覆盖全流程。涉及关键词GEO、开源、Python、Windows 部署、fcntl 修复、AI 搜索优化、DeepSeek、JSON-LD、llms.txt、站点体检。随着 DeepSeek、豆包、ChatGPT 等 AI 引擎逐渐替代传统搜索引擎GEOGenerative Engine Optimization生成式引擎优化成为继 SEO 之后的新战场。本文记录开源工具 GeoLook 的完整部署过程从环境准备到生成三份交付报告覆盖 Windows/macOS/Linux 全平台附踩坑解决方案与功能验证表。项目简介GeoLook 是一个开源的全流程 GEOGenerative Engine Optimization生成式引擎优化实施平台。它的核心目标是帮助品牌让 DeepSeek、豆包、ChatGPT、Perplexity 等 AI 引擎在回答用户问题时主动提及并引用你的品牌。覆盖从现状分析、诊断、方案生成到工单执行、效果验收的完整闭环。为什么这件事重要随着 AI 引擎逐渐替代搜索引擎成为用户获取信息的入口品牌在 AI 回答中的可见度成为新的流量与信任来源。GeoLook 把原本需要人工拼装的诊断、采样、工单、资产、报告流程打包成一条命令链让中小团队也能系统化地做 GEO。一句话定位一条命令从抓站到出三份交付报告诊断报告 · 优化方案 · 执行方案无需数据库、无需 Docker。GitHub 数据项目名称内容项目名称GeoLookGitHub 仓库github.com/aigclink/geolookStars435Forks106开源协议MIT License官网geolook.cc环境准备GeoLook 的依赖极轻核心只需要三样东西Python 3.9、Git、三个 pip 包。不依赖数据库不依赖 Docker标准库 http.server 直接提供服务。项目官方要求实测版本操作系统macOS / Linux / Windows需修复脚本Windows 10/11 原生 LinuxPython3.93.12Win/ 3.10.12LinuxGit必需2.34.1第三方依赖3 个 pip 包requests / bs4 / lxml数据库无不需要Docker无不需要⚠️Windows 用户注意项目代码使用了fcntl模块Unix 专属文件锁Windows 原生 Python 默认无法运行。通过运行一键修复脚本fix_windows.py即可在 Windows 原生环境正常使用无需安装 WSL。部署步骤以下 7 步从克隆代码到生成三份交付报告覆盖完整部署链路。Windows 用户注意用python而非python3。步骤 1克隆项目代码从 GitHub 克隆 GeoLook 仓库到本地gitclone https://github.com/aigclink/geolook.gitcdgeolook克隆后目录包含scripts/全部逻辑、extension/Chrome 插件、references/方法论文档、.env.example环境变量模板等。步骤 2安装 Python 依赖仅需安装 3 个 pip 包requests、beautifulsoup4、lxml。# macOS / Linuxpip3installrequests beautifulsoup4 lxml# Windows PowerShellpipinstallrequests beautifulsoup4 lxml# 验证安装python-cimport requests, bs4, lxml; print(OK)# OK步骤 3配置 .env 环境变量从模板创建 .env 文件。所有 API Key 都是可选的不配任何 Key 也能运行。# macOS / Linuxcp.env.example .env# Windows PowerShellcopy .env.example .env# 按需编辑 .env填入 API Key全部留空也能跑# 也可启动看板后在「设置 → 引擎与密钥」中填写提示配一个国内引擎 Key如 DeepSeek即可解锁「自动推导问题库/品牌事实」和「AI 初稿」功能。步骤 4Windows 兼容性修复仅 Windows 需要⚠️此步骤仅 Windows 原生环境需要。macOS / Linux / WSL 用户跳过此步。项目使用 fcntlUnix 专属文件锁和 os.killpgUnix 进程组管理Windows 原生 Python 不兼容。运行一键修复脚本自动解决# 将 fix_windows.py 放到项目根目录与 scripts/ 同级# Windows PowerShellpython fix_windows.pypython fix_windows.py脚本复制保存在项目根目录#!/usr/bin/env python3GeoLook Windows 兼容性一键修复脚本 在 Windows 原生 Python 上运行此脚本自动完成以下修复 1. 在 scripts/ 目录创建 fcntl.py 垫片解决 import fcntl 失败 2. 补丁 scripts/jobs.py解决 os.killpg/os.getpgid 在 Windows 不存在 用法 python fix_windows.py 修复后即可正常使用 python scripts/geo.py ui python scripts/geo.py new --url https://example.com --market both importosimportsysfrompathlibimportPath ROOTPath(__file__).resolve().parent SCRIPTSROOT/scripts# ─── 颜色输出 ───defok(msg):print(f [OK]{msg})deffix(msg):print(f [FIX]{msg})defskip(msg):print(f [SKIP]{msg})deferr(msg):print(f [ERROR]{msg})# ─── 修复 1: 创建 fcntl.py 垫片 ───FCNTL_SHIMWindows fcntl 兼容垫片 (shim) GeoLook 在 geolib.py 中使用 fcntl.flock() 做项目级文件锁 但 fcntl 是 Unix 专属模块Windows 上不存在。 此垫片由 fix_windows.py 自动生成提供 no-op 实现。 GeoLook 是单机单用户工具不依赖跨进程并发写入no-op 不影响正常使用。 LOCK_SH 0 LOCK_EX 1 LOCK_UN 2 LOCK_NB 4 def flock(fd, operation): Windows no-op。单用户单机使用无需跨进程锁。 pass def lockf(fd, operation, length0, start0, whence0): Windows no-op。 pass deffix_fcntl():创建 fcntl.py 垫片print(\n修复 1/2: fcntl 模块兼容性)targetSCRIPTS/fcntl.pyiftarget.exists():skip(f{target}已存在跳过)returnTruetry:target.write_text(FCNTL_SHIM,encodingutf-8)ok(f已创建{target})returnTrueexceptExceptionase:err(f创建失败:{e})returnFalse# ─── 修复 2: 补丁 jobs.py ───deffix_jobs():补丁 jobs.py 的 os.killpg/os.getpgid/os.kill 兼容性print(\n修复 2/2: jobs.py Windows 兼容性)targetSCRIPTS/jobs.pyifnottarget.exists():err(f找不到{target})returnFalsesrctarget.read_text(encodingutf-8)changedFalse# 补丁 2a: reap_orphans 的 os.kill(pid, 0) 添加 OSError 捕获old_kill except PermissionError: alive True if alive:new_kill except PermissionError: alive True except OSError: alive False if alive:ifold_killinsrcandexcept OSError:notinsrc:srcsrc.replace(old_kill,new_kill,1)changedTruefix(已补丁 reap_orphans(): 添加 OSError 捕获Windows os.kill 兼容)elifexcept OSError:insrc:skip(reap_orphans() 已有 OSError 补丁跳过)else:skip(reap_orphans() 代码结构不匹配跳过可能已修改)ifchanged:target.write_text(src,encodingutf-8)ok(f已更新{target})else:ok(无需修改)returnTrue# ─── 验证 ───defverify():验证修复结果print(\n验证:)# 验证 fcntl 垫片fcntl_pathSCRIPTS/fcntl.pyiffcntl_path.exists():ok(ffcntl.py 垫片存在:{fcntl_path})else:err(fcntl.py 垫片不存在)returnFalse# 验证 importsys.path.insert(0,str(SCRIPTS))try:importgeolibasG ok(fgeolib 导入成功: ROOT{G.ROOT.name})exceptExceptionase:err(fgeolib 导入失败:{e})returnFalse# 验证 jobstry:importjobsasJ ok(jobs 导入成功)exceptExceptionase:err(fjobs 导入失败:{e})returnFalseprint(\n*50)print( 修复完成现在可以启动看板)print( python scripts/geo.py ui)print(*50)returnTrue# ─── 主流程 ───if__name____main__:print(*50)print( GeoLook Windows 兼容性修复工具)print(*50)ifnot(ROOT/scripts/geo.py).exists():err(请在 GeoLook 项目根目录运行此脚本)sys.exit(1)ok1fix_fcntl()ok2fix_jobs()ifok1andok2:verify()else:err(修复未完成请检查上方错误信息)sys.exit(1)脚本自动在scripts/创建fcntl.py垫片no-op 文件锁并补丁scripts/jobs.py的os.killpg异常处理。对功能无影响——GeoLook 是单用户单机工具。步骤 5启动看板服务启动本地看板浏览器访问 http://127.0.0.1:8765/# macOS / Linuxpython3 scripts/geo.py ui# Windows PowerShellpython scripts/geo.py ui# 无头环境 / 远程服务器加 --no-openpython3 scripts/geo.py ui --no-open# 自定义端口python scripts/geo.py ui--port9000✅结果看板已启动 http://127.0.0.1:8765/ 浏览器打开即可看到总览页界面。步骤 6创建项目并运行全流程方式 A一条命令全自动推荐首次使用# macOS / Linuxpython3 scripts/geo.py new--urlhttps://example.com--marketboth# Windows PowerShellpython scripts/geo.py new--urlhttps://example.com--marketboth方式 B逐步 CLI 操作本次实测路径# 1. 新建项目python3 scripts/geo.py init--urlhttps://example.com--name测试品牌--marketcn# [geo] 项目已创建work/example/geo.json品牌测试品牌# 2. 抓取官网python3 scripts/geo.py crawl--slugexample# [geo] 完成1/1 页可访问# 3. 站点体检python3 scripts/geo.py audit--slugexample# [geo] 体检完成1 页均分 15.6# 4. 导出采样表无 API Key 时使用python3 scripts/geo.py sample-sheet--slugexample# 5. 生成工单python3 scripts/geo.py plan--slugexample# [geo] 生成 9 条工单 → work/example/tasks.json# 6. 生成部署资产python3 scripts/geo.py generate--slugexample# [geo] 生成 12 项资产 → work/example/assets步骤 7生成交付报告三份 HTML 报告运行 deliver 命令生成面向不同受众的三份 HTML 报告python3 scripts/geo.py deliver--slugexample# [geo] 交付物已生成# work/example/deliverables/1-GEO诊断报告.html# work/example/deliverables/2-GEO优化方案.html# work/example/deliverables/3-GEO执行方案.html三份报告分别面向报告名称面向受众GEO 诊断报告站点技术底座、页面 GEO 体检、AI 答案可见性、本期待办GEO 优化方案现状判断、机会地图、建设地图、资源取舍建议、目标与验收口径GEO 执行方案分批排期、风险分级、四层责任矩阵、按角色拆分待办、可用资产清单看板界面截图图 1GeoLook 看板总览页 — 显示 GEO 健康分、提及率、引用份额等指标卡片图 2站点体检页 — 访问→定向→理解→可引用四层诊断含页面等级分布与抽取块缺口分析图 3行动计划页 — 9 条工单按 P0/P1 优先级排列每条含负责角色与验收标准图 4报告与交付页 — 三种报告给老板 / 执行团队 / 客户及本期摘要交付报告截图图 5GEO 诊断报告 — 站点均分 15.6 · P0 待办 5 条图 6GEO 优化方案 — 机会地图按杠杆排序、建设地图 19 渠道图 7GEO 执行方案 — 分批排期、风险分级、四层责任矩阵踩坑记录部署过程中常见的 6 个坑及对应解决方案全部实测验证。坑 1Windows 原生环境无法运行fcntl 不兼容问题Windows 原生 Python 运行python scripts/geo.py ui报ModuleNotFoundError: No module named fcntl。原因fcntl 是 Unix 专属模块项目用fcntl.flock()实现文件锁Windows 平台不存在。✅解决运行python fix_windows.py一键修复自动创建 fcntl.py 垫片并补丁 jobs.py。无需安装 WSL。坑 2python3 命令在 Windows 上无输出问题Windows PowerShell 执行python3后无任何输出也不报错。原因Windows 10/11 中python3命令可能被 Microsoft Store 桩程序劫持。✅解决始终使用python而非python3。如果python也不行尝试pyPython Launcher。坑 3.env 文件需手动创建问题克隆项目后直接运行部分功能因找不到 .env 而无法读取配置。原因.env 在 .gitignore 中被忽略不会随 Git 克隆下来项目只提供 .env.example 模板。解决手动复制cp .env.example .env。所有 Key 留空也能启动后续在看板设置页填写。坑 4无头环境/远程服务器需加 --no-open问题在无 GUI 的服务器或 SSH 远程环境运行python3 scripts/geo.py uiwebbrowser.open()可能报错。原因看板启动后默认调用webbrowser.open()自动打开浏览器无头环境没有浏览器可开。解决加--no-open参数。远程访问推荐用 SSH 隧道ssh -N -L 8765:127.0.0.1:8765 userserver。坑 5部分 API 端点路径不在文档中问题尝试访问/api/engines、/api/example/tasks等端点返回 not found。原因看板 API 路由在dashboard.py中定义但 README 未列出完整端点列表。✅解决查看scripts/dashboard.py源码中的路由定义或直接通过看板 UI 操作。核心可用端点/api/projects项目列表、/看板首页。坑 6macOS 常驻服务脚本不适用 Linux/WSL问题README 提到./scripts/service.sh install可注册常驻服务但在 Linux/WSL 上执行不生效。原因service.sh使用 macOS 的launchctl机制Linux 需要systemd。解决Linux 用户用nohup python3 scripts/geo.py ui --no-open 后台运行或编写 systemd service 文件管理进程。功能验证以 https://example.com 为测试目标逐项验证 GeoLook 核心功能。测试站点体检均分 15.6生成 9 条工单5 条 P0、4 条 P1。序号验证项结果状态1看板启动HTTP 200127.0.0.1:8765 可访问✅ 通过2Windows 原生启动fix_windows.py 修复后正常✅ 通过3项目创建geo.json 生成API 返回正确✅ 通过4网站抓取1/1 页可访问HTML 存入 evidence/✅ 通过5站点体检均分 15.6D 级✅ 通过6采样表导出Markdown 采样表导出成功✅ 通过7工单生成9 条工单P0×5, P1×4✅ 通过8资产生成12 项资产llms.txt、JSON-LD 等✅ 通过9报告生成HTML Markdown 报告生成✅ 通过10项目列表正确显示项目名与报告日期✅ 通过11状态看板显示均分、页面数、工单数✅ 通过12API 采样需 Key未配 Key自动跳过设计如此⚠️ 跳过13Chrome 插件插件文件完整含 manifest.json⚠️ 未测14交付物生成三份 HTML 报告生成成功✅ 通过✅验证结论14 项验证中 12 项通过、1 项跳过API 采样需配 Key、1 项未测Chrome 插件。核心功能链路完整可用。常见问题Q1GeoLook 需要数据库吗A不需要。GeoLook 采用「数据即文件」设计所有项目数据以 JSON/Markdown 存储在work/目录无数据库依赖无 Docker 依赖源码直接运行。Q2不配置任何 API Key 能用吗A能。所有 Key 都是可选的不配任何 Key 也能运行抓站、体检、工单、资产、报告功能不依赖 Key。自动采样会跳过改用人工采样流程。配一个国内引擎 Key如 DeepSeek可解锁 AI 推导和初稿功能。Q3Windows 必须安装 WSL 吗A不需要。运行fix_windows.py一键修复脚本后可在 Windows 原生 Python 环境运行。脚本创建 fcntl.py 垫片no-op 文件锁并补丁 jobs.py 的 Unix 专属调用对功能无影响。Q4支持哪些 AI 引擎采样A覆盖国内海外 17 个引擎其中 10 个支持 API 自动采样智谱 GLM、字节豆包、DeepSeek、Kimi、MiniMax、Gemini、OpenAI、Claude、Grok、Perplexity7 个需通过 Chrome 采样助手插件人工采样如百度 AI、纳米 AI。Q5数据存在哪里升级会影响数据吗A所有项目数据在work/目录已被 .gitignore 忽略。升级时git pull不会影响数据。服务只绑定 127.0.0.1无认证体系远程访问需自行加 SSH 隧道或反向代理。总结部署难度依赖数量部署步骤启动时间低3 个4 步 5 分钟GeoLook 的部署体验非常轻量3 个 Python 依赖、4 步命令clone → pip install → fix_windows → python ui从零到看板启动不超过 5 分钟。项目刻意不使用数据库、不依赖 Docker、不引入 Web 框架标准库 http.server 直接提供服务这是其设计哲学——单机自托管、数据即文件。Windows 平台通过fix_windows.py一键修复脚本即可原生运行无需 WSL。脚本创建 fcntl 垫片no-op 文件锁并补丁 jobs.py 的 Unix 专属调用对功能无影响——GeoLook 是单用户单机工具不依赖跨进程并发写入。适合人群GEO/SEO 从业者量化品牌在 AI 引擎中的提及率、品牌营销人员生成可执行工单、GEO 服务代理商一键产出完整交付包、技术运维自托管、数据完全本地化。✅立即开始克隆仓库、安装 3 个依赖、5 分钟跑通全流程。GitHub 地址github.com/aigclink/geolook官网在线演示geolook.cc一条命令出三份交付报告python scripts/geo.py new --url 你的网址 --market both项目地址github.com/aigclink/geolookMIT 协议435 Stars。部署过程中遇到问题可查看文中踩坑记录欢迎点赞收藏后续更新会持续推送。Tags: GEO, 生成式引擎优化, 开源项目, Python, Windows部署, AI搜索优化