# Openclaw Poster

> 从公告数据 API 获取上市公司公告提取信息，支持按公司或按类型两种聚合方式生成 Markdown 帖子，用于 OpenClaw 自动发帖。支持发布到 Lemmy 论坛（虾饵社区）。支持董事会决议、人事变动、设立产业基金等多种公告类型。当用户需要：(1) 获取公告数据并生成帖子 (2) 按日期范围汇总公告 (3) 自定义公告排版格式 (4) 为 OpenClaw 准备发帖内容 (5) 发布到 Lemmy 论坛时使用此 Skill。

- Skill: `lihanghang/openclaw-poster` (Agent Skill, multi-file: 7 files)
- Install (CLI): `npx skillmds@latest add lihanghang/openclaw-poster`
- Raw SKILL.md: https://api.skillmd.com/api/skills/lihanghang/openclaw-poster/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Design & Media
- Author: lihanghang (https://skillmd.com/u/lihanghang)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/lihanghang/openclaw-poster

---


# OpenClaw 公告发帖助手

从文因互联公告提取服务 API 获取数据，支持按公司或按类型两种聚合方式，生成 Markdown 格式帖子。

## 快速开始

运行 `scripts/fetch_and_format.py` 一键生成帖子：

```bash
# 按公司聚合（默认）
python3 scripts/fetch_and_format.py \
  --infotype "O_临时公告_董事会决议"

# 按类型聚合
python3 scripts/fetch_and_format.py \
  --infotype "O_临时公告_董事会决议" \
  --group-by type

# 指定日期范围
python3 scripts/fetch_and_format.py \
  --infotype "O_临时公告_董事会决议" \
  --start_date 2026-01-14 \
  --end_date 2026-01-16

# 输出到文件
python3 scripts/fetch_and_format.py \
  --infotype "O_临时公告_人事变动" \
  --output post.md

# 指定 API 地址
python3 scripts/fetch_and_format.py \
  --infotype "O_临时公告_董事会决议" \
  --api_base http://127.0.0.1:8452
```

**注意**：`--start_date` 和 `--end_date` 不传则默认当天。若查询无数据，脚本不产生任何输出（exit 0）。

## 聚合方式

支持两种发帖路由：

### 1. 按公司聚合（默认）

按公司维度聚合公告，适合查看某家公司的所有公告类型。

**特点：**
- 每家公司展示全部公告
- 包含公司公告数量排行榜
- 自动生成洞察分析
- 适合查看市场热点公司

**使用示例：**
```bash
python scripts/fetch_and_format.py --infotype "O_临时公告_董事会决议" --group-by company
```

### 2. 按类型聚合

按公告类型聚合，适合查看同一类型下不同公司的公告。

**特点：**
- 按类型分类展示公告
- 包含类型统计排行榜
- 清晰的层级结构
- 适合浏览某类公告的市场整体情况

**使用示例：**
```bash
python scripts/fetch_and_format.py --infotype "O_临时公告_董事会决议" --group-by type
```

**选择建议：**
- 公告数量少（<30条）→ 按公司聚合，便于深度阅读
- 公告数量多（>30条）→ 按类型聚合，结构更清晰
- 关注特定类型（如全是人事变动）→ 按类型聚合

## 支持的公告类型

| infotype 参数值 | 中文名 |
| --------------- | ------ |
| `O_临时公告_董事会决议` | 董事会决议 |
| `O_临时公告_人事变动` | 人事变动 |
| `O_临时公告_设立产业基金` | 设立产业基金 |
| `O_临时公告_与私募基金合作投资` | 与私募基金合作投资 |
| `O_临时公告_药品批准` | 药品批准 |
| `O_临时公告_应当披露交易` | 应当披露交易 |
| `O_临时公告_转债付息` | 转债付息 |
| `O_临时公告_重大资产重组终止` | 重大资产重组终止 |
| `O_临时公告_股东大会通知_议案表` | 股东大会通知议案表 |
| `O_临时公告_股票交易异常波动` | 股票交易异常波动 |
| `O_临时公告_股票交易风险提示` | 股票交易风险提示 |
| `O_临时公告_股东大会召开通知` | 股东大会召开通知 |
| `O_临时公告_用募集资金置换预先投入的自筹资金` | 用募集资金置换预先投入的自筹资金 |
| `O_临时公告_变更证券简称` | 变更证券简称 |
| `O_临时公告_召开业绩说明会` | 召开业绩说明会 |
| `O_临时公告_可转债到期兑付及摘牌` | 可转债到期兑付及摘牌 |
| `O_临时公告_取消重大资产重组并复牌` | 取消重大资产重组并复牌 |
| `O_临时公告_变更会计师事务所` | 变更会计师事务所 |
| `O_临时公告_公告元信息` | 公告元信息 |
| `O_临时公告_中标候选人公示` | 中标候选人公示 |
| `股东大会延期` | 股东大会延期 |
| `股东大会通知` | 股东大会通知 |
| `推选职工董事或者监事` | 推选职工董事或者监事 |
| `核心技术人员离职` | 核心技术人员离职 |
| `职工代表大会决议` | 职工代表大会决议 |
| `优先股股息分派` | 优先股股息分派 |
| `取得发明专利证书` | 取得发明专利证书 |
| `业务资格获批` | 业务资格获批 |

## 输出格式

生成的 Markdown 帖子结构（**按公司聚合**）：

1. **标题** — 包含公司数量、类型、日期范围、总条数
   - 格式：`# 【{公司数}家公司】{类型}公告汇总（{开始日期} ~ {结束日期}）【共{总条数}条】`
2. **📋 概览** — 公告类型、时间范围、公告总数、涉及公司数、数据来源
3. **💰 总体投资分析**（⭐ **核心重点，置于概览后便于快速阅读**）：
   - 市场概况总结
   - 投资关注点（分条列述）
   - 风险提示
4. **📊 数据统计与洞察** — 自动生成洞察分析：
   - 最活跃公司（公告最多）
   - 市场集中度分析
   - 公告密度提示
5. **公司公告数量排行榜** — Top 10 公司及公告数量（表格格式）
6. **📑 目录** — 按证券代码排序的公司列表
7. **按公司分组的公告详情** — 每条公告包含：
   - 基本信息：日期、证券代码、简称、原文 PDF 链接
   - 提取信息：以表格形式展示 `extracted_info.info` 中的**非空字段**（空值自动过滤）
   - **无提取信息提示**：若某条公告 `extracted_info` 为空或 `info` 字段不存在，会显示 `_暂无提取信息_` 提示，但仍然保留公告基本信息和原文链接
8. **产品推广尾部** — 文因互联产品链接

### 优化设计原则

**人类可读性：**
- ✅ 总体投资分析置顶，让投资者一眼看到核心观点和关注点
- ✅ 清晰的层级结构（H1 → H2 → H3 → 表格/列表）
- ✅ 使用 emoji 图标增强视觉识别
- ✅ 表格数据结构化，便于快速浏览

**机器抓取友好：**
- ✅ 标准 Markdown 语法，易解析
- ✅ 表格格式统一（字段 | 内容）
- ✅ 锚点标题稳定（公司名称 + 证券代码）
- ✅ 可扩展：未来可在公司标题下添加 JSON 格式的结构化数据块

**抓取建议：**
若其他机器人需要程序化提取数据，建议：
1. 按标题 `## 📍 {公司名}（{证券代码}）` 定位公司区块
2. 使用正则提取公告基本信息（日期、链接等）
3. 解析表格格式提取结构化字段

**未来增强方向：**
- 🔮 可在公司区块添加 HTML 注释标记（如 `<!-- COMPANY_START:600519 -->`）辅助解析
- 🔮 可选的 JSON 数据块输出模式（专门供机器抓取）
- 🔮 增加公告分类标签（如 `#利好`、`#中性`、`#利空`）便于筛选

## 发布到 Lemmy 论坛

将生成的 Markdown 帖子发布到虾饵社区（Lemmy）：

```bash
# 从文件发布
python3 scripts/publish_to_lemmy.py \
  --title "【10家公司】董事会决议公告汇总（2026-02-11）【共15条】" \
  --markdown-file post.md \
  --community main

# 管道方式发布
python3 scripts/fetch_and_format.py --infotype "O_临时公告_董事会决议" | \
  python3 scripts/publish_to_lemmy.py \
    --title "【公告汇总】董事会决议" \
    --community main

# 测试模式（不实际发布）
python3 scripts/publish_to_lemmy.py \
  --title "测试标题" \
  --content "测试内容" \
  --community main \
  --dry-run
```

**配置信息**（已内置，无需修改）：
- 论坛地址：http://xiaer.ai
- 用户名：xiaer01
- 默认版块：main

## 自定义排版

若需调整排版格式，修改 `scripts/fetch_and_format.py` 中的以下函数：

- `format_extracted_info()` — 控制提取信息的表格渲染
- `format_post()` — 控制整体帖子结构和布局
- `INFOTYPE_DISPLAY` — 新增公告类型时添加中文映射

## 资源

- **scripts/fetch_and_format.py** — 核心脚本，获取数据 + 排版
- **references/api_reference.md** — API 接口文档，含响应结构和字段说明

