# industry-weekly **Repository Path**: haoyk-skill/industry-weekly ## Basic Information - **Project Name**: industry-weekly - **Description**: 行业发展周报,小望 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-25 - **Last Updated**: 2026-06-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # industry-weekly — 行业动态日报/周报生成 skill > 按"检索方向 + 时间窗口",把一段时间内的公开行业资讯压缩成一份按 Word 模板填充的、可汇报的 .docx + .pdf。 > 当前内置模板:**行业动态日报 — 全球轨道交通**。 定位:面向领导汇报的行业动态报告生成器。每条事实有出处、有时间、有判断,**真实优先、宁少勿水**。 两条硬性要求(红线): 1. **来源必须能在浏览器真正打开看到正文**,不只看 HTTP 200(剔除纯 JS 聚合站、移动版空壳页)。 2. **配图优先真实新闻图**(从正文抓、非 og:image logo;他媒水印图禁用),AI 生图只作少数兜底。 ## 安装 ```bash git clone https://gitee.com/haoyk-skill/industry-weekly.git cd industry-weekly ./install.sh # 交互选 Claude Code / OpenClaw,默认软链接到当前项目 ./install.sh --global # 装到 ~/.claude/skills(全局) ./install.sh --copy # 复制安装(跨设备/打包场景) ``` 更新:`cd industry-weekly && git pull`(软链接方式无需重装) ## 触发方式 在 Claude Code 里直接喊: - "出一期行业动态日报,方向是全球轨道交通" - "这周城市轨道交通运营的动态梳理一下" - "/industry-weekly"(显式调起) ## 工作链路 ``` 澄清需求 → 上网检索 → 去重核实 → 可打开性&来源体检 → 抓真实配图 → 填模板 → 转 PDF → 自检交付 ``` 每条新闻 = 标题(`<国家>|<事件>`) + 配图(真实新闻图优先,不压缩) + 正文(分段)。 详细规范见 [skills/industry-weekly/references/template-spec.md](skills/industry-weekly/references/template-spec.md)。 ## 目录结构 ``` industry-weekly/ ├── install.sh ← 安装脚本(扫 skills/* 装到目标智能体) ├── README.md └── skills/ └── industry-weekly/ ├── SKILL.md ← 定位 + 工作流 + 两条硬性要求 ├── references/ │ ├── template-spec.md ← 模板格式宪法(填模板前必读) │ └── output-layout.md ← 产物目录/版本号规约 ├── templates/ │ └── 行业动态日报_全球轨道交通动态_20260519-模版.docx └── scripts/ ├── fetch_image.py ← 从正文抓真实图(过滤 logo/水印/二维码),不压缩 ├── gen_image_ai.py ← AI 配图兜底(DashScope/OpenAI 兼容,可换后端) ├── fill_template.py ← 按模板填 docx └── docx_to_pdf.py ← LibreOffice 转 PDF ``` ## 依赖 Python: ```bash pip install python-docx requests beautifulsoup4 pillow ``` PDF 转换(必装其一): - macOS: `brew install --cask libreoffice` - Ubuntu: `sudo apt install -y libreoffice` ## 输入数据 schema(items.json) ```json { "header": { "title": "行业动态日报", "department": "行业发展部", "issue": "2026年第22期", "date": "2026年5月26日" }, "items": [ { "title": "中国|杭州地铁12号线自动化列车亮相,GoA4全自动运行", "image": "./img/news-1.jpg", "body": [ "5月19日,XX网报道,...(贴原文事实,不做亮点/影响评述,总结不润色)", "...(关键数据/具体措施,客观陈述)", "来源:XX网,链接:https://..." ] } ] } ``` 字段说明: - `header.title` / `department` 通常沿用模板默认值,无需改 - `header.issue` / `date` 每期递增,**date 决定输出文件名里的日期** - `items[].image` **必填**,本地路径,先用 `fetch_image.py` 抓回 - `items[].body` 是字符串列表,每项是一段;脚本会在单元格内用 `` 换行 ## 命令行示例 抓配图: ```bash # 1) 已知图片直链 python skills/industry-weekly/scripts/fetch_image.py \ --image-url https://www.railwaygazette.com/.../hangzhou-line-12.jpg \ --out ./img/news-1.jpg # 2) 只有文章页 URL,自动找主图 python skills/industry-weekly/scripts/fetch_image.py \ --article-url https://www.railwaygazette.com/.../article \ --out ./img/news-1.jpg ``` 填模板: ```bash python skills/industry-weekly/scripts/fill_template.py \ --template skills/industry-weekly/templates/行业动态日报_全球轨道交通动态_20260519-模版.docx \ --data ./items.json \ --out ./行业动态日报_全球轨道交通_20260526.docx ``` 转 PDF: ```bash python skills/industry-weekly/scripts/docx_to_pdf.py \ ./行业动态日报_全球轨道交通_20260526.docx # → 同目录产出 行业动态日报_全球轨道交通_20260526.pdf ``` ## AI 兜底配图 真实图抓不到时(403 防盗链 / 文章无图 / 仅 logo / 仅他媒水印图)再用 AI 生图兜底: ```bash python skills/industry-weekly/scripts/gen_image_ai.py \ --out ./img/news-1.jpg \ --prompt "现代地铁车厢内部,蓝色座椅,自然光,写实摄影风格,无任何文字" ``` - 默认走阿里百炼 DashScope(`DASHSCOPE_API_KEY`,默认模型 `wan2.2-t2i-flash`); 也支持 OpenAI 兼容端点(`OPENAI_API_KEY` + `OPENAI_BASE_URL`),`--provider` 切换。 - 密钥从环境变量或就近的 `.env` 自动发现(支持 `~/.baoyu-skills/.env`)。 - 提示词模板:`<新闻主体>,<场景>,写实摄影风格,无任何文字`;输出 ≥ 1280×720。 ## 文件命名约定 - 日报: `行业动态日报_<主题>_.{docx,pdf}` - 周报: `行业动态周报_<主题>_<起>-<止>.{docx,pdf}` 主题用短名:`全球轨道交通` / `国内城轨装备` / `信号系统` 等。 ## 跨模型 / Agent 适配 本 skill 不绑定特定对话模型,Claude / DeepSeek V4 flash / Qwen 等任何"能读 markdown 指令 + 跑 Python + 联网"的 agent 都能驱动: - **指令层**(SKILL.md / references)是纯 markdown,文中的 `AskUserQuestion` / `WebSearch` / `WebFetch` 仅是 Claude Code 工具名示例,换 agent 时对应到其"提问 / 检索 / 抓网页"能力即可,没有就用 `curl` + 对话追问兜底。 - **执行层**(4 个脚本)是纯 Python + 命令行,不依赖任何对话模型 API,直接 `python xxx.py` 调用。 - **AI 配图后端可换**:走外部文生图 API(DashScope / OpenAI 兼容),与驱动 skill 的模型无关;DeepSeek 等无生图能力的模型只负责按流程编排,生图交给配置好的图像 API。