Skip to content

dayuer/aicard

Repository files navigation

🎴 AI Card

高美学知识卡片生成系统 — 从 SVG 到社交媒体一键发布

Python 3.11+ MIT License 28 Themes WeChat Sticker


✨ 核心特性

  • SVG-First 矢量架构 — Jinja2 模板驱动,设计 Token 参数化,支持 14 套配色方案
  • 300dpi 印刷级渲染 — CairoSVG 高精度输出 PNG / JPEG,中文排版像素级还原
  • 原生可编辑 PPTX — DrawingML 混合导出,文字双击即可修改(非贴图方案)
  • 微信公众号一键贴图 — 自动渲染 → 上传永久素材 → 创建贴图草稿 → 发布
  • 28 个内置主题 — 思维模型、商业洞察、AI 实践等,开箱即用
  • 本地画廊预览 — Web UI 浏览所有卡片,选中配色一键发布到微信

🚀 快速开始

1. 安装依赖

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

系统依赖:需要安装 Cairo。macOS: brew install cairo

2. 一键渲染测试

python3 run_test.py

产出:

  • web/projects/first_principles/svg_output/ → SVG 源码
  • web/projects/first_principles/exports/page_XX.png → 300dpi 高清卡片
  • web/projects/first_principles/exports/first_principles.pptx → 可编辑 PPTX

3. 批量渲染所有主题

# 查看所有内置主题
python3 batch_render.py --list

# 渲染全部 28 个主题
python3 batch_render.py

# 仅渲染指定主题
python3 batch_render.py --ids antifragile first_principles flywheel_effect

4. 本地画廊预览

python3 build_gallery.py
python3 scripts/preview_server.py --port 8000

打开 http://localhost:8000 浏览作品画廊。


📱 微信公众号贴图发布

配置凭证

cp .env.example .env
# 编辑 .env,填入公众号的 AppID 和 Secret

发布流程

  1. 启动预览服务器:python3 scripts/preview_server.py --port 8000
  2. 打开 http://localhost:8000
  3. 点击任意主题卡片 → 选择配色方案 → 点击 「发布贴图」
  4. 系统自动执行:渲染 SVG → 导出 PNG → 上传永久素材 → 创建贴图草稿 → 发布

贴图格式:使用微信公众号 newspic 类型(图片消息),在「看一看」信息流中获得公域流量推荐。


📁 项目结构

ai-card/
├── batch_render.py          # 全主题一键批量渲染入口
├── build_gallery.py         # 作品画廊数据生成器
├── run_test.py              # 端到端测试脚本
├── requirements.txt         # Python 依赖
├── .env.example             # 微信凭证模板
│
├── topics/                  # 28 个主题配置(JSON 元数据)
│   ├── first_principles.json
│   ├── antifragile.json
│   └── ...
│
├── scripts/                 # 核心引擎
│   ├── template_engine.py   # SVG 模板渲染引擎(Jinja2)
│   ├── design_system.py     # 配色、字体、纹理 Token 定义
│   ├── categories.py        # 16 大内容分类及场景配置
│   ├── render_card.py       # SVG → PNG/JPG 300dpi 渲染
│   ├── export_pptx.py       # DrawingML 可编辑 PPTX 导出
│   ├── quality_check.py     # SVG 静态合规性质量检查
│   ├── topic_loader.py      # 主题 JSON 加载器
│   ├── audit_tools.py       # 文本溢出审计工具
│   ├── wechat_publisher.py  # 微信公众号贴图发布客户端
│   └── preview_server.py    # 本地预览服务器(含发布 API)
│
├── templates/               # Jinja2 SVG 模板
│   ├── _footer.svg.j2       # 共用页脚组件
│   ├── cover.svg.j2         # 封面模板
│   ├── content.svg.j2       # 内容页模板
│   ├── closing.svg.j2       # 收尾模板
│   ├── quote.svg.j2         # 金句模板
│   ├── poster.svg.j2        # 海报模板
│   └── data.svg.j2          # 数据页模板
│
└── web/                     # 前端展示
    ├── index.html           # 作品画廊页面(配色切换 + 微信发布 UI)
    ├── gallery_data.json    # 画廊元数据(自动生成)
    └── projects/            # 各主题项目目录
        └── {topic_id}/
            ├── content.json # 页面内容数据
            ├── svg_output/  # 渲染的 SVG(.gitignore 排除)
            └── exports/     # PNG / PPTX 导出(.gitignore 排除)

🔧 CLI 工具箱

# 查询配色方案
python3 scripts/design_system.py --list-palettes

# 查询内容分类
python3 scripts/categories.py --list

# SVG → PNG 渲染
python3 scripts/render_card.py web/projects/first_principles/svg_output/ \
    --format png --output-dir web/projects/first_principles/exports/

# PPTX 导出
python3 scripts/export_pptx.py web/projects/first_principles/ \
    --output web/projects/first_principles/exports/first_principles.pptx

# 质量检查
python3 scripts/quality_check.py web/projects/first_principles/svg_output/ \
    --palette dark_amber

# 文本溢出审计
python3 -m scripts.audit_tools overflow

🎨 设计系统

配色方案

默认使用 dark_amber(暗底琥珀金),另有 13 套配色可选。每套配色定义了:

  • bg 背景色 / fg 前景色 / accent 强调色 / muted 辅助色
  • 三层呼吸底纹(radial gradient + 点阵 + 线性渐变)

排版体系

  • 标题:宋体衬线栈(Songti SC → Noto Serif SC → Source Han Serif SC)
  • 正文:黑体无衬线栈(PingFang SC → Noto Sans SC → Source Han Sans SC)
  • 画布规格:3:4 竖版(1080 × 1440px),适配社交媒体分享

宪法条款

系统设立了 7 条最高优先级视觉规范,确保 AI Agent 自主生成时的视觉一致性:

条款 规则
§1 页码 两位零填充 01 / 03,禁止 Unicode 圈号
§2 页脚 强制 {% include '_footer.svg.j2' %},禁止内联
§3 上下文 必传 palette / typo / texture / page_label 等变量
§4 导航条 内容页顶部横线前导导航,accent 色 3px 圆角
§5 高亮 [[文本]] 自动解析为 accent 色 tspan
§6 文案 口语化短句,菱形列表,反问收尾
§7 幽灵字 封面/收尾页右上角巨型首字,opacity 0.04~0.06

📝 添加自定义主题

  1. 创建 topics/my_topic.json
{
  "id": "my_topic",
  "topic": "我的主题",
  "topic_en": "My Topic",
  "category_id": "thinking_models",
  "scenario_id": "practical",
  "palette_id": "dark_amber"
}
  1. 创建 web/projects/my_topic/content.json(页面内容数据)

  2. 渲染:python3 batch_render.py --ids my_topic


🔄 数据流

topics/*.json ──┐
                ├─→ topic_loader.py 合并
content.json ───┘       │
                        ├─→ template_engine.py(注入 Token + 纹理)→ SVG
                        ├─→ quality_check.py(静态校验)→ PASS / FAIL
                        ├─→ render_card.py(CairoSVG)→ 300dpi PNG
                        ├─→ export_pptx.py(DrawingML)→ 可编辑 PPTX
                        └─→ wechat_publisher.py → 微信贴图发布

📄 License

MIT © AI Card Contributors

About

🎴 高美学知识卡片生成系统 — SVG 矢量渲染 → 300dpi 高清 PNG → 可编辑 PPTX → 微信公众号贴图一键发布。28 个内置主题,14 套配色方案。

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors