Full blog engine source: build_blog.py, content, deploy scripts

This commit is contained in:
2026-06-28 17:36:44 +00:00
commit 7767979538
34 changed files with 3272 additions and 0 deletions

112
submit_indexnow.py Normal file
View File

@ -0,0 +1,112 @@
"""Submit new blog URLs to IndexNow (Bing, Yandex, Seznam)"""
import urllib.request
import json
import os
import sys
SITE = "https://blog.quant-view.xyz"
KEY = "72aa77b68704abcfada4020ba81f7c5a"
# New pages from the 54 variant generator
new_pages = [
# Formula pages (10)
"tools/position-size-formula.html",
"tools/pip-value-formula.html",
"tools/kelly-criterion-formula.html",
"tools/atr-formula.html",
"tools/fibonacci-retracement-formula.html",
"tools/drawdown-formula.html",
"tools/margin-formula.html",
"tools/risk-reward-formula.html",
"tools/compound-interest-formula.html",
"tools/profit-factor-formula.html",
# Gold pages (6)
"tools/gold-atr-calculator.html",
"tools/gold-margin-calculator.html",
"tools/gold-drawdown-calculator.html",
"tools/xauusd-trading-guide.html",
"tools/gold-lot-size-calculator.html",
"tools/gold-spread-calculator.html",
# Forex pages (5)
"tools/forex-position-size-calculator.html",
"tools/forex-pip-calculator.html",
"tools/forex-margin-calculator.html",
"tools/forex-risk-calculator.html",
"tools/forex-lot-size-calculator.html",
# Forex pair guides (3)
"tools/eurusd-trading-guide.html",
"tools/gbpusd-trading-guide.html",
"tools/usdjpy-trading-guide.html",
# Crypto pages (5)
"tools/btc-position-size-calculator.html",
"tools/crypto-pip-calculator.html",
"tools/btc-margin-calculator.html",
"tools/eth-position-size-calculator.html",
"tools/crypto-risk-calculator.html",
# Pip variants (9)
"tools/pip-calculator-eurgbp.html",
"tools/pip-calculator-usdchf.html",
"tools/pip-calculator-solusd.html",
"tools/pip-calculator-dogeusd.html",
"tools/pip-calculator-adausd.html",
"tools/pip-calculator-bnbusd.html",
"tools/pip-calculator-dax40.html",
"tools/pip-calculator-sp500.html",
"tools/pip-calculator-ukoil.html",
# Index pages (4)
"tools/sp500-position-size-calculator.html",
"tools/nas100-position-size-calculator.html",
"tools/dax40-position-size-calculator.html",
"tools/index-margin-calculator.html",
# Educational (6)
"tools/risk-management-guide.html",
"tools/how-to-calculate-pip-value.html",
"tools/how-to-use-atr-for-stop-loss.html",
"tools/kelly-criterion-explained.html",
"tools/drawdown-recovery-guide.html",
"tools/margin-call-prevention.html",
# Comparison (3)
"tools/tradingview-vs-mt5.html",
"tools/ctrader-vs-mt5.html",
"tools/best-free-trading-tools.html",
# Account size variants (3)
"tools/position-size-calculator-100000-dollar-account.html",
"tools/position-size-calculator-20000-dollar-account.html",
"tools/position-size-calculator-3000-dollar-account.html",
# New articles
"position-size-calculator-guide.html",
"gold-trading-2026-guide.html",
"ssh-tunnel-deployment-china.html",
"github-seo-trading-tools.html",
"gold-pip-value-calculator-wrong.html",
# Sitemap
"sitemap.xml",
]
urls = [f"{SITE}/{p}" for p in new_pages]
print(f"Submitting {len(urls)} URLs to IndexNow...")
payload = json.dumps({
"host": "blog.quant-view.xyz",
"key": KEY,
"keyLocation": f"{SITE}/{KEY}.txt",
"urlList": urls
}).encode("utf-8")
engines = [
("Bing", "https://www.bing.com/indexnow"),
("Yandex", "https://yandex.com/indexnow"),
("Seznam", "https://search.seznam.cz/indexnow"),
]
for name, endpoint in engines:
try:
req = urllib.request.Request(endpoint, data=payload, headers={"Content-Type": "application/json"})
resp = urllib.request.urlopen(req, timeout=30)
print(f" {name}: HTTP {resp.status}")
except urllib.error.HTTPError as e:
print(f" {name}: HTTP {e.code} ({e.reason})")
except Exception as e:
print(f" {name}: Error - {e}")
print("Done!")