Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
archlizheng avatar

Ziwei Ai Html Report

  • 8 installs
  • 1 repo stars
  • Updated May 24, 2026
  • archlizheng/ziwei-ai-html-report

ziwei-ai-html-report is a skill that generates a self-contained single-file HTML Zi Wei Dou Shu astrology report from birth data using an offline chart engine and validated K-line data.

About

This skill generates a saveable single-file HTML Zi Wei Dou Shu (Chinese astrology) report from birth data or supplied chart context. It ships a pure-Python offline charting tool (with an optional Node/iztro path for app-aligned stars and true-solar-time conversion) and assembles a report with comprehensive annotation, yearly fortune, and a life K-line section. It validates the K-line JSON, refuses to invent star placements, and covers solar dates from 1900 to 2100.

  • Generates a self-contained single-file HTML Zi Wei Dou Shu report from birth data
  • Ships a pure-Python offline chart engine (no Node) with optional iztro alignment and true-solar-time
  • Validates K-line JSON before delivery and refuses to invent star placements

Ziwei Ai Html Report by the numbers

  • 8 all-time installs (skills.sh)
  • Ranked #500 of 688 Office & Documents skills by installs in the Skillselion catalog
  • Data as of Jul 28, 2026 (Skillselion catalog sync)
At a glance

ziwei-ai-html-report capabilities & compatibility

Capabilities
html export · report generation · offline chart
From the docs

What ziwei-ai-html-report says it does

希望**脱离 Node** → 只用 **路径 A**(已含真太阳时)
SKILL.md
交付物必须是**单文件 HTML**(便于保存、邮件、网盘分享)
SKILL.md
npx skills add https://github.com/archlizheng/ziwei-ai-html-report --skill ziwei-ai-html-report

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs8
repo stars1
Last updatedMay 24, 2026
Repositoryarchlizheng/ziwei-ai-html-report

What it does

Generate a self-contained offline HTML Zi Wei Dou Shu report from birth data with validated K-line data.

Who is it for?

Producing an offline single-file HTML astrology report from solar birth date, time, and gender

Skip if: Birth dates outside 1900-2100 without lunar/chart context, or compatibility (合盘) reports (not built in)

When should I use this skill?

when a user needs a saveable offline Zi Wei Dou Shu HTML report and cannot install extra runtime dependencies

What you get

One offline HTML report with chart annotations, yearly fortune, and a validated life K-line

  • single-file offline HTML Zi Wei Dou Shu report

By the numbers

  • supports solar dates 1900-01-31 to 2100-12-31
  • report has 3 sections (annotation / yearly fortune / life K-line)
  • K-line values validated within 0-100

Files

SKILL.mdMarkdownGitHub ↗

紫微 AI 离线 HTML 报告(整合 Skill)

Overview

本 skill 将本仓库内已验证的排盘规则、提示词与命盘上下文格式交给任意 agent:可从阳历出生资料生成命盘上下文,再输出单个 HTML 文件,含「综合批注 / 流年运势 / 人生 K 线」三节。

排盘策略(建议优先:无 Node + 真太阳时)

路径命令要点依赖真太阳时
A. 纯 Python(默认推荐)python3 tools/ziwei_offline.py --solar ... --time ... --gender ... [--birthplace ...]仅 Python 3,无 Node / npm默认开启:有经纬度/可解析 birthplace 时按经度+时间方程换算后再定农历与时辰;--disable-true-solar-time 可关
B. iztro 对齐 App 星曜先 Python 输出「真太阳时后的阳历时分」,再喂 iztro,再拼上下文(见下)本目录 npm install + Node.js可一致:用 --emit-iztro-birth-json 把真太阳时口径注入 iztro
C. iztro 仅钟表(与 App 输入框一致)IZTRO_MODE=raw-clock 或直连 chart_iztro.cjs --solar --timeNode + npm(与用户在 App 里只填钟表时间相同)

结论:希望脱离 Node → 只用 路径 A(已含真太阳时)。希望主星与 App/iztro 一致且仍要真太阳时 → 用 路径 B(离不开 Node,因 iztro 为 JS 库),无法用「零依赖静态文件」替代。

路径 B 一键(环境变量;需已 npm install):

cd skills/ziwei-ai-html-report
SOLAR=1995-07-19 TIME=11:40 GENDER=male BIRTHPLACE="广东省深圳市" TARGET_YEAR=2026 ./tools/report_payload_iztro.sh

路径 B 分步(真太阳 → iztro → 上下文):

python3 tools/ziwei_offline.py --solar 1995-07-19 --time 11:40 --gender male \
  --birthplace "广东省深圳市" --target-year 2026 --emit-iztro-birth-json \
  | node tools/chart_iztro.cjs --birth-json - \
  | python3 tools/ziwei_offline.py --from-chart-json --target-year 2026 --format json

--emit-iztro-birth-json 输出一行 JSON(solarDatetimegendertrueSolarApplied),chart_iztro.cjs --birth-json - 从 stdin 读取;Python 再补齐 patterns、校验与三份 Context。

路径 C(无真太阳、纯钟表 iztro):IZTRO_MODE=raw-clock ./tools/report_payload_iztro.sh -- ... 或旧式 node chart_iztro.cjs --solar ... | python3 ... --from-chart-json

纯 Python:`tools/ziwei_offline.py`(标准库)。阳历范围 1900-01-31 至 2100-12-31。路径 A 为安星自研实现,与 iztro 在个别命盘上可能仍有差异;以 iztro 为准请用路径 B/C。

核心约束:违反字面即违反本意——不可因「节省时间」「用户急了」跳过输入校验或免责声明。

完整提示词与模板见同目录:prompts.md。HTML 样板见:report-template.html

运行前提(简化)

本 skill 运行在 agent 环境中,默认已有模型参与解读生成。 因此本文档聚焦于:离线排盘事实、提示词结构、HTML 交付一致性,不重复展开模型可用性说明。

When to Use

  • 需要在任意聊天模型 / agent 环境中输出离线可打开的命理报告;
  • 用户只提供阳历生日、出生小时、性别、分析年份,且无法或不愿安装额外运行时依赖;
  • 用户已粘贴本命 AI 上下文(及流年块,若做流年节),希望直接组装报告;
  • 交付物必须是单文件 HTML(便于保存、邮件、网盘分享)。

When NOT to Use

  • 用户生日超出 1900-2100 且无法提供农历/命盘上下文——当前离线历法表无法覆盖;
  • 仅需合盘:当前发布版不内置合盘节;若需要,请在本目录内新增独立提示词节;
  • 只想在现成产品 UI 内查看,而非交付离线 HTML。

输入契约(必填 / 可选用)

A. 出生资料(首选,可独立排盘)

最小输入:

字段说明
阳历日期YYYY-MM-DD,范围 1900-01-31 至 2100-12-31
出生时间HH:mm(推荐)或 hour(0-23)23:00-23:59 按晚子时换日
性别male/female 或 男/女
出生地可选;用于真太阳时换算,默认 hybrid 模式下优先在线地理编码,失败回退内置城市表
流年分析年可选,默认当前年

年龄口径:大限与流年叠宫使用虚岁分析年 − 农历生年 + 1)。报告页眉与流年上下文会同时标注周岁(截至分析年 12 月 31 日,以及截至生成日若与年末不同)。

运行工具生成上下文:

python3 tools/ziwei_offline.py \
  --solar 1996-01-06 \
  --time 11:30 \
  --gender female \
  --birthplace "广东省佛山市顺德区" \
  --target-year 2026 \
  --format json

输出 JSON 含:

字段用途
chart离线命盘结构化数据
natalContext综合批注用户上下文
yearlyContext流年运势用户上下文
klineData确定性人生 K 线数据,直接嵌入 HTML
klineContextK 线文字解读上下文;不得作为数值走势来源

标准示例(展示层):

  • 阳历生日:1996年1月6日
  • 农历生日:可不填(系统自动计算)
  • 出生时间:11:30
  • 性别:女
  • 出生地:广东省佛山市顺德区

对应机器字段:

  • solar=1996-01-06
  • time=11:30(或 hour=11
  • gender=female
  • birthplace=广东省佛山市顺德区
  • targetYear=2026(可选)

B. 本命上下文(备选)

在本 skill 的中州派规则下,以下内容之一视为有效本命输入

1. 首选:与本工具 build_prompt_context 输出等价的 Markdown 文本(以 【命盘完整信息】 开头,含 ## 十二宫星曜分布## 十二大限、按需含 ## 近年流年信息 等)。 2. 备选:结构化 JSON(可还原为同上 Markdown)。最小字段映射:

字段含义
命宫主星{ name, group?, description? }[],至少 name
身宫主星同上
身宫位置宫位名字符串
十二宫{ name, stem, majorStars[], minorStars[], adjectiveStars?, isBodyPalace?, decadalRange? }[]
大限{ palaceName, ageRange, stem, mutagens[] }[]
流年{ year, stem, branch, mutagens[], palaceName }[](可为空数组)
四化分布{ star, sihua: { name, effect }, palace }[]
格局提示string[]

若出生日期超出离线工具范围且无上述内容:停止生成断语,请用户补充可靠上下文,或输出仅含「信息不足说明」的 HTML(不得编造星曜)。

流年节(若 HTML 含「年度运势」)

若使用离线工具,直接使用输出的 yearlyContext。若用户提供上下文,则除本命上下文外,还须 【流年盘信息】 块:流年干支、流年四化、流年命宫;当前大限干支与四化;重点宫位星曜。禁止仅靠公历年份自行臆造叠宫。

K 线节

默认使用离线工具输出的 klineData 作为数值来源,直接填入 report-template.html#kline-dataklineContext 只用于生成 reason/brief 等文字补充,不得让模型自由决定 open/high/low/close

数值口径(示意分,峰值稀缺)tools/ziwei_offline.py 先计算 1-100 岁 raw score,再做全生命相对映射;收盘上限约 98、最高可到 100(常量 KLINE_CLOSE_CAP / KLINE_HIGH_CAP),允许少数最强年份接近满分,但应避免长段贴顶。校验允许 ∈ [0,100]。

路径 A 亮度:纯 Python 排盘会为主星写入 庙/旺/得/利/平/不/陷 亮度(对齐 iztro STARS_INFO),并用于 K 线评分与 HTML 排盘图展示。路径 B 仍可用于 App/iztro 对齐验证。

每条 `klineData` 含age/year/ganZhi/daYun/daYunRange、OHLC、scoredimensions(事业/财/情/健)、yearlyMutagens;合并 kline-brief.json 后可加 brief、可选 reason

报告页交互report-template.html 在 K 线图下提供悬停详情可展开的 1–100 岁数值表;用户无需另查 JSON 即可看每年数字与简评。流年长文仍在「年度流年运势」节。

产品对齐(历法与派别)

与本目录规则基线一致(见 `docs/rules-baseline.md`):中州派、正月初一分年/运限、23:00 晚子时换日。不得在未说明的情况下改用立春或其它流派。

时间口径:

  • 默认固定 UTC+8(不回溯历史夏令时);
  • 若提供经纬度或可解析出生地,将使用真太阳时:标准时 + 经度修正 + 时间方程
  • CLI 默认 --geocode-mode hybrid:在线优先,失败回退 tools/cn_locations.json,再失败则回退标准时;
  • 若需完全离线,可显式传 --geocode-mode offline;若需可复现坐标,优先传 --longitude/--latitude
  • 若缺少可用经纬度,则回退标准时并在输出中给出提示。

离线工具内置:

  • 1900-2100 阳历转农历压缩表;
  • 命宫/身宫、十二宫、五虎遁宫干、五行局;
  • 紫微/天府与十四主星;
  • 左辅右弼、文昌文曲、魁钺、禄存羊陀、火铃、空劫;
  • 生年四化、大限、目标流年上下文。

当前有意保守:

  • 不依赖外部排盘库的亮度体系,输出中亮度可为空;
  • 不宣称与任何商业排盘工具 100% 一致,除非后续用样例逐条对齐。

执行步骤(agent)

1. 校验输入:若有出生资料,先运行 tools/ziwei_offline.py 生成 JSON;若已有上下文,确认存在 natalContext 等价文本与 yearlyContext。 2. 排盘自检:确认 JSON 含 chart.palaces 12 宫、fiveElementsClassnatalContextyearlyContextklineContextklineData。 3. 渲染提示词(推荐):运行 tools/render_prompts.py --payload-json payload.json --out-dir work --work-root work,读取 prompt-manifest.json勿手抄 prompts.md,以渲染文件为唯一注入来源。 4. 模型生成产物

  • natal.html:用 prompts/natal.system.md + natal.user.md
  • yearly.html:用 yearly.system.md + yearly.user.md
  • kline-brief.json:用 kline.system.md + kline.user.md,仅可返回 age/brief/reason,不得返回或改写 open/high/low/close

5. K 线:数值必须使用离线工具输出的 klineData;如需文字说明,只能将模型生成的 brief/reason 合并到对应年龄。 6. K 线自检(修正前不得写入 HTML):

  • 100 条,age 为 1–100 各出现一次;
  • age===1open === 50
  • age>1open 与上一条 close 在数值上一致(容差 1e-6,或两位小数相等);
  • high >= max(open,close)low <= min(open,close),且所有数值 ∈ [0,100];满分附近应是少数高峰,勿人为改成长段顶格。

7. 组装 HTML:使用 tools/generate_report.pyreport-template.html 组装;正式交付禁止 --skip-validation。页面顺序固定:紫微排盘图紫微命盘综合批注流年运势人生运势 K 线(含悬停/表格查每年 OHLC 与 brief)→ 数据完整性状态。将命盘 JSON 填入 script#chart-data,将综合/流年正文填入对应 #content-*,将合并后的 K 线 JSON 嵌入 script#kline-data;页脚保留与提示词等价的免责声明。 8. 输出:向用户交付完整 <!DOCTYPE html> 文档(可复制为 .html 文件后直接双击打开)。

运行模式

模式 A:模型增强(推荐)

  • 使用离线工具得到 natalContext/yearlyContext/klineData/klineContext
  • render_prompts.py 生成 prompt 文件与 prompt-manifest.json
  • 得到综合批注、流年正文与可选 kline-brief.json 后,用 generate_report.py 组装 HTML;
  • K 线数值由工具生成并通过强校验;模型只可补充文字,不可改变走势数值。

Quick Reference

报告章节System 提示来源User 数据来源
排盘上下文tools/ziwei_offline.py阳历日期 + 小时 + 性别 + 分析年
综合批注prompts.md 第 1 节natalContext
年度运势prompts.md 第 2 节natalContext + yearlyContext
人生 K 线离线工具确定性评分klineData(数值)+ klineContext(文字参考)

Baseline Pressure Scenarios(无 skill 时常见失效)

记录在案,用于自检 skill 是否被遵守:

场景常见错误行为
仅有生日性别不运行离线工具,直接写命宫主星与断语
用户催促跳过 K 线 JSON 连续性校验,或让模型替代确定性 K 线数值
环境惯性在仅需 Python 路径时仍强迫 npm install / iztro(路径 A 不要 Node)
交付形式仅给 Markdown 片段,不给单文件 HTML
流派自行改用立春换年

Red Flags — STOP & Realign

  • 有出生资料却未运行 tools/ziwei_offline.py 就产出具体星曜落宫;
  • 离线工具报错(日期超范围/输入缺失)仍继续断语;
  • K 线 open[n] ≠ close[n-1] 仍入库;
  • klineData 却改用模型自由生成 open/high/low/close
  • 删除或改写免责声明以「更好看」;
  • npmiztro 或 Node 列为必选才能完成报告(默认可用纯 Python;iztro 仅在为对齐 App 星曜时可选)。

Rationalization Table

借口事实
「差不多能推出命宫」必须运行离线工具或读取可靠上下文
「用户没空打开应用」正是使用离线工具的场景
「Markdown 对用户更方便」本 skill 明确要求单文件 HTML
「测试后再校验 K 线」必须先校验再写入模板
「模型更懂走势」模型只适合补充描述;数值走势必须来自确定性评分工具
「描述性一句话即可代替免责声明」必须保留提示词中与参考性、勿执着一致的表述

Common Mistakes

  • HTML 外的裸 JSON 当作最终交付物;
  • 排盘:手写星曜落宫而不是运行 tools/ziwei_offline.py
  • 流年:缺大限锚点或 yearlyContext 却仍写叠宫;
  • K 线:优先嵌入工具输出的 klineDatayear 字段若填入,应与 birthYear + age - 1 一致;
  • 在 skill 正文重复粘贴全套 system prompt——应引用 prompts.md 以保持单一事实来源。

Related skills

FAQ

Does it require Node.js?

No, the default recommended path A uses pure Python 3 with no Node or npm; an optional Node/iztro path B exists only when star placements must match the iztro app.

What date range is supported?

The offline tool supports solar dates from 1900-01-31 to 2100-12-31; dates outside that range require supplied lunar/chart context or it stops rather than invent placements.

Office & Documentsnotesworkflow

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.