8.4 KiB
8.4 KiB
GFIL_BLOG 记忆文档
最后更新: 2026-06-29
项目概述
blog.quant-view.xyz 的内容引擎 — 多语言交易教育站点,80+ 免费计算器,专业市场分析,SEO/GEO 优化文章。
架构
blog_content/ → build_blog.py → output/ → RackNerd /var/www/blog/
tools/ → → (static HTML served by Nginx)
deploy_scripts/ → daily cron jobs on server
服务器部署
SSH 链路(中国国内无法直连海外服务器)
- 本地 PC → JD Cloud 跳板机 (111.228.37.165, root/Liudecai110) → RackNerd 服务器 (107.174.186.162, root/liudapao2026, /var/www/blog/)
- 部署脚本:
deploy_via_jdcloud.py(通过 paramiko 双跳) - JD Cloud 连接不稳定,需要
banner_timeout=60并重试
Blog 服务器 (RackNerd)
- IP: 107.174.186.162
- SSH: root / liudapao2026
- 文档根: /var/www/blog/
- Nginx 配置: 默认
- robots.txt: 由 build_blog.py 生成(653 chars,含 GPTBot/ClaudeBot/PerplexityBot 等 AI 爬虫许可)
主站服务器 (gfil-lab.com)
- IP: 216.144.233.14
- SSH: root / Kt9V72Tx2c48ChikKU(密码在 D:\GFIL.env)
- 文档根: /GFIL/
- Nginx: 两个 server block —
default(gfil-lab.com :5000) +gfil(quant-node.com :8000) - robots.txt: /var/www/gfil-lab/robots.txt (580 chars),Nginx location block 提供服务
- Nginx 配置备份:
default.bak.before-robots,gfil.bak.before-robots
gfil-intel.xyz
- 部署在 RackNerd 服务器
- Nginx: /etc/nginx/sites-available/gfil-mask
- 反向代理到 gfil-lab.com,sub_filter 替换域名
- robots.txt 继承自 gfil-lab.com 代理
- Cloudflare 代理(与 blog 不同的 CF zone/account)
域名 & DNS
| 域名 | Cloudflare | DNS 模式 |
|---|---|---|
| blog.quant-view.xyz | CF 代理 | DNS-only (grey cloud) |
| gfil-lab.com | CF 代理 | Proxied (orange cloud) |
| gfil-intel.xyz | CF 代理 | Proxied (orange cloud) |
Cloudflare
- blog.quant-view.xyz: CF_TOKEN=
cfut_xRDcVVOTE9hLWxe8fFUG1Xgv7aQVtV0ytWFYZKimffcc10e3,zone 在 blog 的 CF 账户 - gfil-lab.com: CF_PURGE_TOKEN=
cfut_Qe696Mw2HIWZ9KtJnmTJ8Gl1RIr9OroFYesb4aDk30346a1a,CF_ZONE_ID=5ab2b548b8e4d5a1cb0e7a43c074a871,zone 在 D:\GFIL.env(不同 CF 账户) - gfil-intel.xyz: 独立 CF zone,token 在 blog CF 账户,zone ID=
a107f45f3d82e7209447cec396504d0b - Bot Fight Mode: OFF(所有站点)
- Browser Integrity Check: OFF(所有站点)
- managed robots.txt: OFF(所有站点)
- AI training block: OFF(所有站点)
开源平台全景
⚠️ GitHub 状态:双双公开 404
两个 GitHub 账号对外全部 404。git push 仍可用,但外部访客看不到任何仓库。
| 账号 | Web 状态 | Git 状态 | 说明 |
|---|---|---|---|
| liudecai-one | ❌ 公开 404 | ✅ git push 可用 | 2026-06-29 起公开仓库全部 404 |
| liudapao880807-arch | ❌ 已被 FLAG | ✅ git push 可用 | 长期 FLAG,公开仓库 404,Actions 禁用 |
因此:全站不得出现任何 github.com 外链。所有开源引用走 GitLab。
Git push 需代理: git -c http.proxy=http://127.0.0.1:7890 push
Gitea(自建,主力)🆕
- 地址: code.quant-view.xyz(RackNerd 107.174.186.162)
- 管理员: liudecai / Liudapao2026
- 配置: SQLite, Nginx + Let's Encrypt, systemd 自动启动
- 内存: ~100MB
- 谁也封不了,自己说了算。
GitLab(镜像备份)
- 账号: liudecai110
- 仓库: gfil-trading-calculators — 开源计算器库
- 仓库: awesome-trading-resources — 资源索引镜像
- Token: 在
.env中
PyPI
- 包名: gfil-calculators(v1.1.1)
- 内容: 22个交易计算器(Position Size, Pip Value, Fibonacci, ATR, Kelly, Risk of Ruin, Margin, Compound Growth, Drawdown, Profit Factor, Risk/Reward, Pivot Points, Correlation Matrix 等)
- 双语言实现: Python + JavaScript
- 许可: MIT
- Token: 在
.env中
npm
- ❌ 已 404(
@liudecai-onescope 随 GitHub org 一起消失) - npm_package/ 目录保留源码(index.js),待重新发布到其他 registry
平台链接汇总
| 平台 | URL | 用途 |
|---|---|---|
| Gitea | code.quant-view.xyz | 自建 Git — 仓库 + Issue + MR + Packages |
| GitLab | gitlab.com/liudecai110/gfil-trading-calculators | 镜像备份 |
| PyPI | pypi.org/project/gfil-calculators/ | Python 包分发 |
GitHub 历史记录(仅供参考,勿用)
liudecai-one 曾有 15+ 个公开仓库(7个核心 + 8个SEO引流),liudapao880807-arch 曾有 GFIL 主站 + Cannon Studio 私有仓库。git push 仍可用但 web 访问全部 404。github_blast.py 等脚本保留不动(内部工具)。
计划中(未开始)
- Codeberg 镜像
- self-hosted Gitea at code.gfil-lab.com
- docs.gfil-lab.com 独立文档站
内容统计
- 文章: 20 篇 EN 文章 (article_1 ~ article_20),每篇 4 语言 (EN/ZH/ES/AR) = 80 篇
- art-12: Bloomberg Terminal Alternative
- art-16: Position Size Guide (9.1KB)
- art-17: XAUUSD Trading Guide (12.7KB)
- art-18: SSH Chain Engineering
- art-19: GitHub SEO (de-GitHub 叙事完整版)
- art-20: Gold Calculator Pitfalls
- 工具页: 199+ HTML 文件,含 54 变体 SEO 页
- 10 公式页 + 6 黄金 + 5 外汇 + 3 交易对 + 5 加密 + 9 pip 变体 + 4 索引 + 6 教育 + 3 对比 + 3 账户规模
- Sitemap: 405 URLs (289 tools + 81 posts + 35 geo)
- Schema: FAQPage + SoftwareApplication JSON-LD on 109 tool pages
SEO/GEO
- IndexNow key:
72aa77b68704abcfada4020ba81f7c5a - 已提交 URL: ~411 URLs across sessions (Bing 200, Yandex 202, Seznam 200)
- Bing Webmaster: BingSiteAuth.xml 已上线
- Google: GA_ID=G-D33M8PWQDP,验证码=d53ir9M-igK014y6QqLbDG8q_qKotQi70TGGxQwHas4
De-GitHub-ification 状态
- ✅ 所有 GitHub + npm 死链已清除,替换为 PyPI/GitLab/TG/Discord
- ✅ 三个核心页面零 github.com 引用: entity.html, media.html, gfil-faq.html
- ✅ article_19 已更新完整 de-GitHub 叙事
- ✅ build_blog.py footer: EN/ES/AR→Telegram/Discord; ZH→微信/QQ
- ✅ research.html: PyPI 链接标签改为"PyPI"
- ✅ gfil-faq.html: "merge requests" 而非 "pull requests"
- ✅ PyPI v1.1.1 发布,所有 URL→blog/PyPI/Telegram/GitLab
已知问题
- GitHub Actions CI: 账号级禁用,仅 GitHub Support 可修复
- GitHub 账号 flagging: +86 不被接受,虚拟号风险更高
- gfil-intel.xyz robots.txt: CF 缓存仍返回旧版 (64 chars),需从 gfil-intel.xyz 的 CF 面板手动清缓存
- npm: 无 authenticator app,仅 4 个恢复码
构建命令
# 本地构建(不部署)
python build_blog.py --no-upload
# 构建并部署(需 .env 含 SSH 凭据)
python build_blog.py
# 本地预览
python build_blog.py --no-upload --serve
关键约束
- D:\GFIL 主站: READ-ONLY,除非用户明确说改
- Nginx 配置编辑: 必须用 Python 脚本精确插入,绝不用 sed — sed 曾删除闭合花括号导致配置损坏
- PowerShell:
curl是 Invoke-WebRequest 别名(有问题),用 Python 做 HTTP 调用 - Python f-string:
%{var}和{result[...]}在 f-string 内必须转义为{{result[...]}} - 95/5 规则: 95% 精力在自有网站,5% 在第三方平台
- 上传方式: tar.gz 经 JD Cloud → scp 到目标 → 解压;关键文件用 sed 在服务器直接改(但 Nginx 配置除外)
Token/密钥清单
所有密钥在 .env 文件中,.gitignore 已排除。关键 token:
- GitHub:
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(主账号,push 可用但 repos 404) - GitHub (blog repo): 见 .env GITHUB_TOKEN
- GitLab:
glpat-i1Elj2OD2CltzT1XSbOTvGM6MQpvOjEKdTpucDA2Yg8.01.171bazl46 - PyPI:
pypi-AgEIcHlwaS5vcmcCJGE4NWRkYjJkLWEyYjItNDNkNS04NjI2LTgxMmViYmFmMDE5OAACKlszLCI4OTY3MDNmZS0xOGE3LTQyNjEtYTUwOC1jNTZjYzBmNDU1MjQiXQAABiClm87Doks-uv0hxnNjvFYZPxIwElp7kCaTlHS8NcLwAQ - npm:
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(4 recovery codes) - IndexNow:
72aa77b68704abcfada4020ba81f7c5a
下一步
- 注册 Trustpilot, G2, Capterra(用户任务)
- 清 gfil-intel.xyz CF 缓存(用户从 CF 面板操作)
- 考虑给 gfil-intel.xyz 独立 robots.txt(修改 gfil-mask Nginx 配置)
- Codeberg 镜像,self-hosted Gitea at code.gfil-lab.com
- docs.gfil-lab.com 文档站