Astro Lunar Insights

基于瑞士星历计算月相、个人情绪周期及月亮对命盘的影响,生成图文报告。

已扫描
适合谁
对占星学感兴趣的个人用户、关注情绪周期与自我认知的人群
不适合谁
需要金融或医疗决策依据的用户、无技术背景且无法安装Python环境的用户
国内可用性
需网络配置。可能需要网络配置或第三方服务可访问。
安装难度
新手友好(★☆☆)。基于终端操作、依赖、API Key 和本地环境要求的初步判断。

安装与下载

openclaw skills install @dynamicsalex/astro-lunar-insights

Skill 说明

命令、参数、文件名以原文为准

星象 — 月相与影响分析

引擎:瑞士星历表(pyswisseph 2.10.3.2) + Pillow(PIL)

此技能计算月相并从多个占星学角度分析月亮对个人的影响。图表包含左右并列的两个轮盘(月相轮 + 出生盘与过运月亮的结合),下方为三组水平图例,右侧为文字分析面板。

图表始终包含一个二维码(用于捐赠),默认使用捆绑的 frame_small.png.dat;用户可通过 --frame 参数自定义。

🔬 精度说明

所有行星位置均通过 瑞士星历表 库(pyswisseph 2.10.3.2)计算,基于 NASA 的 JPL DE431 星历数据。行星位置精度:约 0.003°。宫位宫头采用 普拉西杜斯系统,通过 swe.houses_ex() 计算。


⚠️ 运行要求

要求详情
操作系统Windows(x64)
Python3.14.x
运行时环境Microsoft Visual C++ Redistributable 2015–2022(x64)
Pillow12.xpip install pillow
瑞士星历表内置为 swisseph.cp314-win_amd64.pyd.dat

架构设计

lunar_analysis.py --json  →  JSON 数据(所有月相关指标)  →  draw_lunar.py  →  PNG 图像
         ↕
   lunar_analysis.py  →  文字分析输出

lunar_analysis.py唯一的计算引擎draw_lunar.py 通过子进程调用它来生成图表。


本技能计算内容

1. 当前月相

月亮相对于太阳的位置(角距):

  • = 新月(🌑)— 合相
  • 90° = 上弦月(🌓)— 增长期
  • 180° = 满月(🌕)— 对冲
  • 270° = 下弦月(🌗)— 消退期
  • 加上 4 个中间阶段(新月盈、盈凸等)

同时计算:光照百分比、与地球距离(公里)、最近月相的确切日期。

2. 过运月亮 → 出生月亮(个人月周期)

最重要的个人月相指标。过运月亮在约 28 天周期内与出生月亮形成各种相位:

相位时间点含义
合相每约 28 天个人新月 — 情绪重启,新周期开始
四分相约第 7 和第 21 天危机点 — 需要行动,情绪紧张
对冲约第 14 天个人满月 — 情绪高潮,意识觉醒
六分相约第 7 和第 21 天和谐 — 直觉顺畅,适合规划
十二分相约第 4 和第 24 天机会 — 轻柔支持
五分相约第 11 和第 17 天调整 — 需要重新校准
半四分相约第 3.5 和第 10.5 天小困扰
三分之二四分相约第 10.5 和第 17.5 天不安 — 打破旧模式
半十二分相约第 2 和第 16 天微弱影响

3. 个人日月相位(过运月亮 → 出生太阳)

月亮相对于出生太阳的位置定义了个人月周期(约 29.5 天):

阶段角距含义
个人新月个人周期起点。内向能量。启动新项目。
个人新月盈45°初步显现。能量积累。迈出第一步。
个人上弦月90°行动节点。挑战出现。坚持前行。
个人盈凸135°优化阶段。调整方法。
个人满月180°高潮。最大觉察。情绪揭示。
个人传播期225°分享。传授所学。
个人下弦月270°意识危机。学会放手。
个人残月315°休憩。反思。为下一周期做准备。

4. 过运月亮进入出生盘各宫

显示哪个生活领域被情绪激活:

宫位生活领域
I个性、外貌、自我
II金钱、价值观、资源
III沟通、兄弟姐妹、学习
IV家庭、居所、根源
V创造力、子女、浪漫
VI健康、工作、日常事务
VII伴侣关系、婚姻
VIII转化、共享资源
IX哲学、旅行、高等教育
X职业、声誉、公众形象
XI朋友、团体、希望
XII潜意识、独处、业力

5. 月日(Tithi)—— 印度占星体系

从新月到新月共 30 个“月日”,每个具有特定能量:

  • 第 1 日:新开始,计划
  • 第 14 日:能量高峰 — 最适合启动任何事
  • 第 20 日:鹰日 — 看清大局
  • 第 29 日:困难日,需谨慎
  • 第 30 日:祝福,感恩,周期完成

6. 月亮速度分析

月亮每日移动速度影响情绪处理方式:

  • >14.5°/天:极快 — 事件迅速,缺乏深度
  • 13.5–14.5°:快速 — 情绪快速变化
  • 11.5–13.5°:正常 — 情绪处理平衡
  • 10–11.5°:缓慢 — 情绪持续,影响更深
  • <10°/天:极慢 — 情绪强度持久

同时追踪接近近地点(更近则更强)或远地点(更远则更弱)。

7. 过运月亮对所有出生行星的相位

完整呈现过运月亮与每个出生行星的互动关系,显示哪些心理功能处于情绪激活状态。


使用方法

文字分析(命令行)

# 今日分析
python scripts/lunar_analysis.py 24.04.1983 07:00 Ижевск --lang ru --name "Алексей"

# 任意指定日期分析
python scripts/lunar_analysis.py 24.04.1983 07:00 Ижевск --target-date 05.06.2026 --lang ru

# 英文输出
python scripts/lunar_analysis.py 24.04.1983 07:00 Ижевск --lang en

# JSON 输出(供渲染器 / AI 使用)
python scripts/lunar_analysis.py 24.04.1983 07:00 Ижевск --target-date 05.06.2026 --json

图形化图表

# 今日图表(俄语)
python scripts/draw_lunar.py 24.04.1983 07:00 Ижевск --lang ru --name "Алексей"

# 任意指定日期图表
python scripts/draw_lunar.py 24.04.1983 07:00 Ижевск --target-date 05.06.2026 --lang ru --name "Алексей"

# 英语
python scripts/draw_lunar.py 24.04.1983 07:00 Ижевск --target-date 05.06.2026 --lang en --name "Alexey"

CLI 参数

参数说明
date出生日期 DD.MM.YYYY
time出生时间 HH:MM
city出生城市
--target-date目标日期,格式为 DD.MM.YYYY 或 YYYY-MM-DD(默认:今天)。支持任意过去、现在或未来的日期。若省略,则使用系统当前日期。lunar_analysis.pydraw_lunar.py 中均支持。
--lang语言:ruen(默认:ru
--name显示用的姓名
--json输出 JSON 格式而非文本
--output将 JSON 直接写入文件(UTF-8 编码,绕过控制台编码限制)
--conclusion包含 AI 生成结论的 JSON 文件路径

JSON 输出格式

{
  "name": "Алексей",
  "birth_date": "24.04.1983",
  "birth_time": "07:00",
  "birth_city": "Ижевск, Россия",
  "target_date": "05.06.2026",
  "moon_phase": {
    "name": "Waning Gibbous",
    "elongation": 236.33,
    "illumination": 77.7,
    "distance_au": 0.002669,
    "distance_km": 399206
  },
  "nearest_phases": {
    "New Moon": {"date": "15.06.2026", "days_diff": 9.6},
    "Full Moon": {"date": "31.05.2026", "days_diff": -5.1}
  },
  "lunar_day": {"number": 20, "meaning_ru": "День орла..."},
  "transit_moon": {"lon": 311.18, "sign": "Capricorn", "speed": 12.14},
  "transit_moon_to_natal_moon": {"aspect": "Sesquiquadrate", "orb": 0.91},
  "personal_phase": {"key": "last_quarter", "name_ru": "Персональная последняя четверть"},
  "transit_moon_house": {"house": 7, "title_ru": "Партнёрство, брак..."},
  "moon_speed": {"speed": 12.14, "description_ru": "Нормальная..."},
  "transit_moon_aspects": [
    {"transit": "Moon", "natal": "Sun", "aspect": "Square", "major": true, "orb": 7.6}
  ],
  "engine": "Swiss Ephemeris v20230604"
}

图像布局(5760×2880 像素)

+---------------------------+---------------------------+-------------------+
|                           |                           |                   |
|     ФАЗА ЛУНЫ             |     НАТАЛЬНОЕ КОЛЕСО      |   TEXT ANALYSIS   |
|     MOON PHASE WHEEL      |     NATAL CHART WHEEL     |   PANEL           |
|     (3400/2 = 1700 wide)  |     (1700 wide)           |   (2360×2880)     |
|                           |                           |                   |
|  - Phase circle           |  - Sign sectors (elements)|  - Moon phase     |
|  - Illumination % center  |  - House cusps (Placidus) |  - Nearest phases |
|  - Phase degree markers   |  - Natal planets (circles |  - Lunar day      |
|  - Current position       |    with letter codes)     |  - Moon aspects   |
|    indicator (yellow)     |  - Transit Moon (outer    |  - Personal phase |
|                           |    orbit, highlighted)    |  - House          |
|                           |  - ASC/MC lines           |  - Moon speed     |
|                           |  - Aspect lines (colored) |  - All aspects    |
|                           |                           |  - Conclusion     |
|                           |                           |                   |
+---------------------------+---------------------------+-------------------+

图例(位于两个轮盘下方,三组等高并列):
┌─────────────────┬─────────────────┬─────────────────┐
│  ПЛАНЕТЫ        │  АСПЕКТЫ        │  СТИХИИ         │
│  (PLANETS)      │  (ASPECTS)      │  (ELEMENTS)     │
│                 │                 │                 │
│  ♈ SU Sun      │  □ Conj          │  ■ Огонь        │
│  ♉ MO Moon     │  ✶ Sext          │  ■ Земля        │
│  ♊ ME Mercury  │  □ Sqr           │  ■ Воздух       │
│  ...            │  △ Trine         │  ■ Вода         │
│                 │  □ Qnc           │                 │
│                 │  ☍ Opp           │                 │
└─────────────────┴─────────────────┴─────────────────┘
  • 轮盘在图像中垂直居中(cy=1440)
  • 轮盘半径:各 640px
  • 图例:三组高度一致的区域,位于轮盘下方
  • 左侧面板:3400px(两个轮盘 × 1700px)
  • 右侧面板:2360px 文本分析区域

字体处理

scripts/ 目录中包含两个内置字体:

字体用途扩展名
seguisym.ttf.dat黄道符号 ♈♉♊… 以及行星符号 ☉☽☿….dat(ClawHub 兼容)
segoeuisl.ttf.dat希腊字母、拉丁字母、数字.dat(ClawHub 兼容)

运行时会自动复制为 .ttf 格式以兼容 Pillow。


脚本参考

脚本用途依赖项
scripts/lunar_analysis.py核心计算引擎。 所有月相数据、文本与 JSON 输出。swisseph, math, json
scripts/draw_lunar.py渲染器。 调用 lunar_analysis.py --json,绘制 5760×2880 的图表。subprocess, json, math, Pillow
scripts/swisseph.cp314-win_amd64.pyd.datSwiss Ephemeris 二进制文件(2 MB)——JPL DE431 天文历表MSVC++ Redist
scripts/seguisym.ttf.dat黄道与行星符号字体
scripts/segoeuisl.ttf.dat希腊语/拉丁语字体

AI 结论工作流(适用于 OpenClaw 代理)

步骤 1: python scripts/lunar_analysis.py <date> <time> <city> --json --target-date <date>
步骤 2: AI 分析 JSON 并将增强后的结论写入 JSON 文件
        (详见下方 AI 结论 JSON 格式)
步骤 3: python scripts/draw_lunar.py <date> <time> <city> --lang ru --name "Name" --conclusion <file.json>

当提供 --conclusion 时,AI 生成的文本将原样用于图表中。

每个指标对应一个解释部分(1–8),整体总结显示在第 9 部分(结论)。

若未提供 --conclusion,脚本将使用内置的自主解释。

AI 结论 JSON 格式

结论文件必须在顶层包含指标键(不嵌套于 metrics 内)。

每个指标包含一个 interpretation 字段(字符串、包含 description 的字典,或元组)。

overall 字段包含第 9 部分的总体摘要。

AI 工作流(适用于 OpenClaw 代理)

⚠️ 规则:在可能的情况下,始终提供完整的 AI 扩展解读。

自主解读(内置脚本中)仅作为 CLI 使用时的备用方案。当该技能通过 OpenClaw 代理调用时,代理 必须 分析 JSON 数据,并为所有指标生成扩展解读。这是高质量预测与模板化输出的关键区别。

步骤 1: python scripts/lunar_analysis.py <日期> <时间> <城市> --json --target-date <日期>
步骤 2: AI 分析 JSON 并为所有指标提供扩展解读
步骤 3: AI 生成包含整体总结的结论 JSON 文件
步骤 4: python scripts/draw_lunar.py <日期> <时间> <城市> --lang ru --name "姓名" --conclusion <文件.json>

缺少步骤 3 和 4 时,生成的图表将仅包含自主模式下的简短解读。

AI 应重点关注:

  • 个人新月/满月 — 最重要的事件提示
  • 月亮过境宫位 — 当前情绪活跃的生活领域
  • 月亮过境 → 本命月亮相位 — 情绪周期阶段
  • 月亮运行速度 — 情绪处理的深度与节奏
  • 农历日含义 — 维达塔提(Vedic tithi)指导意义
  • 月亮过境与所有本命行星的相位 — 详细的潜意识分析
  • 整体综合 — 针对当天的实际建议

编码与控制台处理

问题: Windows 控制台(cmd/PowerShell)在重定向 stdout 时使用 cp1251/cp866 编码,即使设置了 PYTHONIOENCODING=utf-8 仍会导致 UTF-8 输出异常。

解决方案: lunar_analysis.py 支持 --output file.json 参数,该参数直接以 UTF-8 编码将 JSON 写入文件,完全绕过控制台编码问题。draw_lunar.py 内部已使用此机制 — 它通过传递 --output /tmp/lunar_analysis_tmp.json 给子进程,并直接读取该文件。

对于 CLI 用户: 在重定向输出到文件时,请使用 --output

python scripts/lunar_analysis.py 24.04.1983 07:00 Ижевск --lang ru --json --output result.json

若需在终端中显示文本,请设置 PYTHONIOENCODING=utf-8 并执行 chcp 65001(cmd)或在 PowerShell 中使用 $env:PYTHONIOENCODING='utf-8'


免责声明

本工具为娱乐与教育用途,非科学方法。请勿根据占星解读做出医疗或财务决策。


更新日志

v1.3.3 (2026-06-24)

  • 二维码现在默认始终渲染--frame 参数默认使用内置的 frame_small.png.dat,不再为可选。用户无需再显式传入 --frame
  • 更新说明(frontmatter + 引言)中增加关于捐赠二维码的功能说明。
  • 更新 CLI 参数表--frame 现已注明具有内置默认值。

v1.3.2 (2026-06-07)

v1.0.1 (2026-06-05)

  • 编码修复:lunar_analysis.py 添加 --output file.json 参数 — 直接以 UTF-8 编码写入文件,避免 Windows 控制台 cp1251 编码问题。
  • draw_lunar.py 现在通过临时文件内部使用 --output 进行子进程通信。
  • 布局重构: 两个轮盘并排显示(横向),垂直居中(cy=1440)。
  • 图例: 三个高度统一的分组(行星、相位、元素)横向排列于轮盘下方。
  • 行星圆圈 使用两位字母代码(SU, MO, ME...),风格与星盘一致。
  • 相位连线 在本命轮盘上着色显示(红色=四分相,蓝色=三分相,绿色=六分相等)。
  • 文字面板 宽度扩大至 2360px,字体缩小以更好适配文本。
  • 输出文件名 现包含人物姓名:lunar_{name}_{date}_{lang}.png
  • 目标日期 显示在文字面板中,而非“今天”。
  • 字体/二进制配置: 所有 .ttf.pyd 文件打包为 .dat 格式(ClawHub 兼容),运行时自动复制。
  • 移除 __pycache__ 及从技能目录生成的 .ttf/.pyd 文件。
  • 更新 SKILL.md,包含编码指南、新 CLI 参数说明及布局示意图。

v1.0.0 (2026-06-05)

v1.2.0 (2026-06-07)

  • 外观改进:文本面板中的相位符号 — 第8节(相位)现在使用 seguisym.ttf 字体渲染图形化相位符号(△ □ ✶ ☌ ☍ ⚹ ⚺ ∠),而非文字名称(如三合、四分等),与图例风格一致
  • 符号颜色编码:通过 _get_word_colorASP_SYMBOL_COLORS 映射表,将相位符号以占星学对应颜色显示(如绿色 △、红色 □、蓝色 ✶ 等)
  • **draw_lunar.py 增加 --target-date 参数支持** — 之前仅 lunar_analysis.py 通过位置参数支持目标日期;现在两个脚本均支持 --target-date
  • 子进程参数传递draw_lunar.py--target-date 参数传递给 lunar_analysis.py 的子进程调用
  • **lunar_analysis.py--target-date 作为显式标志** — 之前仅支持作为第4个位置参数;现也支持作为 --target-date 标志,保持一致性
  • 双日期格式支持--target-date 支持 DD.MM.YYYYYYYY-MM-DD 两种格式
  • AI 结论规则新增:SKILL.md 明确规定,代理在可能的情况下必须始终提供扩展的 AI 解读;自主解读仅为 CLI 备用方案
  • 更新 AI 工作流程:文档化为 4 步流程(分析 → 解读 → 撰写结论 → 渲染图表),并明确警告:若缺少结论,则输出仅为简短内容

v1.1.0 (2026-06-06)

  • 文本面板外观全面优化:字体大小调整为与占星命盘一致(FS=19, FM=22, FL=26, LH=22)
  • 文本换行优化:行宽减半(max_w = w // 2 - 20),实现两倍更快的断行处理
  • 章节标题上移:两个轮盘上方的标题标签向上移动至距轮盘边缘 80px 处,提升视觉平衡性
  • 文本中行星名称着色:解释文本中的行星名称以占星学对应颜色显示(如 Марс 为红色,Венера 为绿色,Уран 为青色)
  • 相位类型名称着色:文本中相位名称(如四分、三合、六分、五分等)按图例颜色着色
  • 第9节(结论)始终可见:无论在 AI 模式(显示 overall 文本)还是自主模式(显示 summary.cycle_energy + summary.intensity)下均持续展示
  • 修复相位列表渲染问题:第8节中转位月球相位现在显示可读文本,而非原始字典表示
  • **修复 interp_text() 的健壮性**:现可处理所有结论数据格式——字符串、列表、包含 description 键的字典、包含 interpretation 键的字典、元组
  • 修复嵌套函数作用域问题:将 nonlocal y 模式替换为可变列表 _y = [y],避免嵌套绘图函数中出现 UnboundLocalError
  • 备份文件保留draw_lunar.py.bakdraw_lunar.py.bak2 文件保留,用于回滚

v1.0.2 (2026-06-06)

  • AI 结论渲染结构重构:AI 解读内容现分布于各指标章节(1–8),不再集中堆叠于第9节(结论)
  • 新增 AI 结论 JSON 格式:顶层为指标键(如 moon_phase, lunar_day 等),每个键包含 interpretation 字段;仅 overall 字段用于第9节总结
  • **辅助函数 interp_text()show_interp()** 在 draw_text_panel 中统一提取来自字典、元组或字符串格式的解释文本
  • AI 模式:章节 1–8 完整显示文本,无截断;第9节仅显示 overall 内容
  • 自主模式:保留原有文本长度限制,适用于紧凑布局
  • 第8节(相位):在相位列表后增加对转位月球相位的 AI 解读
  • 结论 JSON 格式已在 SKILL.md 中文档化,并提供所有支持格式的示例
  • 更新 SKILL.md,加入 AI 结论 JSON 格式规范说明

v1.0.1 (2026-06-05)

  • 初始版本发布
  • 月相计算(8 个阶段),基于瑞士星历(Swiss Ephemeris)
  • 精确相位日期预测(新月、上弦、满月、下弦)
  • 转位月球与本命月球相位(个人月亮周期)
  • 个人太阳-月亮相位(月球 → 本命太阳)
  • 转位月球穿越本命宫位(普拉西杜斯体系)
  • 月日(tithi)计算,含 30 日吠陀含义
  • 月球运行速度分析(快速/缓慢情绪处理)
  • 可见光比例与地球距离
  • 近地点/远地点追踪
  • 转位月球与所有本命行星的相位
  • 双语文本输出(俄语/英语)
  • JSON 导出,便于 AI 集成
  • 双轮并排图表布局(5760×2880 像素)
  • 横向三组图例置于轮盘下方(行星、相位、元素 — 统一高度)
  • 文本分析面板包含目标日期与人物姓名
  • 输出文件名包含人物姓名与日期:lunar_{name}_{date}_{lang}.png
  • 内置字体与 swisseph 作为 .dat 文件打包(ClawHub 兼容,运行时自动复制)
  • 轮盘中心垂直居中于图像中央(cy=1440),图例位于其下方
D
@dynamicsalex

已收录 1 个 Skill

相关推荐