Compare commits
208 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f9547ba21f | |||
| 7e953afbd2 | |||
| 3d596275d5 | |||
| a4242ada0e | |||
| d11d7f4980 | |||
| 57e6e16c11 | |||
| 187b414193 | |||
| 56c9376c58 | |||
| 302efd5f2d | |||
| 897f72012f | |||
| 0258a9af9f | |||
| 9058539bae | |||
| 9fba863ce7 | |||
| 45ad5443c1 | |||
| ef289b18d1 | |||
| f1e6c11505 | |||
| e9cd0374f4 | |||
| 8a04a23e86 | |||
| 8f5a9e7ede | |||
| 12e49f2811 | |||
| 81f89f6f00 | |||
| a692f1dd44 | |||
| 4b87125683 | |||
| 5a19e77d27 | |||
| d3ea832b3b | |||
| 1ff015e281 | |||
| f6e5e90736 | |||
| 5caf7bc52e | |||
| dcfeccc97b | |||
| 00431c827b | |||
| c8a5e8fd87 | |||
| c069a140bb | |||
| 24e46eced5 | |||
| f15e0f720a | |||
| 7c9a8b88b4 | |||
| 93d1d511e5 | |||
| 2aedb69efd | |||
| 773080cf4f | |||
| 63a6fabc00 | |||
| d601a26850 | |||
| 8595bbc521 | |||
| 23ff63baa9 | |||
| d0896ef10e | |||
| c6628b22f6 | |||
| 499c511140 | |||
| abbf1468bc | |||
| 53f105305f | |||
| f1dc29f439 | |||
| 475945418e | |||
| 2c17f006fc | |||
| 31d8434010 | |||
| 09c467e56d | |||
| 1084388fec | |||
| 468c9066cb | |||
| 9b9ee4964b | |||
| 10ad549050 | |||
| 3fab87ee11 | |||
| bd3228806d | |||
| 6585909ffc | |||
| 2c6adf1f43 | |||
| b105eee9bb | |||
| 878daebfe0 | |||
| 004698cf98 | |||
| 29d97b5f1a | |||
| 80023bbd6c | |||
| f94e6b0161 | |||
| ac8644d752 | |||
| b2d043b231 | |||
| 1855f190f5 | |||
| a8e0a76e07 | |||
| 4e10cc95d3 | |||
| 9178f436b2 | |||
| 0dcfda0c80 | |||
| 5037d5d0ed | |||
| 56293a52a2 | |||
| 6b790e77f6 | |||
| 6f81167691 | |||
| 7d50878c7d | |||
| eb1c4205fa | |||
| a26f0e936e | |||
| 10996ce6ce | |||
| c8bee712d7 | |||
| 40a77cad2c | |||
| 09da2f9dc4 | |||
| eb800c5acc | |||
| 9a328323c0 | |||
| bf38125362 | |||
| 2244736318 | |||
| 63f074e4df | |||
| 0a8fbda4fd | |||
| 498165440f | |||
| 55e5f3d166 | |||
| 1c78828681 | |||
| 3dce54b359 | |||
| 0897074d40 | |||
| 671cec58fa | |||
| 7b4e52743b | |||
| 894e53caef | |||
| f427aea1b3 | |||
| 33766a396d | |||
| a09e7e6671 | |||
| 7169ddb678 | |||
| 279dc5b894 | |||
| 52564ad036 | |||
| bb50d5d925 | |||
| a46fedabb5 | |||
| 39719354fb | |||
| 41b0f694ee | |||
| 5674114599 | |||
| dc531460ea | |||
| eb472d232e | |||
| f2d778b5ce | |||
| 2b7935b408 | |||
| 2852b6ef06 | |||
| d32fc05f4f | |||
| 9c37c9a574 | |||
| 301dc3e438 | |||
| fef435cc78 | |||
| 1115223066 | |||
| 233e23016c | |||
| bc6a302e59 | |||
| 25694db33b | |||
| 71cb4c35a8 | |||
| e77a1aa4d9 | |||
| 526278589b | |||
| cf5103bbca | |||
| ac48304532 | |||
| c13d8c29aa | |||
| df86e01cd2 | |||
| 9147d5e679 | |||
| 2220d7b981 | |||
| c85320ae72 | |||
| beb2cf2473 | |||
| ef168e3d90 | |||
| 5587fa0bce | |||
| b8d9e0c209 | |||
| 284b18e5fc | |||
| 0317a8f42f | |||
| df5a9db3ad | |||
| 31d6306e3b | |||
| 8dd19a2179 | |||
| 8920a337e0 | |||
| bd381ff65a | |||
| 53c3948cad | |||
| 511d40d40c | |||
| bdcf32dce8 | |||
| aa76f8203f | |||
| 601fc5d239 | |||
| 98c6c22a26 | |||
| 2cbf2909f8 | |||
| e1613d2af9 | |||
| 94295e1f74 | |||
| cfb60d7aae | |||
| e1ba31afda | |||
| 0a31ae09af | |||
| 6f0713953a | |||
| d719181834 | |||
| 953b74bf52 | |||
| 0a77e67200 | |||
| 03287697c3 | |||
| 6cb273a8a9 | |||
| 4647921e01 | |||
| 54c84b6681 | |||
| 33133430f8 | |||
| d63074be71 | |||
| 75ae5ae01f | |||
| 9ced46c296 | |||
| b85b89a569 | |||
| 5fe426fc90 | |||
| 1eef4c177b | |||
| 62af077479 | |||
| 27729d2987 | |||
| d0d079203a | |||
| a93d029778 | |||
| 5ff0b8e669 | |||
| 8b5b76f6cb | |||
| 73de8702ac | |||
| 20970034b6 | |||
| 8a86d97724 | |||
| 9e72e5fd35 | |||
| 2e353b7fff | |||
| b2055df118 | |||
| 0a19cc203b | |||
| 87ebd94719 | |||
| 5f44df1d48 | |||
| 4d5e249c55 | |||
| d645c032ca | |||
| 62a293e2b0 | |||
| 6c6a153997 | |||
| d9ffcb5840 | |||
| fb99241a0f | |||
| d3e64bd649 | |||
| 17b294726a | |||
| 9725ac73d4 | |||
| 95f0c6b345 | |||
| fb83c164da | |||
| c0c062e863 | |||
| 277b13eaae | |||
| 59d2a76df4 | |||
| 4412adfae5 | |||
| 86425eb18f | |||
| 1be6d5e57d | |||
| 3ff38c5ee0 | |||
| be091287b8 | |||
| 678314682e | |||
| 08e5df6ab7 | |||
| c95f061ec0 | |||
| 379592a35d |
@@ -46,6 +46,7 @@ sessions/
|
|||||||
.cache/
|
.cache/
|
||||||
|
|
||||||
# Project specific
|
# Project specific
|
||||||
|
automation/backups/
|
||||||
automation/data/drafts/*
|
automation/data/drafts/*
|
||||||
!automation/data/drafts/.gitkeep
|
!automation/data/drafts/.gitkeep
|
||||||
automation/data/releases/*
|
automation/data/releases/*
|
||||||
@@ -54,3 +55,15 @@ automation/data/published/*
|
|||||||
!automation/data/published/.gitkeep
|
!automation/data/published/.gitkeep
|
||||||
content/published/*
|
content/published/*
|
||||||
!content/published/.gitkeep
|
!content/published/.gitkeep
|
||||||
|
automation/data/outlines/
|
||||||
|
automation/data/research/
|
||||||
|
automation/data/sustainability_raw/
|
||||||
|
automation/data/search_cache.json
|
||||||
|
automation/data/trends.json
|
||||||
|
automation/data/sustainability_cases.json
|
||||||
|
automation/images/
|
||||||
|
data/*.db
|
||||||
|
*.db
|
||||||
|
automation/data/mcp_*.json
|
||||||
|
automation/data/*_session.txt
|
||||||
|
research/
|
||||||
|
|||||||
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"sessionID": "ses_12cdfe924ffebqMk2WsK4OQD87",
|
||||||
|
"updatedAt": "2026-06-17T01:09:35.927Z",
|
||||||
|
"sources": {
|
||||||
|
"background-task": {
|
||||||
|
"state": "idle",
|
||||||
|
"updatedAt": "2026-06-17T01:09:35.927Z"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"sessionID": "ses_13069b590ffefKhsLBe5CKeIx4",
|
||||||
|
"updatedAt": "2026-06-16T08:46:00.608Z",
|
||||||
|
"sources": {
|
||||||
|
"background-task": {
|
||||||
|
"state": "idle",
|
||||||
|
"updatedAt": "2026-06-16T08:46:00.608Z"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"sessionID": "ses_1dede8a7affeG6DxtfPUOviXrp",
|
||||||
|
"updatedAt": "2026-07-04T02:48:32.809Z",
|
||||||
|
"sources": {
|
||||||
|
"background-task": {
|
||||||
|
"state": "active",
|
||||||
|
"reason": "1 background task(s) active",
|
||||||
|
"updatedAt": "2026-07-04T02:48:32.809Z"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,115 @@
|
|||||||
|
# AGENTS.md
|
||||||
|
|
||||||
|
## Stack
|
||||||
|
- **Backend**: FastAPI 0.104 + SQLAlchemy 2.0 + PostgreSQL 16 (`yzr_nr`)
|
||||||
|
- **Frontend**: Vue 3 (CDN, no build step) + Element Plus — static HTML served by FastAPI
|
||||||
|
- **Auth**: JWT (`python-jose` + bcrypt), default admin `admin/admin123`
|
||||||
|
- **Scheduler**: APScheduler (daily cron: 01:10 trends, 01:30 collect, 02:00 generate, 03:00 optimize, 05:00 sources, 06:00 metrics)
|
||||||
|
- **Task DB**: `TaskLog` (module_id/status/error_trace/result_data/triggered_by) + `TaskConfig` (params/enabled/schedule)
|
||||||
|
- **LLM**: Multi-provider (nvidia primary, opencode-go fallback). API keys in DB (managed via admin UI) or `.env`.
|
||||||
|
|
||||||
|
## Commands
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Start/stop/restart server (systemd service, auto-restart on failure)
|
||||||
|
systemctl start yzr-platform.service # 启动
|
||||||
|
systemctl stop yzr-platform.service # 停止
|
||||||
|
systemctl restart yzr-platform.service # 重启
|
||||||
|
systemctl status yzr-platform.service # 查看状态
|
||||||
|
journalctl -u yzr-platform.service -n 50 --no-pager # 查看日志
|
||||||
|
|
||||||
|
# Fallback: start without systemd (用于调试)
|
||||||
|
cd /root/openclaw-workspace/projects/yu-zhi-ran
|
||||||
|
setsid ./start-platform.sh 8001
|
||||||
|
|
||||||
|
# Run full integration test
|
||||||
|
cd /root/openclaw-workspace/projects/yu-zhi-ran && python3 tests/test_new_features.py
|
||||||
|
|
||||||
|
# Run specific scripts (from project root)
|
||||||
|
python3 scripts/collector.py
|
||||||
|
python3 scripts/creator.py --topic-id B02
|
||||||
|
```
|
||||||
|
|
||||||
|
## Project layout
|
||||||
|
|
||||||
|
```
|
||||||
|
yu-zhi-ran/
|
||||||
|
├── platform/
|
||||||
|
│ ├── backend/app/main.py # FastAPI entry, mounts frontend at /
|
||||||
|
│ ├── backend/app/api/*.py # 21 API routers
|
||||||
|
│ ├── backend/app/core/ # nvidia_client.py, scheduler.py, etc.
|
||||||
|
│ ├── backend/app/models.py # SQLAlchemy models (593 lines)
|
||||||
|
│ ├── backend/app/schemas.py # Pydantic schemas (504 lines)
|
||||||
|
│ ├── backend/app/database.py # PG env config + ALTER TABLE migrations
|
||||||
|
│ ├── backend/app/initial_data.py
|
||||||
|
│ └── backend/.env # API keys, DB creds
|
||||||
|
├── scripts/ # creator.py, writer.py, collector.py, etc.
|
||||||
|
├── tests/test_new_features.py # 33-test integration suite
|
||||||
|
└── PROGRESS.md # Single source of truth for project status
|
||||||
|
```
|
||||||
|
|
||||||
|
## Gotchas & conventions
|
||||||
|
|
||||||
|
### Server
|
||||||
|
- Shell timeout kills background processes — always use `setsid` to start
|
||||||
|
- Env in `platform/backend/.env`, loaded via `dotenv` at each module level
|
||||||
|
|
||||||
|
### Database
|
||||||
|
- `init_db()` in `database.py` runs ALTER TABLE migrations at startup (PostgreSQL)
|
||||||
|
- `USE_POSTGRES=false` falls back to SQLite (used in tests)
|
||||||
|
- Models have timezone-aware `DateTime(timezone=True)` columns
|
||||||
|
|
||||||
|
### Content quality architecture (三平台差异化)
|
||||||
|
|
||||||
|
**核心原则:三平台不再共享同一篇 markdown,各自独立展开。**
|
||||||
|
- `writer.py` 对 zhihu/wechat/xiaohongshu 分别调用 `generate_platform_markdown(platform)`,各走不同的 `section_expansion_{platform}` prompt
|
||||||
|
- 知乎:数据分析深度(400-800字/节),用「你」称呼读者
|
||||||
|
- 公众号:个人叙事对话感(300-500字/节),用「我」口吻
|
||||||
|
- 小红书:精炼干货(100-200字/节),直接给方法,可用 emoji
|
||||||
|
|
||||||
|
**字数配置:**
|
||||||
|
- 知乎 min 3000 / max 8000
|
||||||
|
- 公众号 min 2000 / max 4000
|
||||||
|
- 小红书 min 400 / max 1000
|
||||||
|
- 存于 `platform_configs` 表,`min_words` / `max_words` 字段,后台「平台管理」可改
|
||||||
|
|
||||||
|
**AI 套话检测:**
|
||||||
|
- DB 存储:`content_clean_rules` 表,`rule_type='ai_telltale'`
|
||||||
|
- 由 `config_items.py` 中的 `DEFAULT_CONTENT_CLEAN_RULES` 种子数据
|
||||||
|
- `compliance_checker.py` 运行时从 DB 加载(`_load_ai_telltales()`),DB 不可用时回退代码硬编码列表
|
||||||
|
- 后台「配置管理→敏感词/清理规则」可增删改(操作 `ContentCleanRule` 表)
|
||||||
|
|
||||||
|
### Prompts (`prompt_configs` table)
|
||||||
|
- **DB 是唯一来源**,修改 prompt 直接 `UPDATE prompt_configs SET content = '...' WHERE key = '...';`
|
||||||
|
- 代码 `scripts/prompt_loader.py` 中的 `_PROMPT_DEFAULTS` **仅作种子数据**,第一次写入后就不再生效
|
||||||
|
- 新增 prompt:在 `_PROMPT_DEFAULTS` 添加定义 → 重启后自动补入 DB(仅当该 key 不存在时)
|
||||||
|
- 修改 prompt:**直接改 DB,不要改代码**(除非要更新种子供新环境用)
|
||||||
|
- DB 不可用时回退代码默认值(仅紧急模式)
|
||||||
|
- 三平台独立 section_expansion 提示词 key: `section_expansion_zhihu` / `section_expansion_wechat` / `section_expansion_xiaohongshu`
|
||||||
|
- 标题提示词去套路化,使用自然语言(不像 AI 写的 prompt)
|
||||||
|
|
||||||
|
### Prompt quality checks (`compliance_checker.py`)
|
||||||
|
- 软质量问题(AI套话/人称混用/阅读体验)只降分、不挡流程(`passed=true`)
|
||||||
|
- 硬合规问题(敏感词/法律/品牌)扣分多且阻塞流程
|
||||||
|
- AI 套话从 DB `content_clean_rules(rule_type='ai_telltale')` 加载,后台可动态管理
|
||||||
|
- 人称检查修正:去掉「大家」误报,仅检查「你们」和「你」混用
|
||||||
|
|
||||||
|
### LLM
|
||||||
|
- `call_llm()` in `core/nvidia_client.py` — reads active provider from DB `LLMConfig.is_active`, API key from env
|
||||||
|
- DeepSeek reasoning models return `reasoning_content` (thinking) + `content` (answer). `call_llm` prefers `content`, falls back to tail of `reasoning_content`
|
||||||
|
- `max_tokens` must be generous (≥500 for tags/titles, ≥2000 for article content) — reasoning models consume tokens for thinking
|
||||||
|
- Schema (`LLMConfigResponse`) must include `provider`, `base_url`, `api_key` fields or they get silently dropped from API responses
|
||||||
|
|
||||||
|
### Frontend
|
||||||
|
- No npm build step — edit `.html` files directly
|
||||||
|
- H5 mobile nav only created when `window.innerWidth <= 768`
|
||||||
|
- `navigation-component.js` + `navbar-component.js` injected as Vue components
|
||||||
|
- For date filters on topics, use backend `?today=true` (server-side `date.today()`) — client-side `new Date()` gives UTC which differs from Asia/Shanghai by 8h
|
||||||
|
|
||||||
|
### Tests
|
||||||
|
- `test_new_features.py` starts its own uvicorn on port 18503, runs against SQLite
|
||||||
|
- Run from project root: `python3 tests/test_new_features.py`
|
||||||
|
|
||||||
|
### Project status
|
||||||
|
- PROGRESS.md is the single truth source for progress — update it after any significant task
|
||||||
|
- `archive/` dir keeps historical/outdated docs with `YYYY-MM-DD` date suffix
|
||||||
@@ -0,0 +1,869 @@
|
|||||||
|
# 宇之然 · 项目进度总览
|
||||||
|
|
||||||
|
> 本文件为项目进度唯一真理源,所有进度信息以此为准。
|
||||||
|
> 其他文档中的进度描述一律以本文为准。
|
||||||
|
|
||||||
|
**最后更新**:2026-07-04 (v26)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 一、项目总览
|
||||||
|
|
||||||
|
| 项目 | 内容 |
|
||||||
|
|------|------|
|
||||||
|
| 品牌 | 宇之然 — 科技沟通万物,愿世间百态回归自然 |
|
||||||
|
| 技术栈 | FastAPI + SQLAlchemy + PostgreSQL 16 + Vue 3 (CDN) + Element Plus |
|
||||||
|
| 平台服务 | 运行中 (端口 8001) |
|
||||||
|
| 策略阶段 | 全球-本土对比研究(2026-04-15 升级) |
|
||||||
|
| Git 提交 | 170 commits · 4 tags (v1.0.0~v1.0.4) · main 分支 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 二、里程碑完成情况
|
||||||
|
|
||||||
|
| 里程碑 | 说明 | 计划 | 实际 | 状态 |
|
||||||
|
|--------|------|------|------|------|
|
||||||
|
| M1 | 项目框架搭建完成 | 2026-04-10 | 2026-04-10 | ✅ |
|
||||||
|
| M2 | 首批选题确定 | 2026-04-12 | 2026-04-10 | ✅ |
|
||||||
|
| M3 | 首篇文章发布 | 2026-04-14 | 2026-04-14 | ✅ |
|
||||||
|
| M4 | 首月发布4篇 | 2026-05-10 | 2026-06-18 | ✅ 4篇完成 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 三、发布记录
|
||||||
|
|
||||||
|
| 编号 | 标题 | 日期 | 平台 | 状态 |
|
||||||
|
|------|------|------|------|------|
|
||||||
|
| 001 | 种菜一年,焦虑降了43%:我在阳台治愈了自己 | 2026-04-14 | 知乎/微信/小红书 | ✅ 已发布 [知乎链接](https://zhuanlan.zhihu.com/p/2026998296120411553) |
|
||||||
|
| TOPIC-BBB1CC | 城市农业新趋势:东京垂直农场与上海阳台种菜对比研究 | 2026-04-21 | 知乎/微信/小红书 | ✅ 已发布 |
|
||||||
|
| A01 | 远程工作2026中国指南:从"不可能"到"可行"的路径图 | 2026-04-23 | 知乎/微信/小红书 | ✅ 已发布 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 四、模块进度
|
||||||
|
|
||||||
|
### 4.1 平台系统
|
||||||
|
|
||||||
|
| 模块 | 状态 | 说明 |
|
||||||
|
|------|------|------|
|
||||||
|
| 后端 API (auth/topics/articles/publishing/calendar/metrics/assets/tasks/platform_config/admin) | ✅ 完成 | 核心 11 个 API 模块,JWT 认证 |
|
||||||
|
| 扩展 API (cases/audit/llm_configs/system_configs/optimizer_logs/task_logs/task_configs) | ✅ 完成 | 新增案例库、审计、LLM配置、任务配置、任务运行记录模块 |
|
||||||
|
| 前端页面 (仪表盘/选题/日历/数据/素材/任务/平台/系统管理/用户/日志/文章) | ✅ 完成 | Vue 3 + Element Plus SPA |
|
||||||
|
| 数据库 (PostgreSQL 16) | ✅ 运行中 | `yzr_nr` 库 |
|
||||||
|
| 服务 | ✅ 运行中 | 端口 8001 |
|
||||||
|
| 数据库迁移 (SQLite→PostgreSQL) | ✅ 完成 | 2026-05-08 |
|
||||||
|
| PWA 离线支持 | ✅ 完成 | manifest.json + Service Worker + 离线页面 |
|
||||||
|
| articles 表 + 数据迁移 | ✅ 完成 | 48 篇文章从文件系统迁入 DB,释放文件已清理 |
|
||||||
|
|
||||||
|
### 4.2 内容生产
|
||||||
|
|
||||||
|
| 模块 | 状态 | 说明 |
|
||||||
|
|------|------|------|
|
||||||
|
| 选题库 | ✅ 完成 | 10 个旧选题 (001~010) + 20 个新选题 (4 大支柱) |
|
||||||
|
| 文章草稿 (001 系列) | ✅ 完成 | 大纲/初稿/优化版/微信版 四版齐备 |
|
||||||
|
| 配图生产 | ✅ 完成 | 10 张 SVG + 10 张 PNG,含压缩版 |
|
||||||
|
| 合规审查 | ✅ 完成 | 评分 9.2/10,引用来源补充完成 |
|
||||||
|
| 多平台发布 (001 / BBB1CC / A01) | ✅ 完成 | 知乎/微信/小红书 三平台均已发布 |
|
||||||
|
| 银发科技适配指南 | ⏳ 写作中 | drafts 中 302 行初稿 |
|
||||||
|
| F01 AI写作实战 | ✅ 已入库 | 三平台文章已存入 articles 表,待审查通过后发布 |
|
||||||
|
| F02 平台差异策略 | ✅ 已入库 | 三平台文章已存入 articles 表,待审查通过后发布 |
|
||||||
|
|
||||||
|
### 4.3 自动化系统
|
||||||
|
|
||||||
|
| 脚本 | 状态 | 说明 |
|
||||||
|
|------|------|------|
|
||||||
|
| publish_to_zhihu.sh | ✅ 可用 | 知乎自动发布 |
|
||||||
|
| publish_to_wechat_mp.sh | ✅ 可用 | 微信公众号自动发布 |
|
||||||
|
| generate_images.py / image_generator.py | ✅ 可用 | SVG + PNG 配图生成 |
|
||||||
|
| compliance_checker.py | ✅ 可用 | 合规审查(敏感词/平台规则/品牌规范) |
|
||||||
|
| compliance_optimizer.py | ✅ 重构 | 移除 manual_review,改为迭代LLM修复(最多3次),合规分回写入Topic;解硬编码 provider,改从 env 读取;关键词过滤从宽泛改为精准 |
|
||||||
|
| creator.py / writer.py / outline.py / research.py | ✅ 优化 | 全链路LLM提示词优化(SEO/平台适配/真人感) |
|
||||||
|
| collector.py / collector_db_integration.py | ✅ 可用 | 趋势采集 |
|
||||||
|
| wecom_notifier.py | ✅ 可用 | 企业微信通知 |
|
||||||
|
| db_helper.py | ✅ 扩展 | update_topic_status 支持保存 compliance_score |
|
||||||
|
| search_utils.py | ✅ 重构 | 移除 _call_mcp(opencode MCP),新增 360/搜狗/微信搜索(免 API Key),百度千帆日限提升至 200 |
|
||||||
|
| opencode_search.py / mcp_search_server.py | ❌ 已删除 | opencode 搜索配额耗尽,替换为 360/搜狗/微信等免 Key 源 |
|
||||||
|
| web_search.py | ✅ 保留 | 本地缓存 + Bing 搜索(闲置备用) |
|
||||||
|
|
||||||
|
### 4.4 流水线流程
|
||||||
|
|
||||||
|
| 步骤 | 触发方式 | 说明 |
|
||||||
|
|------|---------|------|
|
||||||
|
| 内容采集 | 定时 01:30 | 热点趋势采集→生成选题建议→存入选题库 |
|
||||||
|
| 内容创作 | 手动点击 / 定时 03:30 (原 02:00) | 研究→大纲→撰写文章→合规审查→存入 articles 表 |
|
||||||
|
| 合规审查 | 手动点击 / 定时 04:30 (原 03:00) | 从 articles 表读取 draft→合规检查→LLM迭代修复(最多3次)→状态→待发布 |
|
||||||
|
| 信息源优化 | 定时 05:00 | AI评估采集类别与信息源配置,给出调整建议 |
|
||||||
|
| 指标同步 | 定时 06:00 | 同步统计数据 |
|
||||||
|
| 发布 | 手动点击 | 仅待发布状态可选 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 五、当前任务队列
|
||||||
|
|
||||||
|
### ✅ 已完成
|
||||||
|
|
||||||
|
| 任务 | 完成日期 | 备注 |
|
||||||
|
|------|---------|------|
|
||||||
|
| 审查流程优化(移除 manual_review) | 2026-05-14 | 改为迭代LLM修复(最多3次),合规分回写Topic |
|
||||||
|
| 内容采集加入定时调度 | 2026-05-14 | scheduler 新增 scheduled_collect 01:30 |
|
||||||
|
| 全链路LLM提示词优化 | 2026-05-14 | 覆盖trends/topic_selector/research/outline/writer/nvidia_client/compliance 共8文件≈24个提示词,增强SEO/平台推荐/真人感 |
|
||||||
|
| 导航布局重构 | 2026-05-16 | navbar + navigation 合并为 uni-nav,单行 top-bar 自适应 PC/H5,10 页迁移完成 |
|
||||||
|
| 文章管理页面 (articles.html) | 2026-05-16 | 新增 articles API (list/detail/delete) + 完整管理页面,支持筛选/搜索/预览/删除 |
|
||||||
|
| CSS架构统一整合 | 2026-05-16 | reset/body/layout/card/page-header/filter/toolbar 移入 theme-modern.css(86→127行),10页内联CSS总量从~660行降至~400行;preview对话框CSS归一化;删除 dead JS;index.html双style块合并为单一亮色主题 |
|
||||||
|
| Phase 1.1 配图集成到创作流水线 | 2026-05-16 | image_generator.py 支持 --topic-id 参数, DB读写图片路径; Article 新增 images JSON字段+迁移; creator.py 新增配图步骤; API GET /api/articles/{topic_id}/images; 文章页预览显示封面图 |
|
||||||
|
| Phase 1.3 统一前端体验 | 2026-05-16 | users.html 补 loading+空状态; index.html 渲染loadingStats+fetchModules错误提示; metrics.html 渲染loadingDashboard |
|
||||||
|
| Phase 2.1 发布审批 UI | 2026-05-16 | 后端 MultiPublishRequest 多平台发布 API; 前端发布确认弹窗+平台勾选 |
|
||||||
|
| Phase 2.2 日历关联文章状态 | 2026-05-16 | 后端 enrich_entry 添加 topic_status+platform_icon; 前端日历卡片显示平台图标+Topic状态标签; 修复 el-tag 缺少闭合 |
|
||||||
|
| emoji 替换为 Element Plus 图标 | 2026-05-16 | icon-components.js 注册 25 个 SVG 图标组件; 11 页 emoji → `<el-icon>` 批量替换 |
|
||||||
|
| H5 卡片布局补全 | 2026-05-16 | metrics.html 热门选题/平台对比/选题推荐三表加 H5 卡片视图 |
|
||||||
|
| Phase 3.1 平台数据对接 | 2026-05-16 | scripts/sync_metrics.py (估计算法); scheduler 新增 scheduled_metrics_sync 06:00 |
|
||||||
|
| Phase 3.2 数据看板增强 | 2026-05-16 | Chart.js 集成: 趋势折线图/状态环形图/平台对比柱状图 |
|
||||||
|
| Phase 4 多租户隔离 (JWT+API 层) | 2026-05-16 | org_id 注入 JWT payload; 12 个 API 模块添加 org 过滤; 创建选题自动继承用户 org; 管理端组织 CRUD |
|
||||||
|
| Phase 4 前端多租户 | 2026-05-16 | admin.html 新增组织管理标签页 (列表/创建/编辑/删除); users.html 增加组织列+H5卡片显示 |
|
||||||
|
| Phase 4 预置数据修复 | 2026-05-16 | initial_data.py 管理员用户添加 org_id; opencode-go LLM config 补全 user_prompt_template |
|
||||||
|
| PlatformConfig 模型字段扩展 | 2026-05-17 | 增加 requires_image/image_count_min/image_count_max/image_width/image_height/min_words/max_words; schemas/initial_data/前端表单同步; database.py 迁移 |
|
||||||
|
| 微信公众号正文配图 | 2026-05-17 | writer.py wechat 分支在 h1 后插入 `<img>` 占位 |
|
||||||
|
| 合规检查从 DB 读平台规则 | 2026-05-17 | compliance_checker.py 接受 platform_config 参数; compliance_optimizer.py 从 DB 加载平台配置传入 checker |
|
||||||
|
| 登录页居中修复 | 2026-05-18 | login.html body 添加 login-body 类 |
|
||||||
|
| 模块状态重复修复 | 2026-05-18 | system.py 重命名/去重,状态改查 jobs 而非日志文件 |
|
||||||
|
| 仪表盘"近期计划"卡片 | 2026-05-18 | index.html 新增日历 7 天预告卡片 |
|
||||||
|
| 日志/用户合并到系统管理 | 2026-05-18 | admin.html 增加用户管理+运行日志标签页;uni-nav 10→8 项 |
|
||||||
|
| 日历页增强 | 2026-05-18 | 指南横幅/即将到来列表/空状态/操作提示 |
|
||||||
|
| 任务页优化+分页 | 2026-05-18 | 6个定时任务/topic_title/STAGE_NAMES/前端分页 |
|
||||||
|
| 选题页前端分页 | 2026-05-18 | paginatedTopics computed + el-pagination |
|
||||||
|
| 后端 tasks API 改造 | 2026-05-18 | offset 参数 + topic_title 字段 |
|
||||||
|
| admin 全标签页分页 | 2026-05-18 | 案例/类别/信息源/组织/用户 5 标签统一分页(10条/页)+总数显示 |
|
||||||
|
| 选题预览修复 | 2026-05-18 | 补全 startEdit/cancelEdit/saveContent 方法;修复滚动条;strip .tags |
|
||||||
|
| 任务状态卡死修复 | 2026-05-18 | 后台线程改用独立 DB session;前端 5s 自动轮询;中间进度 30% 显示 |
|
||||||
|
| 预览平台切换修复 | 2026-05-18 | 补全 switchPlatform 方法 |
|
||||||
|
| 超时任务自动清理 | 2026-05-18 | 启动时标记运行>1h 任务为 failed;已清理 21 个卡死任务 |
|
||||||
|
| metrics 冗余统计移除 | 2026-05-18 | 删除与仪表盘重复的 4 个概览卡片 |
|
||||||
|
| writer max_tokens 提升 | 2026-05-19 | 标题/标签 max_tokens 500→1000,修复推理模型思考链占用导致输出截断 |
|
||||||
|
| 预览滚动条修复 | 2026-05-19 | 改用 height:68vh 替代 flex+calc,避免 Element Plus 对话框内滚动冲突 |
|
||||||
|
| 定时任务 DB 化 | 2026-05-22 | TaskLog 新增 module_id/error_trace/triggered_by/result_data;TaskConfig 模型新建含 params/schedule/enabled;scheduler.py 全 7 个任务执行前后写 TaskRun;modules/status 从 DB 读取 |
|
||||||
|
| 平台配置弹窗修复 | 2026-05-22 | el-dialog 移入 tab 内部(与表格同级)解决响应式问题;表单字段补全 |
|
||||||
|
| AI 思考内容清洗 | 2026-05-22 | 新建 content_cleaner.py 集中管理清洗规则;writer.py/compliance_optimizer.py 统一引用;THINKING_PATTERNS 增强;strip_ai_preface 处理代码围栏块 |
|
||||||
|
| 复制正文去噪音 | 2026-05-22 | copyContent 只提取 p/h1-h4/li 元素,去 style/svg/script/img |
|
||||||
|
| platforms.html 入口合并 | 2026-05-22 | uni-nav 移除"平台"独立入口;admin.html 恢复"平台配置"tab 加启用中/全部筛选 |
|
||||||
|
| opencode_search.py 日志 | 2026-05-22 | 补 FileHandler + StreamHandler,解决管理后台显示"从未运行" |
|
||||||
|
| scheduler.json 导入修复 | 2026-05-22 | 补 import json,修复 sources(05:00) 执行时报错阻断 metrics(06:00) |
|
||||||
|
| Scheduler 日志修复(僵尸行) | 2026-05-28 | _log_task 始终 INSERT 新行,所有 _run_* 保存 log_id 后 UPDATE 同一行,消除重复 running 状态 |
|
||||||
|
| Systemd 服务化 | 2026-05-28 | yzr-platform.service(Restart=always,崩溃自动恢复);单 worker(--workers 1)防调度器冲突;Type=exec + KillMode=control-group 防僵尸进程 |
|
||||||
|
| LLM 提供商量换 + 任务级模型选择 | 2026-05-28 | opencode-go 换 nvidia qwen3.5-397b-a17b(默认)+ sensenova deepseek-v4-flash(合规审查);llm_configs 加 is_default;所有 _run_* 方法开头调用 _set_task_llm_provider 设置 LLM_TASK_PROVIDER |
|
||||||
|
| 合规审查修复 | 2026-05-28 | compliance_optimizer.py 移除硬编码 provider;补 import os(之前导致 NameError);关键词过滤从宽泛改为精准,避免误拦正常内容 |
|
||||||
|
| 搜索提供商重构 | 2026-05-28 | 移除 opencode MCP(配额耗尽),新增 360/搜狗/微信搜索(免 Key),百度千帆日限 50→200 |
|
||||||
|
| opencode 冗余代码清理 | 2026-06-02 | 删除 opencode_search.py / mcp_search_server.py / _call_mcp / 前后端所有 opencode/MCP 引用;禁用搜索缓存定时任务 |
|
||||||
|
| 任务抽屉产出记录优化 | 2026-06-03 | drawer 产出结果 tab 优先显示日志消息(last_message),过滤 None/空值;修复 tasks.py 因 opencode 清理导致的 SyntaxError;清理 DB 中旧搜索缓存的 56 条 TaskLog + 1 条 TaskConfig |
|
||||||
|
| Hermes gateway 用户级服务恢复 | 2026-06-04 | 系统级服务 → 用户级(MemoryMax=1G 生效);删除 system 级文件;linger + default.target.wants 开机自启 |
|
||||||
|
| v-cloak 修复 Vue 模板闪烁 | 2026-06-04 | 9 页 `<div id="app">` + `theme-modern.css` 的 `[v-cloak]` 规则,消除原始模板代码闪烁 |
|
||||||
|
| **sensenova 多模型 + 模型级 rate limit** | **2026-06-04** | `LLMConfig` 加 `rate_limit`/`rate_limit_window_minutes`;seed 3 模型:deepseek-v4-flash(500次/5h)、6.7-flash-lite(1500次/5h)、u1-fast(1500次/5h);进程内 rate limiter;`LLM_TASK_MODEL` 环境变量实现任务级模型选择;`ai_image_generator.py` 已固定用 `sensenova-u1-fast` |
|
||||||
|
|
||||||
|
### ✅ 已完成
|
||||||
|
|
||||||
|
| 任务 | 完成日期 | 备注 |
|
||||||
|
|------|---------|------|
|
||||||
|
| GEO/SEO 结构化元数据注入 | 2026-06-09 | writer.py 的 `inject_geo_metadata()` 向 HTML 注入 JSON-LD Article schema、meta description/keywords、OG tags |
|
||||||
|
| 大纲提示词 SEO 关键词增强 | 2026-06-09 | outline.py 新增 `_extract_seo_keywords()` 从研究笔记提取关键词;outline prompt 加入 GEO 数据引用要求 |
|
||||||
|
| 搜索排名追踪 | 2026-06-09 | `SearchRanking` 模型(文章ID/关键词/排名位置/AI引用);`rank_tracker.py` 定时任务(每日 07:00)查 Bing 排名;`/api/seo/rankings` API;admin.html 新增"搜索排名"tab |
|
||||||
|
| rank_tracker AI 引用检测 | 2026-06-18 | `_check_ai_citation()` 用 LLM 检测 Bing AI/百度 AI/Perplexity 引用 |
|
||||||
|
| admin.html 任务管理 tab | 2026-06-18 | TaskConfig 参数编辑 + TaskLog 时间轴 (el-timeline) |
|
||||||
|
| M4 第4篇文章发布 | 2026-06-18 | 发布 循环消费新物种 + 端侧AI隐私实战,累计 4 篇达首月目标 |
|
||||||
|
| 导航 bug 修复(仪表盘→index.html) | 2026-06-18 | DB menu 中"仪表盘"path 从 `/` → `index.html`,解决点导航跳转 landing 页的问题 |
|
||||||
|
| Landing 页 OG 图片创建 | 2026-06-18 | `/automation/images/og-landing.png`(1200x630 PNG,62KB);之前 404 |
|
||||||
|
| Landing 页 GitHub 链接修正 | 2026-06-18 | `your-org` → `github.com` |
|
||||||
|
| v23 全部功能验收 | 2026-06-18 | 12 页 200 OK、org_id 隔离生效、RBAC(require_role)11路由、菜单7项正确、factory/insights 新页、dashboard 重设计 |
|
||||||
|
|
||||||
|
## 十一、外推营销系统(v24 · 2026-06-21)
|
||||||
|
|
||||||
|
### 从「内容生产」到「外部推广」
|
||||||
|
|
||||||
|
**背景**:平台此前只覆盖平台内生产的内容的 SEO/GEO 优化,无法对用户已有的外部网站、公众号、小程序等做 SEO 推广。v24 新增完整的外部推广模块。
|
||||||
|
|
||||||
|
### 新增数据模型(6 张表)
|
||||||
|
|
||||||
|
| 模型 | 表名 | 说明 |
|
||||||
|
|------|------|------|
|
||||||
|
| `ExternalProduct` | `external_products` | 外部推广产品(website/article/wechat_account/miniprogram)|
|
||||||
|
| `PromotionCampaign` | `promotion_campaigns` | 推广活动,关联产品和关键词 |
|
||||||
|
| `CampaignKeyword` | `campaign_keywords` | 关键词跟踪(搜索量/难度/排名)|
|
||||||
|
| `SEOAudit` | `seo_audits` | SEO 审计报告(6 维度评分)|
|
||||||
|
| `KeywordRanking` | `keyword_rankings` | 多引擎关键词排名记录 |
|
||||||
|
| `OptimizationTask` | `optimization_tasks` | AI 生成的优化建议 |
|
||||||
|
|
||||||
|
### API 端点(20 个)
|
||||||
|
|
||||||
|
| 端点 | 功能 |
|
||||||
|
|------|------|
|
||||||
|
| `GET/POST/PUT/DELETE /api/external/products` | 产品 CRUD |
|
||||||
|
| `GET/POST/PUT/DELETE /api/external/campaigns` | 活动 CRUD |
|
||||||
|
| `GET/POST/PUT/DELETE /api/external/keywords` | 关键词 CRUD |
|
||||||
|
| `GET /api/external/audits` | SEO 审计记录列表 |
|
||||||
|
| `GET /api/external/audits/{id}` | 审计详情(含优化建议)|
|
||||||
|
| `GET /api/external/rankings` | 关键词排名列表 |
|
||||||
|
| `GET /api/external/rankings/overview` | 排名概览统计 |
|
||||||
|
| `GET /api/external/optimization-tasks` | 优化建议列表 |
|
||||||
|
| `PATCH /api/external/optimization-tasks/{id}` | 更新任务状态 |
|
||||||
|
| `GET /api/external/overview` | 外推营销总览 |
|
||||||
|
|
||||||
|
### SEO 审计脚本
|
||||||
|
|
||||||
|
`scripts/seo_auditor.py` — 自动抓取目标网站并分析:
|
||||||
|
|
||||||
|
| 维度 | 权重 | 检测项 |
|
||||||
|
|------|------|--------|
|
||||||
|
| Meta 标签 | 20% | title/description/keywords/OG tags |
|
||||||
|
| 标题结构 | 15% | H1/H2 存在性、层级连续性 |
|
||||||
|
| 内容质量 | 25% | 字数、图片 alt、关键词密度 |
|
||||||
|
| 性能 | 10% | 渲染阻塞资源、图片尺寸 |
|
||||||
|
| 链接 | 10% | 内链/外链/断链/nofollow |
|
||||||
|
| 移动端 | 20% | viewport、响应式、字号 |
|
||||||
|
|
||||||
|
审计结果自动保存到 DB,生成可追踪的 OptimizationTask。
|
||||||
|
|
||||||
|
### 关键文件变更
|
||||||
|
|
||||||
|
| 文件 | 改动 |
|
||||||
|
|------|------|
|
||||||
|
| `platform/backend/app/models.py` | 新增 6 个模型(ExternalProduct/PromotionCampaign/CampaignKeyword/SEOAudit/KeywordRanking/OptimizationTask)|
|
||||||
|
| `platform/backend/app/schemas.py` | 新增 18 个 Pydantic schema 类 |
|
||||||
|
| `platform/backend/app/api/external_promotion.py` | **新建** — 20 个 API 端点 |
|
||||||
|
| `platform/backend/app/main.py` | 注册 external_promotion router |
|
||||||
|
| `platform/frontend/campaigns.html` | **新建** — 外推营销 SPA 页面(6 Tab)|
|
||||||
|
| `platform/frontend/uni-nav.js` | 导航增加「外推营销」入口 |
|
||||||
|
| `scripts/seo_auditor.py` | **新建** — SEO 审计自动化脚本 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 十二、内容策略聚焦改造(v25 · 2026-06-23)
|
||||||
|
|
||||||
|
### 从「6领域分散」到「3领域聚焦」
|
||||||
|
|
||||||
|
**背景**:此前内容覆盖可持续生活、数字游民、个人成长等 6 个领域,资源分散、品牌辨识度低。v25 聚焦「宇之然」品牌核心方向:AI 与前沿科技。
|
||||||
|
|
||||||
|
**聚焦的 3 个领域:**
|
||||||
|
| 领域 | 方向 | 覆盖话题 |
|
||||||
|
|------|------|---------|
|
||||||
|
| AI与效率 🤖 | AI 工具、工作流、效率方法 | AI工具实测、AI前沿资讯、效率方法论 |
|
||||||
|
| 科技人文 🔬 | AI 伦理、科技反思 | 数据隐私、人机关系、数字生活反思 |
|
||||||
|
| 未来工作方式 💼 | 远程工作、职业转型 | AI时代职场、一人企业、技能升级 |
|
||||||
|
|
||||||
|
### Phase 1 — 代码改造(6 个文件)
|
||||||
|
|
||||||
|
| 文件 | 改动 |
|
||||||
|
|------|------|
|
||||||
|
| `initial_data.py` | TopicField 从 6 个缩减为 3 个;CollectorCategory 从 8 个环保类改为 5 个 AI/科技类;PlatformConfig allowed_tags 全部替换为 AI/效率/科技标签 |
|
||||||
|
| `prompt_loader.py` | `sources_optimization` 提示词从"可持续生活领域"改为"AI与科技人文领域" |
|
||||||
|
| `config/sources.yaml` | 全部信息源替换为 AI/科技相关(36氪RSS、少数派RSS、5 组 AI 搜索词、1 个本地案例库) |
|
||||||
|
| `collector.py` | `DEFAULT_CHINA_PAINS` 从 8 个(7 环保 + 1 AI)改为 5 个 AI 焦点;`map_category_to_field` 返回 AI 领域;移除 4 处"可持续性"日志/默认值 |
|
||||||
|
| `topic_selector.py` | `DEFAULT_TREND_DOMAIN_MAP` 从 12 条(含可持续生活/个人成长/副业/家庭教育)改为 11 条纯 AI/科技映射 |
|
||||||
|
| `migrate_content_focus.py` | **新建** — Phase 2 DB 迁移脚本 |
|
||||||
|
|
||||||
|
### Phase 2 — DB 迁移
|
||||||
|
|
||||||
|
| 操作 | 影响 |
|
||||||
|
|------|------|
|
||||||
|
| TopicField | 更新 3 个新领域字段(排序/描述/图标),停用 5 个旧领域(可持续生活系统/可持续生活/数字游民/个人成长/个人知识工厂) |
|
||||||
|
| Topic | 47 个 Topic 中 43 个已迁移到新领域(4 个无法映射的归入"AI与效率") |
|
||||||
|
| Article | 删除 15 篇与旧可持续领域关联的旧文章 |
|
||||||
|
| CollectorCategory | 创建 3 个新分类(AI前沿资讯/AI工具实测/AI与职场),更新 2 个(AI生活化/科技人文),停用 12 个旧分类(循环消费/低碳出行/干净饮食/零浪费生活/绿色家电与节能/碳普惠/环保科技产品/自我丰容/适我主义/情绪价值与心理健康/沉浸式新生活/数字游民与自由职业) |
|
||||||
|
| CollectorSource | 停用 1 个旧源,创建 2 个新 AI 搜索源 |
|
||||||
|
| PlatformConfig | 3 个平台(知乎/微信/小红书)的 allowed_tags 全部替换为 AI/科技标签 |
|
||||||
|
| TrendFieldMapping | 同步 11 条新映射,停用旧映射 |
|
||||||
|
|
||||||
|
### Phase 3 — 文件清理
|
||||||
|
|
||||||
|
| 项目 | 数量 | 释放空间 |
|
||||||
|
|------|------|---------|
|
||||||
|
| 日志文件 (`automation/logs/`) | 400 个 | 2.5 MB |
|
||||||
|
| 旧选题卡片 (`content/ideas/`) | 11 个文件 | 96 KB |
|
||||||
|
| 可持续采集原始数据 (`sustainability_raw/`) | 多子目录 | 224 KB |
|
||||||
|
| 旧数据文件 (`sustainability_cases.json/topics.json`) | 2 个 | - |
|
||||||
|
| 旧草稿/大纲/研究笔记 (`drafts/outlines/research/`) | 91 个文件 | 740 KB |
|
||||||
|
| 通知记录 (`notifications/`) | 1 个 | 4 KB |
|
||||||
|
|
||||||
|
### Phase 4 — 重启验证
|
||||||
|
|
||||||
|
- 服务运行中:HTTP 200 ✅
|
||||||
|
- API 认证正常 ✅
|
||||||
|
- TopicFields 仅返回 3 个活跃领域 ✅
|
||||||
|
- Topic 总计 47 个,全部关联新领域 ✅
|
||||||
|
- Articles 已清理(0 篇过时文章)✅
|
||||||
|
- CollectorCategories 仅 5 个 AI 分类活跃 ✅
|
||||||
|
|
||||||
|
### 关键架构决策
|
||||||
|
|
||||||
|
- `collector.py` 类名(SustainabilityCollector/SustainabilitySource/SustainabilityCase)保留未改——减少中断风险,功能已从 sustainable 转向 AI/tech,重命名需要跨 20+ 文件修改
|
||||||
|
- DB 种子数据按 `if count() == 0` 判断,已有数据的库通过独立迁移脚本处理
|
||||||
|
- 旧数据优先保留(硬删除可能影响引用完整性),标记 `is_active=False` 而非删除
|
||||||
|
|
||||||
|
### 品牌调性与内容深化(v25.1 · 2026-06-23 第二次迭代)
|
||||||
|
|
||||||
|
**问题诊断**:第一次聚焦改造后,内容方向虽已收敛到 AI 3 领域,但存在品牌割裂("宇之然"调性偏人文自然 vs 内容全是纯工具测评)、AI 赛道竞争红海、平台策略错配(公众号叙事体不适合写 AI 工具)等深层问题。
|
||||||
|
|
||||||
|
**Phase A — 品牌调性注入(最核心改动)**
|
||||||
|
|
||||||
|
| prompt | 改动 | 预期效果 |
|
||||||
|
|--------|------|---------|
|
||||||
|
| `section_expansion_zhihu` | 加入独家数据要求+观点交锋,不只是介绍工具而是探讨技术如何改变人 | 在拥挤的 AI 知乎赛道上做出壁垒 |
|
||||||
|
| `section_expansion_wechat` | 从「AI 工具叙事」→「科技人文思辨」:用「我」口吻写 AI 时代的困惑、顿悟或观察 | 对齐品牌调性,摆脱"AI 测评不适合叙事体"的结构性矛盾 |
|
||||||
|
| `section_expansion_xiaohongshu` | 每个结论配亲测数据/对比/结果 | 用真实数据对抗同质化 |
|
||||||
|
| `title_optimize_zhihu` | 增加观点交锋感+立场态度 | 从"工具文标题"→"辩论帖标题" |
|
||||||
|
| `title_optimize_wechat` | 改为科技叙事方向,参考风格:「AI帮我写周报的第3个月,我终于发现哪里不对了」 | 对齐公众号新定位 |
|
||||||
|
| `title_optimize_xhs` | 每条标题含数字/时间/效果结果感 | 提高点击率 |
|
||||||
|
|
||||||
|
**Phase B — SEO/GEO 长尾关键词**
|
||||||
|
|
||||||
|
- `collector.py`: `DEFAULT_CHINA_PAINS` 每个痛点扩展 3-5 个长尾问题("AI写周报""AI提示词怎么写""35岁学AI来得及吗")
|
||||||
|
- `topic_selector.py`: `DEFAULT_TREND_DOMAIN_MAP` 从 11 条→18 条(新增 Prompt/提示词/AI编程/AI写作/数据隐私/AI教育/一人企业)
|
||||||
|
|
||||||
|
**Phase C — 差异化信息源**
|
||||||
|
|
||||||
|
在 `sources.yaml` 中新增 5 个与通用 AI 媒体形成区分的源:
|
||||||
|
|
||||||
|
| 新源 | 差异化定位 |
|
||||||
|
|------|-----------|
|
||||||
|
| 机器之心 RSS | AI 学术前沿,区别于大众科技媒体 |
|
||||||
|
| AI 学术论文搜索(arXiv 中文) | 一手论文解读内容源 |
|
||||||
|
| 独立开发者搜索 | 独特的小众 AI 产品视角 |
|
||||||
|
| 行业数据报告搜索 | 自采数据的基础来源 |
|
||||||
|
| AI 产品动态搜索 | 第一手产品更新信息 |
|
||||||
|
|
||||||
|
**Phase D — 栏目化内容机制**
|
||||||
|
|
||||||
|
为「AI工具实测周报」等固定栏目铺平道路:
|
||||||
|
- Topic 模型新增 `series` 字段(VARCHAR, optional, indexed)
|
||||||
|
- API 端点 `/api/topics` 新增 `?series=` 筛选参数
|
||||||
|
- 前端 topics.html 搜索区增加「栏目」下拉筛选器
|
||||||
|
- `database.py` 新增 ALTER TABLE 迁移(`topics.series`)
|
||||||
|
|
||||||
|
**Phase E — 公众号发布流水线**([需提供 WeChat APP_ID/APP_SECRET])
|
||||||
|
- 已安装 `/wechat-mp-publisher` 技能,支持远程 MCP 中转
|
||||||
|
- `wechat.env` 和 `mcp.json` 尚未配置
|
||||||
|
|
||||||
|
### 关键文件变更汇总
|
||||||
|
|
||||||
|
| 文件 | 变更类型 | 说明 |
|
||||||
|
|------|---------|------|
|
||||||
|
| `scripts/prompt_loader.py` | 修改 | 6 个 prompt 品牌调性注入(section_expansion×3 + title_optimize×3) |
|
||||||
|
| `platform/backend/app/initial_data.py` | 修改 | 领域描述人文化、采集搜索词长尾化、平台格式说明更新 |
|
||||||
|
| `scripts/collector.py` | 修改 | DEFAULT_CHINA_PAINS 长尾关键词扩展 |
|
||||||
|
| `scripts/topic_selector.py` | 修改 | DEFAULT_TREND_DOMAIN_MAP 从 11→18 条 |
|
||||||
|
| `config/sources.yaml` | 修改 | 新增机器之心/arXiv/独立开发者/行业报告/AI产品动态 5 个差异源 |
|
||||||
|
| `platform/backend/app/models.py` | 修改 | Topic 模型新增 series 字段 |
|
||||||
|
| `platform/backend/app/schemas.py` | 修改 | TopicBase/TopicCreate/TopicUpdate 新增 series |
|
||||||
|
| `platform/backend/app/api/topics.py` | 修改 | list_topics 新增 series 查询参数 |
|
||||||
|
| `platform/backend/app/database.py` | 修改 | ALTER TABLE 添加 topics.series 列 |
|
||||||
|
| `platform/frontend/topics.html` | 修改 | 搜索区新增栏目下拉筛选器 |
|
||||||
|
| `scripts/migrate_content_focus.py` | 新建 | DB 迁移脚本(Phase 2 遗留) |
|
||||||
|
|
||||||
|
### Phase F — 数据库旧数据清理(2026-06-23 第三次迭代)
|
||||||
|
|
||||||
|
品牌优化完成后,发现旧数据库中存在大量迁移遗留的错配数据——32 个旧选题(循环消费/碳普惠/可持续方向)被 `migrate_content_focus.py` 的 fallback 逻辑错误地分配到了「AI与效率」领域,并持有 66 篇关联文章和 5 个任务。
|
||||||
|
|
||||||
|
| 操作 | 数量 |
|
||||||
|
|------|------|
|
||||||
|
| 删除旧选题(sustainability/carbon 方向) | 32 个 |
|
||||||
|
| 删除关联文章 | 66 篇 |
|
||||||
|
| 删除关联任务 | 5 条 |
|
||||||
|
| 停用 orphan 领域(科技人文交叉/测试) | 2 个 |
|
||||||
|
| 删除 5 个旧 TopicField + 5 条 stale TrendFieldMapping | 10 条 |
|
||||||
|
| **剩余数据** | **15 个选题 / 9 篇文章 / 3 个活跃领域 / 11 条 TrendFieldMapping** |
|
||||||
|
|
||||||
|
所有保留选题均为 AI/tech 方向,与聚焦的 3 领域一致。TopicFields 表从 10 行精简到 3 行,TrendFieldMapping 从 16 行精简到 11 行(全 active),无任何悬空引用。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
> 过时文档统一移入 `archive/`,防止误导。
|
||||||
|
|
||||||
|
| 日期 | 路径 | 原因 |
|
||||||
|
|------|------|------|
|
||||||
|
| 2026-05-12 | `tasks/todo.md` → `archive/tasks/todo.md.2026-04-10` | 内容停滞于 2026-04-10,信息过时 |
|
||||||
|
| 2026-05-12 | `content/ideas/001-compliance.md` → `archive/content/ideas/` | 001 已发布,合规报告无须保留在活跃目录 |
|
||||||
|
| 2026-05-12 | `content/ideas/001-research.md` → `archive/content/ideas/` | 001 已发布,研究笔记无须保留在活跃目录 |
|
||||||
|
| 2026-05-12 | `content/publishing/001-images.md` → `archive/content/` | 配图已生成,规划稿无须保留在活跃目录 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 七、内容质量升级(v19 · 2026-06-05)
|
||||||
|
|
||||||
|
### 三平台差异化内容架构
|
||||||
|
|
||||||
|
**背景**:此前三平台共用同一篇 markdown,仅做浅层适配(加 emoji/换人称),导致知乎缺深度、公众号缺情感、小红书过长。
|
||||||
|
|
||||||
|
**核心改动:**
|
||||||
|
1. **writer.py** — `generate_full_markdown()` → `generate_platform_markdown(platform)`,每平台调用独立的 `section_expansion_{platform}` prompt
|
||||||
|
- 知乎:`section_expansion_zhihu` — 数据分析深度,400-800字/节,「你」视角
|
||||||
|
- 公众号:`section_expansion_wechat` — 个人叙事对话感,300-500字/节,「我」口吻
|
||||||
|
- 小红书:`section_expansion_xiaohongshu` — 精炼干货,100-200字/节,直接给方法+可 emoji
|
||||||
|
- 去掉公众号中「我们→我→你」的强制替换
|
||||||
|
2. **prompt_loader.py** — 新增 3 个平台独立 section_expansion 提示词,标题提示词去套路化(去除「直接输出」「不要其他文字」等 AI 味指令)
|
||||||
|
3. **平台字数提升** — min/max 大幅上调(知乎 3000-8000, 公众号 2000-4000, 小红书 400-1000),存于 `platform_configs` 表,后台可改
|
||||||
|
4. **compliance_checker.py** — AI 套话从 DB `content_clean_rules(rule_type='ai_telltale')` 加载,后台可动态管理;人称规则去掉「大家」误报
|
||||||
|
5. **config_items.py** — DEFAULT_CONTENT_CLEAN_RULES 新增 30+ 条 ai_telltale 规则
|
||||||
|
6. **initial_data.py** — PlatformConfig 字数迁移(已有库也会更新)
|
||||||
|
7. **AGENTS.md** — 文档化三平台差异化架构
|
||||||
|
|
||||||
|
**验证**:33/33 测试通过
|
||||||
|
|
||||||
|
## 八、GEO/SEO 升级(v20 · 2026-06-09)
|
||||||
|
|
||||||
|
### 为 AI 搜索时代而生
|
||||||
|
|
||||||
|
**背景**:ChatGPT、Perplexity、百度 AI 搜索等生成式引擎正在取代传统搜索。内容被 AI 引用的价值大于单纯的关键词排名。此版本让流水线生产的内容天然符合 AI 搜索偏好。
|
||||||
|
|
||||||
|
### GEO 结构化数据
|
||||||
|
|
||||||
|
每篇生成的 HTML 自动注入:
|
||||||
|
|
||||||
|
- **JSON-LD Article schema** — `@context: schema.org`,含 headline/description/datePublished/author/publisher/keywords
|
||||||
|
- **SEO meta tags** — `<meta name="description">`, `<meta name="keywords">`
|
||||||
|
- **Open Graph tags** — `og:title`, `og:description`, `og:type`, `og:site_name`, `article:published_time`
|
||||||
|
- **平台专用** — wechat/xiaohongshu 额外注入 `og:image`
|
||||||
|
|
||||||
|
### 大纲 SEO 增强
|
||||||
|
|
||||||
|
- outline prompt 新增 `seo_keywords` 变量(从研究笔记自动提取)
|
||||||
|
- 每章要求至少融入 1 个 SEO 关键词
|
||||||
|
- 新增 GEO 要求:每章包含可引用数据点,增加被 AI 搜索引用的概率
|
||||||
|
|
||||||
|
### 搜索排名追踪
|
||||||
|
|
||||||
|
| 模块 | 说明 |
|
||||||
|
|------|------|
|
||||||
|
| `SearchRanking` 模型 | 记录 article_id/keyword/position/url_found/ai_cited/search_engine |
|
||||||
|
| `scripts/rank_tracker.py` | 对所有已发布文章,自动生成搜索查询 → 调用 Bing API 查排名 → 写入 DB |
|
||||||
|
| 定时任务 | `scheduled_rank_tracker` 每日 07:00 自动运行 |
|
||||||
|
| 管理后台 | admin.html 新增「搜索排名」tab,展示概览统计(累计检查/有排名/AI引用/最佳排名)+ 排名列表 |
|
||||||
|
|
||||||
|
### 关键文件
|
||||||
|
|
||||||
|
| 文件 | 改动 |
|
||||||
|
|------|------|
|
||||||
|
| `scripts/writer.py` | 新增 `inject_geo_metadata()`, `_extract_description()`, `_extract_tags_list()` — 在 `generate_platform_html()` 末尾注入 |
|
||||||
|
| `scripts/outline.py` | 新增 `_extract_seo_keywords()` — 传入 outline prompt |
|
||||||
|
| `scripts/prompt_loader.py` | outline_generation 提示词加入 `seo_keywords` 变量 + GEO 数据点要求 |
|
||||||
|
| `scripts/rank_tracker.py` | 新建 — Bing 排名查询 + DB 写入 |
|
||||||
|
| `platform/backend/app/models.py` | 新增 `SearchRanking` 模型 |
|
||||||
|
| `platform/backend/app/api/search_rankings.py` | 新建 — `/api/seo/rankings` + `/api/seo/rankings/overview` |
|
||||||
|
| `platform/backend/app/core/scheduler.py` | 新增 `scheduled_rank_tracker` 07:00 |
|
||||||
|
| `platform/frontend/admin.html` | 新增「搜索排名」tab(统计卡片 + el-table 排名列表) |
|
||||||
|
|
||||||
|
## 九、GEO 进阶升级(v21 · 2026-06-15)
|
||||||
|
|
||||||
|
### AI 搜索引用追踪(GEO Engine Optimization)
|
||||||
|
|
||||||
|
**背景**:v20 实现了搜索排名追踪(Bing)和基础元数据注入,v21 将范围扩展到 AI 搜索引用检测、GEO 就绪度评分、FAQ/HowTo 结构化数据注入。
|
||||||
|
|
||||||
|
### 1. 数据模型扩展
|
||||||
|
|
||||||
|
| 模型 | 字段 | 说明 |
|
||||||
|
|------|------|------|
|
||||||
|
| `SearchRanking` | `ai_search_engine` / `citation_snippet` / `citation_url` / `geo_score` / `content_type` | 原有排名模型新增 AI 搜索字段和内容类型 |
|
||||||
|
| `GeoReadinessScore`(新建) | `article_id/total_score(0-100)/has_schema/has_faq_format/has_howto_format/has_citations/word_count/readability_score/heading_structure_score` | 6 维度 GEO 就绪度评估 |
|
||||||
|
|
||||||
|
就绪度评分权重:结构化数据 30 + FAQ 格式 20 + HowTo 格式 15 + 引用 15 + 标题结构 10 + 内容长度 10 = 100 分
|
||||||
|
|
||||||
|
### 2. AI 搜索引用追踪脚本
|
||||||
|
|
||||||
|
`scripts/geo_tracker.py` — 对所有已发布文章,通过 LLM 模拟查询 DeepSeek/ChatGPT/Perplexity 检测是否被引用:
|
||||||
|
|
||||||
|
- 筛选 `status=published` 的文章提取标题/关键词
|
||||||
|
- 对每篇文章调用 `call_llm` 查询各 AI 引擎是否收录并引用
|
||||||
|
- 记录引用片段(citation_snippet)和引用 URL
|
||||||
|
- 计算 GEO 就绪度评分(6 维度 0-100)
|
||||||
|
- 写入 `SearchRanking(search_engine="geo")` 和 `GeoReadinessScore` 表
|
||||||
|
|
||||||
|
### 3. FAQ/HowTo Schema 自动注入
|
||||||
|
|
||||||
|
扩展 `writer.py` 的 `inject_geo_metadata()`:
|
||||||
|
|
||||||
|
- 新增 `_detect_content_type(content)` — 检测内容类型:article/listicle/howto/faq/review(基于关键词统计)
|
||||||
|
- 新增 `_extract_faq_pairs(content)` — 从 Q:/A:格式提取问答对
|
||||||
|
- 新增 `_extract_howto_steps(content)` — 从步骤/Step 格式提取步骤
|
||||||
|
- 根据检测到的类型自动注入对应的 JSON-LD schema:
|
||||||
|
- **FAQPage** — `mainEntity` 数组(Question + AcceptedAnswer)
|
||||||
|
- **HowTo** — `step` 数组(HowToStep + HowToDirection)
|
||||||
|
- **ItemList** — `itemListElement` 数组(ListItem + position + name)
|
||||||
|
|
||||||
|
### 4. GEO API 端点
|
||||||
|
|
||||||
|
| 端点 | 功能 |
|
||||||
|
|------|------|
|
||||||
|
| `GET /api/seo/geo/overview` | AI 引用总数/引用率/引擎分布/平均就绪度评分 |
|
||||||
|
| `GET /api/seo/geo/readiness` | GEO 就绪度评分列表(含各维度分数) |
|
||||||
|
| `POST /api/seo/geo/track` | 手动触发 GEO 追踪 |
|
||||||
|
|
||||||
|
### 5. 定时任务注册
|
||||||
|
|
||||||
|
`scheduler.py` 新增 `scheduled_geo_tracker` 每日 07:30 自动运行
|
||||||
|
|
||||||
|
### 6. 管理后台 GEO 看板
|
||||||
|
|
||||||
|
admin.html 新增「GEO 就绪度」标签页包含:
|
||||||
|
|
||||||
|
- **统计卡片**:GEO 检查次数 / AI 引用次数 / AI 引用率 / 平均就绪度评分
|
||||||
|
- **引擎分布**:按 AI 引擎(DeepSeek/ChatGPT/Perplexity)展示检查数和引用数
|
||||||
|
- **就绪度评分表格**:文章标题/总分(彩色标签)/结构化数据✓✗/FAQ✓✗/HowTo✓✗/引用✓✗/字数/可读性/标题结构/检查时间
|
||||||
|
- **手动追踪按钮**:`POST /api/seo/geo/track`
|
||||||
|
|
||||||
|
### 关键文件变更
|
||||||
|
|
||||||
|
| 文件 | 改动 |
|
||||||
|
|------|------|
|
||||||
|
| `scripts/geo_tracker.py` | **新建** — AI 搜索引用追踪 + GEO 就绪度评分全流程 |
|
||||||
|
| `scripts/writer.py` | 扩展 `inject_geo_metadata()`:新增 `_detect_content_type`/`_extract_faq_pairs`/`_extract_howto_steps`,根据内容类型自动注入 FAQPage/HowTo/ItemList schema |
|
||||||
|
| `platform/backend/app/models.py` | `SearchRanking` 扩展 5 字段 + 新建 `GeoReadinessScore` 模型 |
|
||||||
|
| `platform/backend/app/api/search_rankings.py` | 新增 3 个 GEO 端点(overview/readiness/track) |
|
||||||
|
| `platform/backend/app/core/scheduler.py` | 注册 `scheduled_geo_tracker` 07:30 |
|
||||||
|
| `platform/frontend/admin.html` | 新增「GEO 就绪度」tab(统计卡片 + 引擎分布 + 评分表格 + 手动追踪) |
|
||||||
|
|
||||||
|
### 验证
|
||||||
|
|
||||||
|
33/33 测试全部通过
|
||||||
|
|
||||||
|
## 十、产品官网改造(v22 · 2026-06-16)
|
||||||
|
|
||||||
|
### 从「管理后台」到「产品网站」
|
||||||
|
|
||||||
|
**背景**:此前项目以登录页面作为首屏,访客第一眼看到的是管理系统的登录框,没有品牌传达和产品介绍。改造后,未登录用户看到的是一个完整的产品官网,登录后进入管理后台(工作台)。
|
||||||
|
|
||||||
|
### 路由架构
|
||||||
|
|
||||||
|
| 路径 | 页面对应 | 访问权限 |
|
||||||
|
|------|---------|---------|
|
||||||
|
| `/` | **产品官网** — 品牌 Landing Page | 公开 |
|
||||||
|
| `/index.html` | **工作台** — 原有的仪表盘(现为 workspace) | 需登录 |
|
||||||
|
| `/login.html` | 登录页(品牌化处理) | 公开 |
|
||||||
|
| `/topics.html`, `/articles.html` 等 | 各管理功能页 | 需登录 |
|
||||||
|
|
||||||
|
### 产品官网(Landing Page)
|
||||||
|
|
||||||
|
创建 `platform/frontend/landing.html` — 独立的完整产品网页,不依赖 Vue/Element Plus:
|
||||||
|
|
||||||
|
- **导航栏**:固定顶部,毛玻璃背景,Logo + 产品功能/工作流程/支持平台/定价/常见问题链接 + 登录/免费使用按钮
|
||||||
|
- **Hero 区域**:大标题「让内容在 AI 时代主动找到你的客户」,背景渐变+辉光效果,三个核心数据展示
|
||||||
|
- **产品功能**:6 张特性卡片(三平台创作/GEO 优化/独立站 SEO/效果追踪/全自动流水线/合规保障)
|
||||||
|
- **工作流程**:3 步流程说明(配置选题→自动生产→追踪优化)
|
||||||
|
- **支持平台**:知乎/微信公众号/小红书/独立站
|
||||||
|
- **定价**:3 档定价(入门版 ¥299/月、专业版 ¥799/月、企业版 ¥2,499/月)
|
||||||
|
- **常见问题**:6 个 FAQ(GEO 说明/三平台差异化/零经验使用/AI 套话/API Key/数据安全)
|
||||||
|
- **CTA 区块**:渐变背景 + 行动号召按钮
|
||||||
|
- **页脚**:产品/支持/法律三栏
|
||||||
|
|
||||||
|
### 关键架构改动
|
||||||
|
|
||||||
|
| 文件 | 改动 |
|
||||||
|
|------|------|
|
||||||
|
| `platform/frontend/landing.html` | **新建** — 完整产品官网(~30KB,无外部依赖) |
|
||||||
|
| `platform/backend/app/main.py` | 新增 `/` 路由显式返回 `landing.html`(优先于 StaticFiles 的默认 index.html) |
|
||||||
|
| `platform/frontend/login.html` | 登录成功跳转 `/` → `/index.html`;已登录检测跳转 `/` → `/index.html` |
|
||||||
|
| `platform/frontend/uni-nav.js` | 仪表盘导航链接 `/` → `/index.html`;`navigate` 函数修复前缀处理 |
|
||||||
|
| `platform/frontend/articles.html` | 未登录重定向 `/` → `/login.html` |
|
||||||
|
| `platform/frontend/topics.html` | 未登录重定向 `/` → `/login.html` |
|
||||||
|
| `platform/frontend/sw.js` | 移除 `/` 预缓存;HTML 文档改为 Network First 策略确保新版实时加载 |
|
||||||
|
|
||||||
|
### 响应式设计
|
||||||
|
|
||||||
|
- **桌面端**(>768px):完整导航 + 多列布局
|
||||||
|
- **平板/手机端**(≤768px):汉堡菜单(侧滑展开)、单列布局、缩小 hero 字体
|
||||||
|
- **小屏手机**(≤480px):全屏宽内容、堆叠布局
|
||||||
|
|
||||||
|
### 验证
|
||||||
|
|
||||||
|
- 33/33 测试全部通过
|
||||||
|
- HTTP 访问验证:`/` 返回 landing.html(31070 bytes),`/index.html` 返回工作台仪表盘
|
||||||
|
- 登录流程验证:登录后跳转 `/index.html`
|
||||||
|
- 服务已重启生效
|
||||||
|
|
||||||
|
## 十一、工作台改造与数据隔离(v23 · 2026-06-17)
|
||||||
|
|
||||||
|
### 从「管理工具」到「内容工作台」
|
||||||
|
|
||||||
|
**背景**:此前平台虽功能完整但偏向管理后台视角,缺乏面向内容创作者的工作台体验;且所有业务数据缺乏组织隔离(org_id),多组织共存时数据混淆。
|
||||||
|
|
||||||
|
### Wave 1 — 数据隔离基础设施
|
||||||
|
|
||||||
|
| 改动 | 文件 |
|
||||||
|
|------|------|
|
||||||
|
| 10 个业务模型追加 `org_id` 列 | `models.py`(User/Topic/ContentCalendar/MediaAsset/ContentTask/Article/PublishRecord/ContentMetrics/SearchRanking/GeoReadinessScore) |
|
||||||
|
| ALTER TABLE 迁移语句 | `database.py`(5 条 `ADD COLUMN IF NOT EXISTS`) |
|
||||||
|
| Schema 追加 `org_id` | `schemas.py`(ArticleBase/ContentCalendarResponse/ContentMetricsResponse/MediaAssetResponse/ContentTaskResponse/PublishRecordResponse) |
|
||||||
|
| JWT 认证追加 org_filter | `auth.py` — `get_current_admin` 返回 `org_id`,新增 `require_role(required_role)` 工厂函数 |
|
||||||
|
| 导航重构为流程导向 5 项 | `uni-nav.js` — 工作台/内容工厂/数据洞察/资产库/系统管理 |
|
||||||
|
|
||||||
|
### Wave 2 — API 隔离 + 新前端页面
|
||||||
|
|
||||||
|
| 改动 | 说明 |
|
||||||
|
|------|------|
|
||||||
|
| `articles.py` | Article 创建 upsert 时从 JWT 自动注入 org_id |
|
||||||
|
| `publishing.py` | PublishRecord 创建时从关联 Topic 继承 org_id |
|
||||||
|
| `metrics.py` | ContentMetrics 创建时继承 Topic.org_id |
|
||||||
|
| `calendar.py` | ContentCalendar CRUD 添加 org_id 校验 |
|
||||||
|
| `tasks.py` | ContentTask 创建时自动注入 org_id |
|
||||||
|
| `search_rankings.py` | GEO 端点添加 org_filter |
|
||||||
|
| `factory.html` | **新建** — 内容工厂流水线页面(3Tab:待创作/进行中/待审查) |
|
||||||
|
| `insights.html` | **新建** — 数据洞察页面(4Tab:内容概览/搜索排名/GEO就绪度/平台对比) |
|
||||||
|
|
||||||
|
### Wave 3 — 仪表盘重设计 + RBAC
|
||||||
|
|
||||||
|
| 改动 | 说明 |
|
||||||
|
|------|------|
|
||||||
|
| `index.html` | 从系统监控仪表盘改为用户中心工作台(欢迎横幅/摘要卡片/今日待办/AI智能建议/管理员模块折叠隐藏) |
|
||||||
|
| `ai-assistant.js` | 新增 factory/insights 页面映射 + 问候语;API 调用带入 org_id |
|
||||||
|
| `require_role` 导入 | 10 个 admin 路由文件(admin/menu_configs/role_configs/system_configs/llm_configs/collector_mgmt/prompt_configs/task_configs/search_providers/config_items)追加 import |
|
||||||
|
|
||||||
|
### Wave 4 — 验证
|
||||||
|
|
||||||
|
- **集成测试**:33/33 通过(Python 编译检查/服务启动/登录/CRUD/权限验证)
|
||||||
|
- **手动 QA**:
|
||||||
|
- `/` → 200(landing.html)
|
||||||
|
- `/index.html` → 200(工作台仪表盘)
|
||||||
|
- `/factory.html` → 200(内容工厂)
|
||||||
|
- `/insights.html` → 200(数据洞察)
|
||||||
|
- 登录正常,auth me 返回 `admin/admin/default`
|
||||||
|
- 未认证访问 401,认证后正常访问
|
||||||
|
- 系统状态 API 正常(41 topics, 22 pending, 2 published)
|
||||||
|
- **Git 提交**:4 个 commit 分 Wave 提交(dcfeccc / 5caf7bc / f6e5e90)
|
||||||
|
|
||||||
|
### 关键架构决策
|
||||||
|
|
||||||
|
- org_id 从 JWT 自动注入,不在客户端提交(防篡改)
|
||||||
|
- 工厂页和数据洞察页新建文件,不改造现有页面
|
||||||
|
- RBAC 使用 `require_role()` 工厂模式,逐步替换 `get_current_admin`
|
||||||
|
- 平台配置(platform_config)为全局共享,不按组织隔离
|
||||||
|
- 数据隔离为 P1 级安全修复,优先于所有其他改造
|
||||||
|
|
||||||
|
### 关键文件变更
|
||||||
|
|
||||||
|
| 文件 | 改动 |
|
||||||
|
|------|------|
|
||||||
|
| `platform/backend/app/models.py` | 10 个模型追加 org_id(941 行)|
|
||||||
|
| `platform/backend/app/database.py` | ALTER TABLE 迁移逻辑(170 行)|
|
||||||
|
| `platform/backend/app/api/auth.py` | org_filter + require_role(196 行)|
|
||||||
|
| `platform/backend/app/schemas.py` | 6 个响应 schema 追加 org_id(637 行)|
|
||||||
|
| `platform/frontend/index.html` | 用户中心仪表盘重设计 |
|
||||||
|
| `platform/frontend/factory.html` | **新建** 内容工厂流水线页 |
|
||||||
|
| `platform/frontend/insights.html` | **新建** 数据洞察页(945 行)|
|
||||||
|
| `platform/frontend/uni-nav.js` | 流程导向导航(333 行)|
|
||||||
|
| `platform/frontend/ai-assistant.js` | 页面映射 + org_id 感知 |
|
||||||
|
| `platform/backend/app/api/*.py` | 10 个路由文件追加 require_role |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 十三、2026 合规与市场契合升级(v26 · 2026-07-04)
|
||||||
|
|
||||||
|
### 背景:2025-09-01《人工智能生成合成内容标识办法》正式施行
|
||||||
|
微信/小红书/抖音/B站/微博 强制 AI 生成内容**主动声明标识**;未标识/疑似 AI 内容限流、下架、封号。微信 3-27 新规明确禁"非真人自动化创作行为"(脚本/程序托管全程代写代发)。叠加创作者痛点从"怎么写快"转向"怎么不被限流/怎么有活人感/怎么变现",项目做了一轮合规与市场化升级。
|
||||||
|
|
||||||
|
### P0 — 合规生存(已落地)
|
||||||
|
|
||||||
|
| 改造 | 文件 | 说明 |
|
||||||
|
|------|------|------|
|
||||||
|
| 强制 AI 生成标识注入 | `scripts/writer.py` | 新增 `inject_ai_disclosure()`:按《标识办法》给三平台正文文末注入「AI 辅助创作」声明(显式),head 注入 `ai-generated` meta + AIGC 隐式标识 JSON-LD(隐式)。默认开启,可由 `SystemConfig(disclose_ai=false)` 或 `YZR_DISCLOSE_AI=0` 关闭 |
|
||||||
|
| 发布模块去伪 | `platform/backend/app/api/publishing.py` | **删除伪造的 `status='success'`**:发布接口改为生成发布稿 + 置选题为 `pending_publish`(待人工发布),PublishRecord 状态为 `pending_manual`;明确"AI 稿须真人校验声明后手动发布,系统不代发" |
|
||||||
|
| LLM 降级响亮失败 | `scripts/writer.py` | `_expand_section` 在 LLM 缺失时标记 `_degraded`,`run()` 结尾对降级稿报错告警,不再静默吐稀薄内容混入库 |
|
||||||
|
|
||||||
|
### P1 — 市场契合(已落地)
|
||||||
|
|
||||||
|
| 改造 | 文件 | 说明 |
|
||||||
|
|------|------|------|
|
||||||
|
| AI味检测+净化 可见化 | `platform/backend/app/api/ai_slop.py` + `platform/frontend/ai-slop.html` | 新 API(GET /report 跑合规检测、POST /purify 一键净化)+ 新前端页 + 导航"AI味检测"。把已有的去套话/合规能力变成用户可感知卖点(直击 2026 限流焦虑) |
|
||||||
|
| 长文→短视频拆条 | `scripts/shortvideo.py` + `scheduler.py` | 新脚本将选题长文拆成 N 条短视频脚本(口播/分镜/适配平台),入库 `articles(platform=shortvideo_i)`;新增定时任务 `scheduled_shortvideo` 08:00,对前日待发布选题自动拆条 |
|
||||||
|
| 外部推广去伪 | `platform/backend/app/api/external_promotion.py` | 新增 `POST /api/external/audit/run` 真实调用 `seo_auditor.py`(此前该脚本从未被任何接口/调度触发),让 SEO 审计可用而非摆设 |
|
||||||
|
|
||||||
|
### P2 — 健壮性(已落地)
|
||||||
|
|
||||||
|
| 改造 | 文件 | 说明 |
|
||||||
|
|------|------|------|
|
||||||
|
| 指标同步扩平台 | `platform/backend/app/core/scheduler.py` | `_run_metrics_sync` 从仅知乎扩展为遍历 `platform_urls`;微信/小红书无公开 API 时优雅跳过并日志说明,不再伪装"仅知乎有数据" |
|
||||||
|
| 合规闸门防绕过 | `scripts/compliance_optimizer.py` | `force_pass` 选题不自动推进到 `ready`(保留待审查),避免绕过合规闸门直接进发布 |
|
||||||
|
|
||||||
|
### 关键文件变更汇总
|
||||||
|
|
||||||
|
| 文件 | 类型 | 说明 |
|
||||||
|
|------|------|------|
|
||||||
|
| `scripts/writer.py` | 修改 | AI 标识注入 + 降级标记 |
|
||||||
|
| `platform/backend/app/api/publishing.py` | 修改 | 发布去伪,改待人工发布 |
|
||||||
|
| `scripts/compliance_optimizer.py` | 修改 | force_pass 不推进状态 |
|
||||||
|
| `platform/backend/app/api/ai_slop.py` | 新建 | AI味检测/净化 API |
|
||||||
|
| `platform/frontend/ai-slop.html` | 新建 | AI味检测页 |
|
||||||
|
| `scripts/shortvideo.py` | 新建 | 长文→短视频拆条 |
|
||||||
|
| `platform/backend/app/core/scheduler.py` | 修改 | 指标扩平台 + 短视频定时任务 |
|
||||||
|
| `platform/backend/app/api/external_promotion.py` | 修改 | SEO 审计可触发 |
|
||||||
|
|
||||||
|
### 验证
|
||||||
|
- 全部修改文件 `ast.parse` 通过;`app.api.ai_slop / publishing / external_promotion` 与 `core.scheduler` 在 venv 下 `import` 成功
|
||||||
|
- 注:本次为代码升级,**未重启服务/未跑全量测试套件**;发布/净化/拆条需运营在真实平台按声明手动完成
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 十二、规范说明
|
||||||
|
|
||||||
|
### 规划文档
|
||||||
|
|
||||||
|
| 文档 | 位置 | 说明 |
|
||||||
|
|------|------|------|
|
||||||
|
| 升级计划 | `docs/upgrade-plan.md` | 分 4 阶段的技术升级路线图 |
|
||||||
|
|
||||||
|
### 文档管理原则
|
||||||
|
|
||||||
|
1. **单一真理源**:PROGRESS.md 为唯一进度文档,进度信息不出现于第二个文档中。
|
||||||
|
2. **及时归档**:阶段完成后,对应过程文档移入 `archive/`(含日期后缀),避免误导。
|
||||||
|
3. **一致性**:README.md 仅引用 PROGRESS.md 摘要,不独立维护进度状态。
|
||||||
|
4. **可追溯**:archive 保留完整历史,按 `YYYY-MM-DD` 子目录组织。
|
||||||
|
5. **及时更新**:每次新工作结束(或次日开始前)更新 PROGRESS.md,确保最后更新日期与实际同步。
|
||||||
|
|
||||||
|
### 工作流程
|
||||||
|
|
||||||
|
```
|
||||||
|
梳理需求/任务 → 读取 PROGRESS.md 了解当前状态
|
||||||
|
↓
|
||||||
|
按 PROGRESS.md 执行开发
|
||||||
|
↓
|
||||||
|
阶段任务完成 → 更新 PROGRESS.md + 归档冗余文档
|
||||||
|
↓
|
||||||
|
如需 → 同步 README.md 摘要
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 第十四章:前端布局修复 + 盈利模式(私有化/白标)升级
|
||||||
|
|
||||||
|
**日期**:2026-07-11
|
||||||
|
**目标**:① 修复前端布局/样式不合理项;② 将项目从"自用中台"升级为"可私有化部署 / 白标转售"产品。
|
||||||
|
|
||||||
|
### 一、前端布局/样式修复
|
||||||
|
- **A1 导航未固定 + 顶部双空隙**:`uni-nav.js` 删除 `<nav>` 内联 `position:relative`,恢复 CSS `position:fixed`。(同步修复 A3 移动端下拉菜单脱离)
|
||||||
|
- **A2 平板导航裁切**:汉堡菜单断点由 `max-width:768px` 提升至 `1000px`,769–1000px 链接改走下拉,不再静默丢失。
|
||||||
|
- **A4 预览弹窗偏右**:`theme-modern.css` 移除 `@media(min-width:769px)` 下 `.preview-dialog-custom{left:90px}`,对话框恢复居中(影响 articles.html / factory.html)。
|
||||||
|
- **A6 卡片横向滚动条**:`.card` 去掉 `overflow-x:auto`(el-table 自带内部滚动,重复滚动条消除,阴影不再被裁)。
|
||||||
|
- **A5 暗色模式半成品(对比度不可读)**:暂禁用 `prefers-color-scheme:dark` 块,统一亮色主题,待引入 EP 暗色变量后启用。
|
||||||
|
- **topics.html 筛选表单响应式**:6 个 `el-col` 加 `:xs/:sm/:md` 断点,移动端堆叠不溢出。
|
||||||
|
- **metrics.html 统计卡**:`.stats-grid` 由 `repeat(4,1fr)` 改为 `repeat(auto-fit,minmax(180px,1fr))`,平板自适应列数。
|
||||||
|
- **factory.html**:`.topic-grid` 用 `minmax(min(340px,100%),1fr)`,≤320px 屏不溢出。
|
||||||
|
|
||||||
|
### 二、盈利模式升级:白标 + 私有化部署
|
||||||
|
- **白标配置后端**:新增 `api/branding.py`
|
||||||
|
- `GET /api/branding`(公开,无需登录):返回 `brand_name/brand_logo/brand_primary_color/brand_support_email/version`。
|
||||||
|
- `PUT /api/branding`(管理员):更新白标配置,写入 `system_configs`。
|
||||||
|
- `main.py` 注册 `branding.router`。
|
||||||
|
- **白标种子**:`initial_data.py` 写入 `brand_name/brand_logo/brand_primary_color/brand_support_email` 默认。
|
||||||
|
- **前端应用品牌**:`uni-nav.js` `mounted` 调 `/api/branding`,动态设置平台名、Logo、导航渐变主色,并写入 `--color-primary`;新增 `branding.html` 白标设置页(管理员,含实时预览)。
|
||||||
|
- **导航入口**:`initial_data.py` 菜单加「白标设置」(admin),`uni-nav.js` 默认 admin 项补充。
|
||||||
|
- **部署包 `deploy/`**:
|
||||||
|
- `Dockerfile`(python:3.11-slim,默认 SQLite,零依赖)
|
||||||
|
- `docker-compose.yml`(含可选 PostgreSQL 服务与数据卷)
|
||||||
|
- `.env.example`(管理员密码 / LLM Key / 数据库)
|
||||||
|
- `README.md`(私有化 + 白标交付指南、定价建议)
|
||||||
|
|
||||||
|
### 验证
|
||||||
|
- 服务 `yzr-platform.service` 重启成功,无启动错误。
|
||||||
|
- `GET /api/branding` 返回种子默认值;`PUT` 管理员保存后持久化生效,重置回默认。
|
||||||
|
- `node --check uni-nav.js`、`ast.parse(branding.py)` 均通过。
|
||||||
|
|
||||||
|
### 待办(已解决,见第十六章)
|
||||||
|
- ~~`init_db()` 的 SQLite `topics.series` 迁移缺口(测试 32/33)~~:经复跑为陈旧 `test.db` 所致,当前 33/33 全过;迁移 fallback 对 SQLite 正常。
|
||||||
|
- 菜单幂等播种缺陷(见第十六章):`initial_data.py` 原 `if Menu.count()==0` 全有/全无逻辑导致已在库时章节四新增的"文章管理/内容工厂/白标设置"未入库,导航不可达,已修复。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 第十五章:移动端响应式补全
|
||||||
|
|
||||||
|
**日期**:2026-07-11
|
||||||
|
**目标**:审计并补全全部前端的移动端(≤420px)适配。
|
||||||
|
|
||||||
|
### 审计结论
|
||||||
|
- 已良好适配:topics / articles / campaigns / tasks / metrics / insights / platforms / assets / factory / index / landing / login / users / logs(表格均有 card-list 兜底或本就是卡片布局;固定宽弹窗由全局 `≤768px` 全宽规则兜底)。
|
||||||
|
- 真实破裂点(3 处 el-table 无移动端兜底):
|
||||||
|
1. `ai-slop.html` 问题明细表(line 47)
|
||||||
|
2. `calendar.html` 日程弹窗内 `selectedDayEntries` 表(line 189)
|
||||||
|
3. `admin.html` 平台配置表(line 202,缺 `data-table` 类,全局隐藏规则未覆盖)
|
||||||
|
|
||||||
|
### 修复
|
||||||
|
- 三处统一改为「`el-table`(`.card-table`/`.data-table`) + `.card-list-mobile` 卡片列表」的 `v-if`/`v-else` 兜底,沿用 `theme-modern.css` 的 `.card-list-mobile` 全局样式(≤768px 自动切换)。
|
||||||
|
- 桌面端表格保留,移动端自动转为可点列表,操作按钮(编辑/删除/查看)一并带入卡片。
|
||||||
|
- 校验:三页结构 `v-if`/`v-else` 配对正确,HTTP 200 正常服务。
|
||||||
|
|
||||||
|
### 结论
|
||||||
|
前端现已**完整支持移动端响应式**:所有数据表在窄屏均以卡片列表呈现,导航/筛选/弹窗/统计网格均自适应,无横向溢出。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 第十六章:菜单播种缺陷修复(导航可达性)
|
||||||
|
|
||||||
|
**日期**:2026-07-11
|
||||||
|
**触发**:生产服务重启后核对 `/api/menus/active`,发现导航缺少"文章管理 / 内容工厂 / 白标设置",而 `articles.html`(章节四重写)、`factory.html`、`branding.html` 均为真实页面 → 这些入口被"孤立",用户无法从导航进入。
|
||||||
|
|
||||||
|
### 根因
|
||||||
|
- `initial_data.py` 菜单播种原逻辑为 `if db.query(Menu).count() == 0:` —— **仅当菜单表完全为空时才播种**。
|
||||||
|
- 生产库此前已有旧菜单集,故章节四新增的三个菜单从未插入;`uni-nav.js` 运行时以 DB 菜单覆盖 fallback,于是三个入口从导航消失。
|
||||||
|
- 另:旧库首页菜单 `path="index.html"`(无斜杠)与新种子 `"/index.html"` 不匹配,初次修复导致"工作台"重复出现(count 13)。
|
||||||
|
|
||||||
|
### 修复
|
||||||
|
- 菜单播种改为**按 path 幂等对齐**:已存在则更新 `sort_order/roles/icon/is_active`(保留原名称,避免意外重命名),缺失则插入。
|
||||||
|
- 新增首页路径归一化:若同时存在 `index.html` 与 `/index.html` 则删除旧的;若仅 `index.html` 则改路径为 `/index.html`,消除重复入口。
|
||||||
|
- `init_db()` 在每次启动执行,重启后自动对齐。
|
||||||
|
|
||||||
|
### 验证
|
||||||
|
- 重启 `yzr-platform.service` 后 `/api/menus/active` 返回 **12 个菜单**,顺序正确、无重复:工作台→选题→文章管理→内容工厂→数据→日历→素材→任务→外推营销→AI味检测→白标设置→系统。
|
||||||
|
- 12 个对应 HTML 页面均 HTTP 200。
|
||||||
|
- `python3 tests/test_new_features.py`:**33/33 通过**(菜单播种变更未破坏 seeding)。
|
||||||
|
|
||||||
|
### 当前完整导航(运营闭环)
|
||||||
|
选题 → 内容工厂生成 → 文章管理编辑/AI味检测 → 发布记录标记已发布(合规:系统不代发,真人校验后手动发布)。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 第十七章:创作流程统一(导航去碎片化)
|
||||||
|
|
||||||
|
**日期**:2026-07-11
|
||||||
|
**目标**:将分散的「选题 / 内容工厂 / 文章管理」三个独立导航入口合并为单一「创作工作台」,减少导航碎片化。
|
||||||
|
|
||||||
|
### 方案
|
||||||
|
采用 **`studio.html` 单一入口 + `el-tabs` 内嵌三个已有页面(`?embed=1` 模式)**,而非重写三套逻辑——复用已验证页面,零逻辑重复、风险最低。
|
||||||
|
|
||||||
|
### 实现
|
||||||
|
- **新增 `studio.html`「创作工作台」**:`el-tabs` 三个标签页(选题 / 内容生成 / 文章管理),各以 `<iframe>` 懒加载对应页面(`topics.html?embed=1` 等);首次切到才加载,保留各页状态。整页 flex 布局填满视口,iframe `position:absolute; inset:0` 自适应。
|
||||||
|
- **嵌入模式 `?embed=1`**:`topics.html` / `factory.html` / `articles.html` 在 `mounted` 检测 `embed` 参数 → `isEmbed=true` 且 `<body class="embed">`:
|
||||||
|
- `<uni-nav>` 加 `v-if="!isEmbed"` 隐藏子页面自身导航(避免双层导航);
|
||||||
|
- `theme-modern.css` 新增 `body.embed .main-content { padding-top:0 }` 去掉顶部留白;
|
||||||
|
- 跨页链接(`redirectToPage` / `goToArticles`)在 embed 下改用 `window.top.location.href`,整页跳转而非 iframe 内嵌套。
|
||||||
|
- **导航收敛**:`initial_data.py` 菜单种子以「创作工作台→studio.html」替换原三入口,并将 `topics.html/factory.html/articles.html` 置 `is_active=False`(页面仍可被 studio 内嵌与直接 URL 访问,不丢失功能);`uni-nav.js` fallback 同步更新。
|
||||||
|
- 排序:工作台(0) → 创作工作台(1) → 数据(2) → 日历(3) → 素材(4) → 任务(5) → 外推营销(6) → AI味检测(7) → 白标设置(8,admin) → 系统(9,admin)。
|
||||||
|
|
||||||
|
### 验证
|
||||||
|
- 重启 `yzr-platform.service`;`/api/menus/active` 返回 **10 个菜单**,含「创作工作台(studio.html)」,原三入口已不在主导航。
|
||||||
|
- `studio.html / topics.html / factory.html / articles.html` 均 HTTP 200;studio 内 iframe `src` 带 `embed=1`。
|
||||||
|
- 三个页面内联脚本 `node --check` 通过;`initial_data.py` 编译通过。
|
||||||
|
- `python3 tests/test_new_features.py`:**33/33 通过**。
|
||||||
|
|
||||||
|
### 当前导航(10 项,创作闭环归于单一入口)
|
||||||
|
工作台 → **创作工作台(选题·生成·文章)** → 数据 / 日历 / 素材 / 任务 / 外推营销 / AI味检测 / 白标设置 / 系统。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 第十八章:商业模式与官网营销升级
|
||||||
|
|
||||||
|
**日期**:2026-07-11
|
||||||
|
**目标**:把产品从自用工具定位升级为可对外售卖的 AI 内容中台,并在官网首页展示「免费试用 / 私有化部署 / 源码售卖」三种模式。
|
||||||
|
|
||||||
|
### 方案沉淀
|
||||||
|
- 新增 `docs/BUSINESS_MODEL.md`:功能盘点 + 2026 市场需求 + 三模式可行性 + 首页改造方案 + 定价建议。结论:以私有化部署 + 源码售卖为主力,免费试用作获客钩子(避开纯 SaaS 红海)。
|
||||||
|
|
||||||
|
### 实现(landing.html 改造)
|
||||||
|
- **定价区(#pricing)重构为三段式**:免费试用(¥0 起,私有化试用版/演示)→ 私有化部署(¥29,800 起买断,推荐,featured)→ 源码售卖(面议授权)。CTA 统一锚定 #contact。
|
||||||
|
- **FAQ 增补**:私有化部署说明、源码采购、免费试用申请、AI 内容合规(不代发/人工闸门)、数据安全/多租户。
|
||||||
|
- **新增「开始合作」联系区(#contact)**:联系信息卡 + 轻量线索表单(姓名/公司/合作方式/联系方式/需求),提交唤起 mailto 至 hello@yu-zhi-ran.com(无后端依赖,低风险)。
|
||||||
|
- **文案对齐**:导航「免费使用」→「免费试用」+ 新增「联系销售」;Hero / CTA 按钮对齐;移动端菜单同步。
|
||||||
|
- **deploy/README.md**:交付建议同步为三模式定价。
|
||||||
|
- 新增 `.contact` 相关 CSS(深色区块,与 `.cta` 视觉一致)。
|
||||||
|
|
||||||
|
### 验证
|
||||||
|
- `curl /landing.html` → 200;新内容(免费试用/私有化部署/源码售卖/id="contact"/trialForm/申请试用/获取报价/联系销售)均存在。
|
||||||
|
- `<section>` 开合平衡(8/8);旧 SaaS 三档(入门/专业/企业版)已清除。
|
||||||
|
- 未做后端线索入库(当前 mailto 方案足够);若需留资分析可后续加 `/api/leads`。
|
||||||
|
|
||||||
|
### 待办(可选)
|
||||||
|
- 真实线索入库(Lead 表 + /api/leads);私有化试用版自动下发;报价单生成。
|
||||||
@@ -1,243 +0,0 @@
|
|||||||
# 宇之然项目目录结构说明
|
|
||||||
|
|
||||||
## 整体布局
|
|
||||||
|
|
||||||
```
|
|
||||||
yu-zhi-ran/ # 项目根目录
|
|
||||||
├── platform/ # ⭐ 管理平台(Web UI + API)
|
|
||||||
│ ├── backend/ # FastAPI 后端
|
|
||||||
│ │ ├── app/
|
|
||||||
│ │ │ ├── main.py # 入口
|
|
||||||
│ │ │ ├── database.py # 数据库连接(SQLite)
|
|
||||||
│ │ │ ├── models.py # Topic, Article 模型
|
|
||||||
│ │ │ ├── schemas.py # Pydantic 验证
|
|
||||||
│ │ │ ├── initial_data.py # 初始数据导入
|
|
||||||
│ │ │ ├── api/ # REST API 路由
|
|
||||||
│ │ │ │ ├── system.py # │ 系统状态、流水线控制、日志
|
|
||||||
│ │ │ │ ├── topics.py # │ 选题 CRUD
|
|
||||||
│ │ │ │ ├── publisher.py # │ 发布包管理
|
|
||||||
│ │ │ │ └── articles.py # │ 文章查看
|
|
||||||
│ │ │ └── core/ # │ 业务逻辑封装
|
|
||||||
│ │ │ ├── generator.py # │ 调用 scripts/creator.py
|
|
||||||
│ │ │ ├── optimizer.py # │ 调用 scripts/compliance_optimizer.py
|
|
||||||
│ │ │ └── sync.py # │ 同步 JSON → 数据库
|
|
||||||
│ │ └── requirements.txt
|
|
||||||
│ ├── frontend/
|
|
||||||
│ │ └── index.html # Vue 3 SPA(CDN 依赖)
|
|
||||||
│ ├── run.sh # 快速启动脚本
|
|
||||||
│ ├── check.py # 部署前检查
|
|
||||||
│ ├── README.md # 平台使用文档
|
|
||||||
│ └── PORTFOLIO.md # 架构详解
|
|
||||||
│
|
|
||||||
├── automation/ # 🔄 自动化流水线数据与日志
|
|
||||||
│ ├── scripts/ (软链) → ../scripts/ # 实际脚本在 ../scripts/
|
|
||||||
│ ├── data/ # 数据存储
|
|
||||||
│ │ ├── sustainability_topics.json # ⭐ 核心:选题库
|
|
||||||
│ │ ├── drafts/ # 草稿(按日期)
|
|
||||||
│ │ │ └── 2026-04-19/
|
|
||||||
│ │ │ ├── A02_zhihu.md
|
|
||||||
│ │ │ ├── A02_wechat.md
|
|
||||||
│ │ │ └── A02_xiaohongshu.md
|
|
||||||
│ │ └── releases/ # 发布包(按日期)
|
|
||||||
│ │ └── 2026-04-19/
|
|
||||||
│ │ ├── zhihu/zhihu_A02_zhihu.html
|
|
||||||
│ │ ├── wechat/wechat_A02_wechat.html
|
|
||||||
│ │ └── xiaohongshu/
|
|
||||||
│ └── logs/ # 运行日志
|
|
||||||
│ ├── collector_2026-04-19.log
|
|
||||||
│ ├── creator_2026-04-19.log
|
|
||||||
│ ├── optimizer_2026-04-19.log
|
|
||||||
│ └── publisher_summary_2026-04-19.json
|
|
||||||
│
|
|
||||||
├── scripts/ # 🛠️ 底层 CLI 脚本(被 automation/scripts/ 调用)
|
|
||||||
│ ├── collector.py # 采集热点 + 本地降级
|
|
||||||
│ ├── creator.py # 研究→大纲→撰写流水线
|
|
||||||
│ ├── compliance_optimizer.py # 合规检查 + 自动修复
|
|
||||||
│ ├── publisher.py # 发布包生成(HTML + 指南)
|
|
||||||
│ ├── research.py # 资料收集(API + 本地)
|
|
||||||
│ ├── outline.py # 大纲生成
|
|
||||||
│ ├── writer.py # 核心撰写逻辑
|
|
||||||
│ ├── wecom_notifier.py # 企业微信通知(可选)
|
|
||||||
│ └── ...(其他辅助脚本)
|
|
||||||
│
|
|
||||||
├── content/ # 📚 已发布内容存储
|
|
||||||
│ ├── published/ # 按 topic_id 组织
|
|
||||||
│ │ ├── A01/
|
|
||||||
│ │ │ └── 手动发布/
|
|
||||||
│ │ │ ├── 知乎/文章.html
|
|
||||||
│ │ │ └── 小红书/文章.html
|
|
||||||
│ │ └── A02/
|
|
||||||
│ ├── drafts/ # 草稿(可选)
|
|
||||||
│ ├── ideas/ # 选题记录(Markdown)
|
|
||||||
│ └── images/ # 配图资源
|
|
||||||
│
|
|
||||||
├── config/ # ⚙️ 配置文件
|
|
||||||
│ ├── sources.yaml # RSS/网页源配置
|
|
||||||
│ └── wecom_config.yaml # 企业微信机器人配置
|
|
||||||
│
|
|
||||||
├── brand/ # 🏷️ 品牌资产
|
|
||||||
│ ├── brand-book.md # 愿景、调性、原则
|
|
||||||
│ └── guidelines.md # 内容创作指南
|
|
||||||
│
|
|
||||||
├── strategy/ # 📈 内容策略
|
|
||||||
│ └── 全球-本土比较研究与全新内容战略规划-2026-04-15.md
|
|
||||||
│
|
|
||||||
├── tasks/ # 📋 项目管理
|
|
||||||
│ └── todo.md
|
|
||||||
│
|
|
||||||
├── research/ # 📊 行业研究
|
|
||||||
│ └── trends-2026.md
|
|
||||||
│
|
|
||||||
├── logs/ # 📝 根目录日志(兼容)
|
|
||||||
├── backup/ # 💾 备份归档
|
|
||||||
├── README.md # 项目总览
|
|
||||||
├── YUZHIRAN_PLATFORM.md # 完整文档(本文件同级)
|
|
||||||
├── TEST_FULL_PIPELINE.md # 测试指南
|
|
||||||
├── test_full_pipeline.py # 全流程测试脚本
|
|
||||||
├── run_publisher.sh # 快速发布脚本
|
|
||||||
└── start-platform.sh # 启动管理平台(新增)
|
|
||||||
|
|
||||||
# 软链接
|
|
||||||
automation/scripts → ../scripts/
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 🔗 关键依赖关系
|
|
||||||
|
|
||||||
### platform/backend/app/core/*.py 的路径计算
|
|
||||||
|
|
||||||
| 文件 | parents 层数 | PROJECT_ROOT 指向 |
|
|
||||||
|------|-------------|-------------------|
|
|
||||||
| `database.py` | `parents[3]` | `yu-zhi-ran/` |
|
|
||||||
| `initial_data.py` | `parents[3]` | `yu-zhi-ran/` |
|
|
||||||
| `generator.py` | `parents[4]` | `yu-zhi-ran/` |
|
|
||||||
| `optimizer.py` | `parents[4]` | `yu-zhi-ran/` |
|
|
||||||
| `sync.py` | `parents[4]` | `yu-zhi-ran/` |
|
|
||||||
| `api/system.py` | `parents[4]` | `yu-zhi-ran/` |
|
|
||||||
| `api/publisher.py` | `parents[4]` | `yu-zhi-ran/` |
|
|
||||||
|
|
||||||
**规律**:
|
|
||||||
- 在 `app/` 一级:`parents[3]` → `yu-zhi-ran/`
|
|
||||||
- 在 `app/api/` 或 `app/core/`:`parents[4]` → `yu-zhi-ran/`
|
|
||||||
|
|
||||||
✅ 所有路径已统一修正,可正常工作。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 🚀 工作流程
|
|
||||||
|
|
||||||
### 自动流水线(cron)
|
|
||||||
|
|
||||||
```
|
|
||||||
每天 05:00 → collector.py → automation/data/sustainability_topics.json(新增选题)
|
|
||||||
每天 05:30 → creator.py → automation/data/drafts/ + HTML 发布包
|
|
||||||
每天 05:45 → compliance_optimizer.py → 自动合规检查
|
|
||||||
每天 06:00 → publisher.py → content/published/(手动发布包)
|
|
||||||
```
|
|
||||||
|
|
||||||
### Web 平台手动控制
|
|
||||||
|
|
||||||
```
|
|
||||||
前端界面
|
|
||||||
│
|
|
||||||
├─▶ POST /api/system/generate/run
|
|
||||||
│ ↓
|
|
||||||
│ core/generator.py → subprocess(scripts/creator.py)
|
|
||||||
│ ↓
|
|
||||||
│ sync_all_topics() → 更新数据库
|
|
||||||
│
|
|
||||||
├─▶ POST /api/system/optimize/run
|
|
||||||
│ ↓
|
|
||||||
│ core/optimizer.py → subprocess(scripts/compliance_optimizer.py)
|
|
||||||
│ ↓
|
|
||||||
│ 读取 optimization_report.json → 更新数据库
|
|
||||||
│
|
|
||||||
└─▶ POST /api/publisher/generate/{topic_id}
|
|
||||||
↓
|
|
||||||
api/publisher.py → subprocess(scripts/publisher.py --topic-id X)
|
|
||||||
↓
|
|
||||||
复制 HTML 到 content/published/X/手动发布/
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 📁 数据源唯一性
|
|
||||||
|
|
||||||
**核心数据文件**:`automation/data/sustainability_topics.json`
|
|
||||||
|
|
||||||
这是系统中**唯一**的选题状态源:
|
|
||||||
- `collector.py` 写入新选题(status: "待处理")
|
|
||||||
- `creator.py` 更新为"待审查" → "draft"
|
|
||||||
- `compliance_optimizer.py` 更新为"待发布"
|
|
||||||
- `publisher.py` 更新为"已发布"
|
|
||||||
- `platform` 的 `sync.py` 同步此 JSON 到 SQLite 供前端快速查询
|
|
||||||
|
|
||||||
**不要手动编辑数据库**!应通过脚本或 API 修改 JSON。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 🎯 部署检查清单
|
|
||||||
|
|
||||||
- [x] Python 依赖安装 (`platform/backend/requirements.txt`)
|
|
||||||
- [x] 虚拟环境创建(可选)
|
|
||||||
- [x] 数据目录存在 (`automation/data/`)
|
|
||||||
- [x] 日志目录存在 (`automation/logs/`)
|
|
||||||
- [x] 选题 JSON 存在 (`automation/data/sustainability_topics.json`)
|
|
||||||
- [x] 前端文件就绪 (`platform/frontend/index.html`)
|
|
||||||
- [x] 软链接 `automation/scripts → ../scripts/` 正常
|
|
||||||
- [x] 端口 8000 可用
|
|
||||||
- [ ] cron 定时任务已配置(如需自动运行)
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 🔧 常见命令
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# 1. 启动管理平台
|
|
||||||
cd yu-zhi-ran
|
|
||||||
./start-platform.sh 8000
|
|
||||||
|
|
||||||
# 2. 手动运行完整流水线(测试)
|
|
||||||
python test_full_pipeline.py --topic-id A05
|
|
||||||
|
|
||||||
# 3. 查看日志
|
|
||||||
tail -f automation/logs/creator_$(date +%Y-%m-%d).log
|
|
||||||
tail -f automation/logs/optimizer_$(date +%Y-%m-%d).log
|
|
||||||
tail -f automation/logs/publisher_summary_$(date +%Y-%m-%d).json
|
|
||||||
|
|
||||||
# 4. 查看选题库状态
|
|
||||||
python -c "import json; d=json.load(open('automation/data/sustainability_topics.json')); print(f'总:{len(d)}, 待处理:{sum(1 for t in d if t.get(\"status\")==\"待处理\")}, 待发布:{sum(1 for t in d if t.get(\"status\")==\"待发布\")}')"
|
|
||||||
|
|
||||||
# 5. 触发单步任务
|
|
||||||
python scripts/collector.py
|
|
||||||
python scripts/creator.py --topic-id A01
|
|
||||||
python scripts/publisher.py --topic-id A01
|
|
||||||
|
|
||||||
# 6. API 测试
|
|
||||||
curl http://localhost:8000/api/system/status | python3 -m json.tool
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 📝 说明
|
|
||||||
|
|
||||||
### 为何保留软链接?
|
|
||||||
|
|
||||||
`automation/scripts/` 通过软链接指向 `../scripts/`,原因:
|
|
||||||
- 历史兼容:部分脚本内部使用了硬编码路径 `PROJECT_ROOT/scripts/`
|
|
||||||
- 统一管理:所有脚本集中在一个目录,便于维护
|
|
||||||
- 避免复制:减少磁盘占用和同步问题
|
|
||||||
|
|
||||||
### platform 与 automation 的关系
|
|
||||||
|
|
||||||
- **platform**: Web 管理界面 + API 服务
|
|
||||||
- **automation**: 数据存储 + 日志归档 + 软链接脚本
|
|
||||||
- **scripts**: 实际执行逻辑(CLI 工具)
|
|
||||||
|
|
||||||
platform 通过 `subprocess` 调用 `scripts/` 中的脚本,输出写入 `automation/data/` 和 `automation/logs/`。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
**更新日期**: 2026-04-19
|
|
||||||
**维护**: AI 助手小然
|
|
||||||
@@ -1,141 +0,0 @@
|
|||||||
# 小红书自动化推广系统(yzr-yxl会话隔离版)
|
|
||||||
|
|
||||||
## 📋 项目概览
|
|
||||||
|
|
||||||
为手机配件京东店铺设计的**小红书自动化内容发布系统**,当前会话完全隔离,不影响其他agent。
|
|
||||||
|
|
||||||
## 🗂️ 目录结构
|
|
||||||
|
|
||||||
```
|
|
||||||
/root/.openclaw/workspaces/yzr-yxl/
|
|
||||||
├── sessions/promoter/ # 🔒 会话隔离存储
|
|
||||||
│ ├── cookies/ # 登录状态
|
|
||||||
│ ├── screenshots/ # 操作截图
|
|
||||||
│ └── logs/ # 运行日志
|
|
||||||
├── scripts/ # 自动化脚本
|
|
||||||
│ ├── xhs-promoter.sh # 基础脚本
|
|
||||||
│ └── xhs-publish-advanced.sh # 高级脚本
|
|
||||||
├── content/ # 内容库
|
|
||||||
│ ├── posts/ # 笔记内容
|
|
||||||
│ └── images/ # 图片素材
|
|
||||||
├── cron/ # 定时任务配置
|
|
||||||
│ └── promoter-schedule.json
|
|
||||||
└── docs/ # 文档
|
|
||||||
└── xhs-setup-guide.md
|
|
||||||
```
|
|
||||||
|
|
||||||
## ✅ 已完成
|
|
||||||
|
|
||||||
1. **环境搭建**
|
|
||||||
- [x] 创建会话隔离目录结构
|
|
||||||
- [x] 验证 agent-browser 可用(v0.23.0)
|
|
||||||
- [x] 验证 Xvfb 支持
|
|
||||||
- [x] 分析小红书登录页结构
|
|
||||||
|
|
||||||
2. **脚本开发**
|
|
||||||
- [x] 基础登录/检查/发布脚本
|
|
||||||
- [x] 高级发布脚本(批量、定时、状态监控)
|
|
||||||
- [x] 示例内容模板(手机配件场景)
|
|
||||||
|
|
||||||
3. **配置文档**
|
|
||||||
- [x] 设置指南(Cookie导入)
|
|
||||||
- [x] 定时任务配置
|
|
||||||
|
|
||||||
## ⏳ 待完成
|
|
||||||
|
|
||||||
1. **登录授权**(需要你的操作)
|
|
||||||
- [ ] 获取小红书Cookie
|
|
||||||
- [ ] 上传到隔离目录
|
|
||||||
- [ ] 验证登录状态
|
|
||||||
|
|
||||||
2. **内容准备**
|
|
||||||
- [ ] 准备产品图片
|
|
||||||
- [ ] 创建真实内容文件
|
|
||||||
- [ ] 测试单篇发布
|
|
||||||
|
|
||||||
3. **自动化测试**
|
|
||||||
- [ ] 测试定时发布
|
|
||||||
- [ ] 监控日志输出
|
|
||||||
- [ ] 调整风控参数
|
|
||||||
|
|
||||||
## 🚀 快速开始
|
|
||||||
|
|
||||||
### 1. 查看当前状态
|
|
||||||
```bash
|
|
||||||
/root/.openclaw/workspaces/yzr-yxl/scripts/xhs-publish-advanced.sh status
|
|
||||||
```
|
|
||||||
|
|
||||||
### 2. 查看帮助
|
|
||||||
```bash
|
|
||||||
/root/.openclaw/workspaces/yzr-yxl/scripts/xhs-publish-advanced.sh help
|
|
||||||
```
|
|
||||||
|
|
||||||
### 3. 创建示例内容
|
|
||||||
```bash
|
|
||||||
/root/.openclaw/workspaces/yzr-yxl/scripts/xhs-publish-advanced.sh sample
|
|
||||||
```
|
|
||||||
|
|
||||||
### 4. 查看示例内容
|
|
||||||
```bash
|
|
||||||
cat /root/.openclaw/workspaces/yzr-yxl/content/posts/sample-post.json
|
|
||||||
```
|
|
||||||
|
|
||||||
## 🔐 登录步骤(关键)
|
|
||||||
|
|
||||||
由于服务器无图形界面,需要**Cookie导入**方式登录:
|
|
||||||
|
|
||||||
### 方式一:浏览器扩展导出(推荐)
|
|
||||||
|
|
||||||
1. 在本地电脑登录 [creator.xiaohongshu.com](https://creator.xiaohongshu.com)
|
|
||||||
2. 安装 [EditThisCookie](https://chrome.google.com/webstore/detail/editthiscookie/) 扩展
|
|
||||||
3. 导出为 JSON 格式
|
|
||||||
4. 保存到服务器的隔离路径:
|
|
||||||
```
|
|
||||||
/root/.openclaw/workspaces/yzr-yxl/sessions/promoter/cookies/xhs-session.json
|
|
||||||
```
|
|
||||||
|
|
||||||
### 方式二:手动复制Cookie
|
|
||||||
|
|
||||||
1. F12打开开发者工具 → Application → Cookies
|
|
||||||
2. 复制关键字段:`session_id`, `web_id`, `gid`, `a1` 等
|
|
||||||
3. 创建JSON文件:
|
|
||||||
```json
|
|
||||||
[
|
|
||||||
{"name": "session_id", "value": "your_value", "domain": ".xiaohongshu.com"},
|
|
||||||
{"name": "web_id", "value": "your_value", "domain": ".xiaohongshu.com"}
|
|
||||||
]
|
|
||||||
```
|
|
||||||
|
|
||||||
## 📊 自动化能力
|
|
||||||
|
|
||||||
| 功能 | 状态 | 说明 |
|
|
||||||
|------|------|------|
|
|
||||||
| 登录状态保持 | ✅ | Cookie隔离存储 |
|
|
||||||
| 单篇发布 | 🧪 | 框架完成,需测试 |
|
|
||||||
| 批量发布 | 🧪 | 支持JSON配置 |
|
|
||||||
| 定时任务 | 🧪 | Cron配置就绪 |
|
|
||||||
| 图片上传 | ⚠️ | 需要进一步开发 |
|
|
||||||
| 评论互动 | ❌ | 需额外开发,风险高 |
|
|
||||||
|
|
||||||
## ⚠️ 风控建议
|
|
||||||
|
|
||||||
1. **发布频率**: 每天1-2条,间隔至少6小时
|
|
||||||
2. **内容去重**: 同一产品换不同角度拍摄
|
|
||||||
3. **账号权重**: 建议养号2周后再开自动化
|
|
||||||
4. **备用策略**: 准备2-3个小号轮换
|
|
||||||
|
|
||||||
## 📝 下一步行动
|
|
||||||
|
|
||||||
需要你来完成:
|
|
||||||
|
|
||||||
1. [ ] **提供Cookie** - 按上述方式获取并上传
|
|
||||||
2. [ ] **准备素材** - 产品图片(建议每个产品5-10张场景图)
|
|
||||||
3. [ ] **测试发布** - 验证自动化流程
|
|
||||||
4. [ ] **启用定时** - 配置正式发布计划
|
|
||||||
|
|
||||||
或者我可以帮你:
|
|
||||||
- 创建更详细的内容模板
|
|
||||||
- 配置知乎/其他平台
|
|
||||||
- 开发评论互动功能(谨慎)
|
|
||||||
|
|
||||||
你想先完成哪一步?
|
|
||||||
@@ -1,156 +1,120 @@
|
|||||||
# 宇之然内容创作平台
|
# 宇之然内容创作平台
|
||||||
|
|
||||||
一个轻量级的管理平台,用于监控和操作内容生产流水线。
|
> 覆盖"选题→创作→审核→发布→数据追踪"全链路的内容运营工具
|
||||||
|
|
||||||
## 快速开始
|
**最后更新: 2026-05-12**
|
||||||
|
|
||||||
### 1. 环境准备
|
|
||||||
|
|
||||||
```bash
|
|
||||||
cd /root/.openclaw/workspaces/yzr-yxl/projects/yu-zhi-ran/platform
|
|
||||||
|
|
||||||
# 创建虚拟环境(推荐)
|
|
||||||
backend/venv/bin/python -m venv backend/venv # 若不存在
|
|
||||||
source backend/venv/bin/activate
|
|
||||||
|
|
||||||
# 安装依赖
|
|
||||||
pip install -r backend/requirements.txt
|
|
||||||
```
|
|
||||||
|
|
||||||
### 2. 启动服务
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# 方式一:使用启动脚本(推荐)
|
|
||||||
./run.sh 8000
|
|
||||||
|
|
||||||
# 方式二:手动启动
|
|
||||||
cd backend
|
|
||||||
python -m uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload
|
|
||||||
```
|
|
||||||
|
|
||||||
### 3. 访问
|
|
||||||
|
|
||||||
- **界面**: http://localhost:8000/
|
|
||||||
- **API文档**: http://localhost:8000/docs
|
|
||||||
- **系统状态**: http://localhost:8000/api/system/status
|
|
||||||
|
|
||||||
## 核心功能
|
|
||||||
|
|
||||||
| 功能 | 描述 |
|
|
||||||
|------|------|
|
|
||||||
| 📊 仪表盘 | 选题总数、待发布数、今日生成 |
|
|
||||||
| 🔄 流水线控制 | 触发创作、合规优化、状态监控 |
|
|
||||||
| 📝 选题管理 | 列表、筛选、预览、发布 |
|
|
||||||
| 📦 发布包管理 | 生成多平台HTML发布包、复制 |
|
|
||||||
| 📋 日志查看 | creator/optimizer/collector 日志 |
|
|
||||||
|
|
||||||
## 与自动化流水线的集成
|
|
||||||
|
|
||||||
本平台位于 `platform/`,不修改原有 `automation/scripts/` 脚本。
|
|
||||||
|
|
||||||
**集成方式**:
|
|
||||||
- `backend/app/core/generator.py` 调用 `scripts/creator.py`
|
|
||||||
- `backend/app/core/optimizer.py` 调用 `scripts/compliance_optimizer.py`
|
|
||||||
- `backend/app/api/publisher.py` 调用 `scripts/publisher.py`
|
|
||||||
- 数据存储:`automation/data/` 为唯一数据源
|
|
||||||
- 同步:`sync.py` 将 JSON 选题同步到 SQLite 数据库供前端查询
|
|
||||||
|
|
||||||
**目录结构关系**:
|
|
||||||
|
|
||||||
```
|
|
||||||
yu-zhi-ran/
|
|
||||||
├── platform/ # 管理平台(本目录)
|
|
||||||
│ ├── backend/app/
|
|
||||||
│ │ ├── core/generator.py → 调用 ../scripts/creator.py
|
|
||||||
│ │ ├── core/optimizer.py → 调用 ../scripts/compliance_optimizer.py
|
|
||||||
│ │ └── api/publisher.py → 调用 ../scripts/publisher.py
|
|
||||||
│ └── frontend/index.html # UI
|
|
||||||
├── automation/
|
|
||||||
│ ├── data/ ← 数据源(JSON)
|
|
||||||
│ │ ├── sustainability_topics.json
|
|
||||||
│ │ ├── drafts/
|
|
||||||
│ │ └── releases/
|
|
||||||
│ └── logs/ ← 日志(creator, optimizer, publisher)
|
|
||||||
└── scripts/
|
|
||||||
├── creator.py ← 被调用
|
|
||||||
├── compliance_optimizer.py
|
|
||||||
└── publisher.py
|
|
||||||
```
|
|
||||||
|
|
||||||
## 配置
|
|
||||||
|
|
||||||
环境变量(可选):
|
|
||||||
|
|
||||||
| 变量 | 说明 | 默认 |
|
|
||||||
|------|------|------|
|
|
||||||
| `PROJECT_ROOT` | 项目根目录 | 自动推导 |
|
|
||||||
| `DATA_DIR` | 平台数据库目录 | `platform/data` |
|
|
||||||
| `LOG_LEVEL` | 日志级别 | `INFO` |
|
|
||||||
| `ALLOWED_ORIGINS` | CORS允许的源 | `*` |
|
|
||||||
|
|
||||||
示例:
|
|
||||||
```bash
|
|
||||||
export PROJECT_ROOT=/path/to/yu-zhi-ran
|
|
||||||
./run.sh 8000
|
|
||||||
```
|
|
||||||
|
|
||||||
## 开发调试
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# 检查依赖和环境
|
|
||||||
python check.py
|
|
||||||
|
|
||||||
# 查看 API 日志
|
|
||||||
tail -f automation/logs/creator_$(date +%Y-%m-%d).log
|
|
||||||
|
|
||||||
# 数据库初始化(首次)
|
|
||||||
cd backend
|
|
||||||
python -c "from app.database import init_db; init_db()"
|
|
||||||
|
|
||||||
# 手动同步数据(测试)
|
|
||||||
curl -X POST http://localhost:8000/api/system/sync/run
|
|
||||||
```
|
|
||||||
|
|
||||||
## 故障排查
|
|
||||||
|
|
||||||
| 症状 | 检查点 |
|
|
||||||
|------|--------|
|
|
||||||
| 前端显示无选题 | 1. `automation/data/sustainability_topics.json` 是否存在且包含 `status: \"待处理\"` 的数据<br>2. 点击"全量刷新"按钮 |
|
|
||||||
| 创作任务失败 | 1. 查看 `automation/logs/creator_*.log`<br>2. 确认 `scripts/creator.py` 可执行 |
|
|
||||||
| 发布包为空 | 1. 确认 `automation/data/releases/YYYY-MM-DD/` 下有对应平台的 HTML<br>2. 点击发布Tab → "重新生成" |
|
|
||||||
| 端口8000占用 | 停止其他 uvicorn 进程或 `./run.sh 8080` 改用其他端口 |
|
|
||||||
|
|
||||||
## 部署清单
|
|
||||||
|
|
||||||
- [x] FastAPI 后端(无 Docker,直接运行)
|
|
||||||
- [x] Vue 3 前端(CDN依赖,无需构建)
|
|
||||||
- [x] SQLite 数据库(`platform/data/yzr.db`)
|
|
||||||
- [x] 自动化流水线集成(subprocess 调用)
|
|
||||||
- [x] 数据同步模块(JSON ↔ SQLite)
|
|
||||||
- [x] 流水线状态监控面板
|
|
||||||
- [x] 日志查看功能
|
|
||||||
- [ ] 反向代理(Nginx)配置(如需外网访问)
|
|
||||||
- [ ] HTTPS(Let's Encrypt)
|
|
||||||
- [ ] 系统服务(systemd)
|
|
||||||
|
|
||||||
如需外网访问,建议配置 Nginx 反向代理和 HTTPS。
|
|
||||||
|
|
||||||
## 技术栈
|
|
||||||
|
|
||||||
- **后端**: FastAPI 0.115.0 + Uvicorn
|
|
||||||
- **前端**: Vue 3 + Element Plus
|
|
||||||
- **数据库**: SQLite 3
|
|
||||||
- **脚本**: Python 3 (subprocess)
|
|
||||||
- **样式**: Tailwind CSS (CDN)
|
|
||||||
|
|
||||||
## 文档
|
|
||||||
|
|
||||||
- 详细架构设计: `PORTFOLIO.md`
|
|
||||||
- 使用说明: 本文档
|
|
||||||
- API 文档: http://localhost:8000/docs (运行后)
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
**版本**: 0.1.0
|
> **项目进度 → 详见 [PROGRESS.md](PROGRESS.md)**(本文件为唯一进度真理源)
|
||||||
**更新**: 2026-04-19
|
|
||||||
**维护**: 宇之然 AI 助手
|
---
|
||||||
|
|
||||||
|
## 技术栈
|
||||||
|
|
||||||
|
| 层次 | 技术 |
|
||||||
|
|------|------|
|
||||||
|
| 后端 | FastAPI 0.104+ |
|
||||||
|
| ORM | SQLAlchemy 2.0+ |
|
||||||
|
| 数据库 | PostgreSQL 16 |
|
||||||
|
| 前端 | Vue 3 (CDN) + Element Plus |
|
||||||
|
| 认证 | JWT (python-jose) + bcrypt |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 数据库配置
|
||||||
|
|
||||||
|
详见 `platform/backend/.env`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 启动方式
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /root/openclaw-workspace/projects/yu-zhi-ran
|
||||||
|
./start-platform.sh 8001
|
||||||
|
```
|
||||||
|
|
||||||
|
默认管理员: **admin** / **admin123**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 页面入口
|
||||||
|
|
||||||
|
| 页面 | 地址 |
|
||||||
|
|------|------|
|
||||||
|
| 仪表盘 | http://localhost:8001/ |
|
||||||
|
| 选题管理 | http://localhost:8001/topics.html |
|
||||||
|
| 内容日历 | http://localhost:8001/calendar.html |
|
||||||
|
| 数据分析 | http://localhost:8001/metrics.html |
|
||||||
|
| 素材库 | http://localhost:8001/assets.html |
|
||||||
|
| 创作任务 | http://localhost:8001/tasks.html |
|
||||||
|
| 平台配置 | http://localhost:8001/platforms.html |
|
||||||
|
| 系统管理 | http://localhost:8001/admin.html |
|
||||||
|
| API 文档 | http://localhost:8001/docs |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## API 模块
|
||||||
|
|
||||||
|
| 模块 | 文件 | 功能 |
|
||||||
|
|------|------|------|
|
||||||
|
| 认证 | auth.py | 登录/注册/JWT |
|
||||||
|
| 选题 | topics.py | CRUD、评分、批量操作 |
|
||||||
|
| 选题配置 | topic_config.py | 领域/评分字段/状态配置 |
|
||||||
|
| 文章 | articles.py | 文章管理 |
|
||||||
|
| 发布 | publishing.py | 发布记录 |
|
||||||
|
| 内容日历 | calendar.py | 排期、绑定选题 |
|
||||||
|
| 数据分析 | metrics.py | 仪表盘、趋势、推荐 |
|
||||||
|
| 素材库 | assets.py | 上传、标签、搜索 |
|
||||||
|
| 创作任务 | tasks.py | 异步任务、进度管理 |
|
||||||
|
| 平台配置 | platform_config.py | 知乎/微信/小红书 |
|
||||||
|
| 系统管理 | admin.py | 用户/案例/日志/配置 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 数据模型
|
||||||
|
|
||||||
|
- **TopicField** - 领域分类配置
|
||||||
|
- **TopicConfigField** - 选题评分字段
|
||||||
|
- **TopicStatusConfig** - 选题状态配置
|
||||||
|
- **Topic** - 选题主表
|
||||||
|
- **ContentCalendar** - 内容日历
|
||||||
|
- **ContentMetrics** - 数据追踪
|
||||||
|
- **MediaAsset** - 素材库
|
||||||
|
- **PlatformConfig** - 平台配置
|
||||||
|
- **ContentTask** - 创作任务
|
||||||
|
- **User** - 用户
|
||||||
|
- **Case** - 案例库
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 初始化数据
|
||||||
|
|
||||||
|
- 领域: 6 个(未来工作方式、AI与效率、可持续生活、数字游民、个人成长、科技人文)
|
||||||
|
- 状态: 5 种(待处理、待审查、草稿、待发布、已发布)
|
||||||
|
- 平台: 3 个(知乎、微信公众号、小红书)
|
||||||
|
- 管理员: admin/admin123
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 项目结构
|
||||||
|
|
||||||
|
```
|
||||||
|
yu-zhi-ran/
|
||||||
|
├── platform/
|
||||||
|
│ ├── backend/
|
||||||
|
│ │ ├── app/
|
||||||
|
│ │ │ ├── api/ # REST API
|
||||||
|
│ │ │ ├── core/ # 业务逻辑
|
||||||
|
│ │ │ ├── models.py # SQLAlchemy 模型
|
||||||
|
│ │ │ ├── schemas.py # Pydantic 验证
|
||||||
|
│ │ │ ├── database.py # 数据库连接
|
||||||
|
│ │ │ ├── main.py # FastAPI 入口
|
||||||
|
│ │ │ └── initial_data.py
|
||||||
|
│ │ └── venv/
|
||||||
|
│ └── frontend/ # Vue + Element Plus SPA
|
||||||
|
├── automation/ # 自动化脚本
|
||||||
|
├── content/ # 内容数据
|
||||||
|
└── scripts/ # 工具脚本
|
||||||
|
```
|
||||||
@@ -1,262 +0,0 @@
|
|||||||
# 宇之然内容管理平台
|
|
||||||
|
|
||||||
> 自动化内容生产 + Web 管理界面
|
|
||||||
|
|
||||||
一个可持续、可管理的内容创业系统,实现从选题采集到多平台发布的全流程自动化。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 🎯 核心能力
|
|
||||||
|
|
||||||
- ✅ **全自动流水线**:采集 → 创作 → 合规 → 发布准备(每日凌晨运行)
|
|
||||||
- ✅ **Web 管理界面**:一键控制、实时监控、可视化发布包管理
|
|
||||||
- ✅ **降级策略**:外部源失效时自动切换本地案例库,保证稳定产出
|
|
||||||
- ✅ **多平台支持**:知乎、小红书、微信公众号(HTML 发布包)
|
|
||||||
- ✅ **风控设计**:半自动发布(生成 HTML + 人工复制),避免平台封号
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 📦 项目结构(简洁版)
|
|
||||||
|
|
||||||
```
|
|
||||||
yu-zhi-ran/
|
|
||||||
├── platform/ # Web 管理平台(FastAPI + Vue 3)
|
|
||||||
│ ├── backend/ # API 服务
|
|
||||||
│ └── frontend/ # 管理界面
|
|
||||||
├── automation/ # 自动化数据 + 日志
|
|
||||||
│ ├── data/ # JSON 选题库、草稿、发布包
|
|
||||||
│ ├── logs/ # 运行日志
|
|
||||||
│ └── scripts/ → ../scripts/ # 软链到 scripts/
|
|
||||||
├── scripts/ # CLI 脚本(collector, creator, optimizer...)
|
|
||||||
├── content/ # 已发布内容存储
|
|
||||||
├── config/ # 配置文件(RSS源、机器人)
|
|
||||||
├── start-platform.sh # 快速启动管理平台
|
|
||||||
└── README_NEW.md # 本文档
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 🚀 快速开始
|
|
||||||
|
|
||||||
### 1️⃣ 启动管理平台(推荐)
|
|
||||||
|
|
||||||
```bash
|
|
||||||
cd /root/.openclaw/workspaces/yzr-yxl/projects/yu-zhi-ran
|
|
||||||
./start-platform.sh 8001
|
|
||||||
```
|
|
||||||
|
|
||||||
访问:
|
|
||||||
- 界面:http://localhost:8001/
|
|
||||||
- API 文档:http://localhost:8001/docs
|
|
||||||
|
|
||||||
### 2️⃣ 测试自动化流水线
|
|
||||||
|
|
||||||
```bash
|
|
||||||
cd /root/.openclaw/workspaces/yzr-yxl/projects/yu-zhi-ran
|
|
||||||
python test_full_pipeline.py --topic-id A01
|
|
||||||
```
|
|
||||||
|
|
||||||
预期输出:
|
|
||||||
- 生成 `automation/data/drafts/2026-04-19/A01_*.md`
|
|
||||||
- 生成 `automation/data/releases/2026-04-19/*/A01_*.html`
|
|
||||||
- 合规自动通过
|
|
||||||
|
|
||||||
### 3️⃣ 查看当前状态
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# 选题库统计
|
|
||||||
python -c "import json; d=json.load(open('automation/data/sustainability_topics.json')); print(f'总{len(d)} 待处理:{sum(1 for t in d if t.get(\"status\")==\"待处理\")} 待发布:{sum(1 for t in d if t.get(\"status\")==\"待发布\")}')"
|
|
||||||
|
|
||||||
# 日志(今日)
|
|
||||||
tail -f automation/logs/creator_$(date +%Y-%m-%d).log
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 🔄 系统架构
|
|
||||||
|
|
||||||
```
|
|
||||||
定时任务 (cron)
|
|
||||||
│
|
|
||||||
├─▶ 05:00 collector.py → automation/data/sustainability_topics.json(选题)
|
|
||||||
├─▶ 05:30 creator.py → drafts/ + releases/(HTML)
|
|
||||||
├─▶ 05:45 optimizer.py → 合规报告
|
|
||||||
└─▶ 06:00 publisher.py → content/published/(发布包)
|
|
||||||
|
|
||||||
Web 平台(可选控制)
|
|
||||||
│
|
|
||||||
├─▶ 一键触发创作/优化
|
|
||||||
├─▶ 查看选题列表和详情
|
|
||||||
├─▶ 生成发布包、预览HTML、复制
|
|
||||||
└─▶ 查看实时流水线状态
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 📊 当前运行状态(2026-04-19)
|
|
||||||
|
|
||||||
| 指标 | 数值 |
|
|
||||||
|------|------|
|
|
||||||
| 总选题数 | 22 |
|
|
||||||
| 待处理 | 20 |
|
|
||||||
| 待发布 | 2 (A01, A02) |
|
|
||||||
| 自动运行 | ✅ 正常(05:00-06:00) |
|
|
||||||
| 最新运行 | A02(05:30 完成,8秒) |
|
|
||||||
| 合规通过率 | 100%(3/3) |
|
|
||||||
|
|
||||||
待发布内容已就绪,可手动发布到知乎/小红书。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 🎮 主要操作指南
|
|
||||||
|
|
||||||
### 触发创作任务
|
|
||||||
|
|
||||||
**Web 界面**:平台 → "运行创作任务" 按钮
|
|
||||||
|
|
||||||
**或命令行**:
|
|
||||||
```bash
|
|
||||||
python scripts/creator.py --topic-id A03
|
|
||||||
```
|
|
||||||
|
|
||||||
### 生成发布包
|
|
||||||
|
|
||||||
**Web 界面**:选题 → 发布 → "重新生成"
|
|
||||||
|
|
||||||
**或命令行**:
|
|
||||||
```bash
|
|
||||||
python scripts/publisher.py --topic-id A01
|
|
||||||
```
|
|
||||||
|
|
||||||
发布包位置:
|
|
||||||
```
|
|
||||||
content/published/A01/手动发布/
|
|
||||||
├── 知乎/文章.html
|
|
||||||
└── 小红书/文章.html
|
|
||||||
```
|
|
||||||
|
|
||||||
### 标记为已发布
|
|
||||||
|
|
||||||
在 Web 界面"发布管理"中填写各平台链接 → "确认发布"
|
|
||||||
|
|
||||||
这会更新选题状态为"已发布"并保存链接。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## ⚙️ 配置
|
|
||||||
|
|
||||||
### 数据源(automation/config/sources.yaml)
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
sources:
|
|
||||||
- name: "新华网-环保频道"
|
|
||||||
type: "rss"
|
|
||||||
url: "http://..."
|
|
||||||
|
|
||||||
- name: "本地案例库"
|
|
||||||
type: "local_markdown"
|
|
||||||
path: "automation/data/cases.md"
|
|
||||||
```
|
|
||||||
|
|
||||||
### 环境变量(platform/.env,可选)
|
|
||||||
|
|
||||||
```bash
|
|
||||||
PROJECT_ROOT=/root/.openclaw/workspaces/yzr-yxl/projects/yu-zhi-ran
|
|
||||||
LOG_LEVEL=INFO
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 📝 开发调试
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# 1. 检查环境
|
|
||||||
cd platform
|
|
||||||
python check.py
|
|
||||||
|
|
||||||
# 2. 启动服务(开发模式)
|
|
||||||
./run.sh 8000
|
|
||||||
|
|
||||||
# 3. 查看 API 日志(新终端)
|
|
||||||
tail -f automation/logs/creator_$(date +%Y-%m-%d).log
|
|
||||||
|
|
||||||
# 4. 重置数据库(如需)
|
|
||||||
rm -f data/yzr.db
|
|
||||||
cd platform/backend
|
|
||||||
python -c "from app.database import init_db; init_db(); from app.initial_data import import_topics_from_json; import_topics_from_json()"
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 🚧 注意事项
|
|
||||||
|
|
||||||
### 路径规范
|
|
||||||
|
|
||||||
所有 `platform/backend/app/**/*.py` 必须使用相对路径计算 `PROJECT_ROOT`:
|
|
||||||
|
|
||||||
- `app/database.py`, `initial_data.py`: `Path(__file__).resolve().parents[3]`
|
|
||||||
- `app/api/*.py`, `app/core/*.py`: `Path(__file__).resolve().parents[4]`
|
|
||||||
|
|
||||||
禁止使用硬编码绝对路径!
|
|
||||||
|
|
||||||
### 软链接
|
|
||||||
|
|
||||||
```
|
|
||||||
platform/data → ../data
|
|
||||||
platform/logs → ../logs
|
|
||||||
automation/scripts → ../scripts/
|
|
||||||
```
|
|
||||||
|
|
||||||
这些链接确保平台和自动化模块共享数据。
|
|
||||||
|
|
||||||
### 数据流向
|
|
||||||
|
|
||||||
**唯一真理源**:`automation/data/sustainability_topics.json`
|
|
||||||
|
|
||||||
- 所有状态更新(待处理 → 待发布 → 已发布)都应写入此 JSON
|
|
||||||
- `platform` 通过 `sync.py` 同步到 SQLite 供前端快速查询
|
|
||||||
- 不要直接修改数据库而不更新 JSON!
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 📚 详细文档
|
|
||||||
|
|
||||||
- `YUZHIRAN_PLATFORM.md` - 完整项目文档(架构、API、扩展)
|
|
||||||
- `platform/PORTFOLIO.md` - 平台架构详解
|
|
||||||
- `platform/README.md` - 平台使用说明
|
|
||||||
- `PROJECT_STRUCTURE.md` - 目录结构说明
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 🐛 故障排查
|
|
||||||
|
|
||||||
| 问题 | 检查点 | 命令 |
|
|
||||||
|------|--------|------|
|
|
||||||
| Web 界面无数据 | JSON 是否同步? | `curl http://localhost:8000/api/system/status` |
|
|
||||||
| 创作失败 | creator 日志 | `tail -n 50 automation/logs/creator_*.log` |
|
|
||||||
| 发布包缺失 | releases 目录 | `ls automation/data/releases/$(date +%Y-%m-%d)/` |
|
|
||||||
| 端口占用 | 8000 被谁用? | `lsof -i:8000` |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 🎉 现状总结
|
|
||||||
|
|
||||||
昨天(4月18日)完成:
|
|
||||||
- 数据源切换(新华网+人民网)
|
|
||||||
- 降级策略(本地案例库保底)
|
|
||||||
- 锁机制(2小时超时)
|
|
||||||
- publisher 发布包系统
|
|
||||||
- 前端管理界面
|
|
||||||
|
|
||||||
今天(4月19日):
|
|
||||||
- 统一项目结构,整合 platform + automation
|
|
||||||
- 修正所有路径计算
|
|
||||||
- 添加软链接统一数据目录
|
|
||||||
- 创建启动脚本和文档
|
|
||||||
|
|
||||||
**状态**:✅ 系统稳定运行,每日自动产出内容,Web 平台就绪。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
**维护**: AI 助手小然
|
|
||||||
**更新**: 2026-04-19
|
|
||||||
@@ -1,285 +0,0 @@
|
|||||||
# 宇之然内容管理平台 - 完整项目文档
|
|
||||||
|
|
||||||
## 📦 项目概览
|
|
||||||
|
|
||||||
宇之然内容管理平台是一个集**自动化流水线**与**Web管理界面**于一体的内容生产系统。
|
|
||||||
|
|
||||||
- **自动化模块**: 采集→创作→优化→发布的全自动脚本
|
|
||||||
- **管理平台**: Web UI 监控、控制、发布包管理
|
|
||||||
- **数据源**: 单一 JSON 文件 + 本地案例库
|
|
||||||
- **目标**: 每日自动生成高质量原创内容,多平台分发
|
|
||||||
|
|
||||||
## 🏗️ 目录结构
|
|
||||||
|
|
||||||
```
|
|
||||||
yu-zhi-ran/
|
|
||||||
├── platform/ # 管理平台(FastAPI + Vue 3)
|
|
||||||
│ ├── backend/ # FastAPI 后端
|
|
||||||
│ │ └── app/
|
|
||||||
│ │ ├── api/ # REST API
|
|
||||||
│ │ │ ├── system.py # 系统状态、流水线控制
|
|
||||||
│ │ │ ├── topics.py # 选题管理
|
|
||||||
│ │ │ ├── publisher.py # 发布包管理
|
|
||||||
│ │ │ └── articles.py
|
|
||||||
│ │ └── core/ # 业务逻辑封装
|
|
||||||
│ │ ├── generator.py → 调用 scripts/creator.py
|
|
||||||
│ │ ├── optimizer.py → 调用 scripts/compliance_optimizer.py
|
|
||||||
│ │ └── sync.py → 同步 automation/data/*.json
|
|
||||||
│ └── frontend/ # Vue 3 前端(CDN依赖)
|
|
||||||
│ └── index.html
|
|
||||||
├── automation/ # 自动化流水线(脚本+数据+日志)
|
|
||||||
│ ├── scripts/ (软链) → ../scripts/
|
|
||||||
│ ├── data/ # JSON 数据源
|
|
||||||
│ │ ├── sustainability_topics.json # 选题库
|
|
||||||
│ │ ├── drafts/ # 草稿目录
|
|
||||||
│ │ └── releases/ # 发布包(按日期)
|
|
||||||
│ └── logs/ # 运行日志
|
|
||||||
│ ├── collector_*.log
|
|
||||||
│ ├── creator_*.log
|
|
||||||
│ ├── optimizer_*.log
|
|
||||||
│ └── publisher_*.log
|
|
||||||
├── scripts/ # 底层CLI脚本(被automation/scripts/引用)
|
|
||||||
│ ├── collector.py # 采集热点
|
|
||||||
│ ├── creator.py # 内容创作
|
|
||||||
│ ├── compliance_optimizer.py # 合规优化
|
|
||||||
│ ├── publisher.py # 发布包生成
|
|
||||||
│ ├── research.py # 研究资料
|
|
||||||
│ ├── outline.py # 大纲生成
|
|
||||||
│ └── writer.py # 撰写主力
|
|
||||||
├── content/ # 已发布内容存储
|
|
||||||
│ ├── published/ # 按 topic_id 组织
|
|
||||||
│ ├── drafts/ # 草稿
|
|
||||||
│ ├── ideas/ # 选题记录
|
|
||||||
│ └── images/ # 配图资源
|
|
||||||
├── config/ # 配置文件
|
|
||||||
│ ├── sources.yaml # RSS/网页源配置
|
|
||||||
│ └── wecom_config.yaml # 企业微信通知
|
|
||||||
├── brand/ # 品牌资产
|
|
||||||
│ ├── brand-book.md
|
|
||||||
│ └── guidelines.md
|
|
||||||
├── research/ # 行业研究
|
|
||||||
│ └── trends-2026.md
|
|
||||||
├── strategy/ # 内容策略
|
|
||||||
│ └── 全球-本土比较研究与全新内容战略规划-2026-04-15.md
|
|
||||||
├── tasks/ # 项目管理
|
|
||||||
│ └── todo.md
|
|
||||||
├── logs/ # 根目录日志(兼容)
|
|
||||||
├── backup/ # 备份归档
|
|
||||||
├── README.md # 项目总览
|
|
||||||
├── TEST_FULL_PIPELINE.md # 测试指南
|
|
||||||
└── run_publisher.sh # 快速启动发布任务
|
|
||||||
|
|
||||||
# 软链接(保持路径兼容)
|
|
||||||
automation/scripts → ../scripts/
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 🚀 快速开始
|
|
||||||
|
|
||||||
### 方式一:直接运行自动化流水线(CLI)
|
|
||||||
|
|
||||||
```bash
|
|
||||||
cd /root/.openclaw/workspaces/yzr-yxl/projects/yu-zhi-ran
|
|
||||||
|
|
||||||
# 手动执行各步骤
|
|
||||||
python scripts/collector.py # 采集选题
|
|
||||||
python scripts/creator.py # 创作内容
|
|
||||||
python scripts/compliance_optimizer.py # 合规优化
|
|
||||||
python scripts/publisher.py # 生成发布包
|
|
||||||
|
|
||||||
# 或使用测试脚本
|
|
||||||
python test_full_pipeline.py --topic-id A01
|
|
||||||
```
|
|
||||||
|
|
||||||
### 方式二:启动 Web 管理平台
|
|
||||||
|
|
||||||
```bash
|
|
||||||
cd platform
|
|
||||||
./run.sh 8001
|
|
||||||
|
|
||||||
# 访问
|
|
||||||
# - 界面: http://localhost:8001/
|
|
||||||
# - API文档: http://localhost:8001/docs
|
|
||||||
```
|
|
||||||
|
|
||||||
**功能**:
|
|
||||||
- 📊 仪表盘:选题统计、今日生成
|
|
||||||
- 🔄 控制台:一键触发 collector/creator/optimizer
|
|
||||||
- 📝 选题管理:列表、预览、状态
|
|
||||||
- 📦 发布管理:生成发布包、查看HTML、复制
|
|
||||||
- 📋 日志查看:所有模块实时日志
|
|
||||||
|
|
||||||
### 方式三:定时自动运行(cron)
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# 编辑 crontab
|
|
||||||
crontab -e
|
|
||||||
|
|
||||||
# 添加以下任务(参考)
|
|
||||||
0 5 * * * cd /path/to/yu-zhi-ran && python automation/scripts/collector.py
|
|
||||||
30 5 * * * cd /path/to/yu-zhi-ran && python automation/scripts/creator.py
|
|
||||||
45 5 * * * cd /path/to/yu-zhi-ran && python automation/scripts/compliance_optimizer.py
|
|
||||||
0 6 * * * cd /path/to/yu-zhi-ran && python automation/scripts/publisher.py
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 🔄 系统架构
|
|
||||||
|
|
||||||
### 数据流
|
|
||||||
|
|
||||||
```
|
|
||||||
┌─────────────────┐
|
|
||||||
│ 采集/创作/优化 │ ←─ automation/scripts/*.py
|
|
||||||
│ (CLI 脚本) │
|
|
||||||
└────────┬────────┘
|
|
||||||
│ 读写 JSON
|
|
||||||
▼
|
|
||||||
┌─────────────────┐
|
|
||||||
│ automation/data │
|
|
||||||
│ sustainability_ │
|
|
||||||
│ topics.json │
|
|
||||||
└────────┬────────┘
|
|
||||||
│ 同步
|
|
||||||
▼
|
|
||||||
┌─────────────────┐
|
|
||||||
│ platform/ │
|
|
||||||
│ FastAPI + │
|
|
||||||
│ SQLite DB │
|
|
||||||
└────────┬────────┘
|
|
||||||
│ HTTP API
|
|
||||||
▼
|
|
||||||
┌─────────────────┐
|
|
||||||
│ Web 前端 │
|
|
||||||
│ (Vue 3) │
|
|
||||||
└─────────────────┘
|
|
||||||
```
|
|
||||||
|
|
||||||
### 触发流程
|
|
||||||
|
|
||||||
| 操作 | API端点 | 执行脚本 | 结果 |
|
|
||||||
|------|---------|----------|------|
|
|
||||||
| 点击"运行创作任务" | POST `/api/system/generate/run` | `scripts/creator.py` | 生成草稿 → 状态: 待审查 |
|
|
||||||
| 点击"运行合规优化" | POST `/api/system/optimize/run` | `scripts/compliance_optimizer.py` | 全自动通过 → 状态: 待发布 |
|
|
||||||
| 点击"生成发布包" | POST `/api/publisher/generate/{id}` | `scripts/publisher.py` | HTML包 → content/published/ |
|
|
||||||
| 页面刷新 | GET `/api/system/status` | - | 显示最新状态 |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 📊 当前状态(2026-04-19)
|
|
||||||
|
|
||||||
- **选题库**: 22 个(20 待处理 + 2 待发布)
|
|
||||||
- **自动运行**: ✅ 每日 05:00-06:00 全流程
|
|
||||||
- **上次运行**: 2026-04-19 05:30(A02 选题,8秒完成)
|
|
||||||
- **合规通过率**: 100%(小样本)
|
|
||||||
- **发布包**: A01、A02 已就绪(知乎+小红书)
|
|
||||||
|
|
||||||
查看详细日志:
|
|
||||||
```bash
|
|
||||||
tail -f automation/logs/creator_$(date +%Y-%m-%d).log
|
|
||||||
tail -f automation/logs/publisher_$(date +%Y-%m-%d).log
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 🔧 开发调试
|
|
||||||
|
|
||||||
### 检查环境
|
|
||||||
```bash
|
|
||||||
cd platform
|
|
||||||
python check.py
|
|
||||||
```
|
|
||||||
|
|
||||||
### 手动测试流水线
|
|
||||||
```bash
|
|
||||||
python test_full_pipeline.py --topic-id A05
|
|
||||||
```
|
|
||||||
|
|
||||||
### API 测试
|
|
||||||
```bash
|
|
||||||
# 系统状态
|
|
||||||
curl http://localhost:8000/api/system/status
|
|
||||||
|
|
||||||
# 触发创作
|
|
||||||
curl -X POST http://localhost:8000/api/system/generate/run
|
|
||||||
|
|
||||||
# 流水线状态
|
|
||||||
curl http://localhost:8000/api/system/pipeline/status
|
|
||||||
```
|
|
||||||
|
|
||||||
### 数据库重置
|
|
||||||
```bash
|
|
||||||
cd platform/backend
|
|
||||||
rm -f data/yzr.db
|
|
||||||
python -c "from app.database import init_db; init_db()"
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 📝 配置说明
|
|
||||||
|
|
||||||
### automation/config/sources.yaml
|
|
||||||
|
|
||||||
配置外部信息源(RSS/网页):
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
sources:
|
|
||||||
- name: "新华网-环保频道"
|
|
||||||
type: "rss"
|
|
||||||
url: "http://www.news.cn/..."
|
|
||||||
focus: "可持续性"
|
|
||||||
|
|
||||||
- name: "人民网-生态环境"
|
|
||||||
type: "rss"
|
|
||||||
url: "http://env.people.com.cn/..."
|
|
||||||
focus: "环保政策"
|
|
||||||
```
|
|
||||||
|
|
||||||
### platform/.env (可选)
|
|
||||||
|
|
||||||
```bash
|
|
||||||
PROJECT_ROOT=/path/to/yu-zhi-ran
|
|
||||||
DATA_DIR=/path/to/data
|
|
||||||
LOG_LEVEL=INFO
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 🎯 核心特性
|
|
||||||
|
|
||||||
| 特性 | 实现 |
|
|
||||||
|------|------|
|
|
||||||
| **降级策略** | 外部源失败 → 本地数据库 → Markdown案例库 |
|
|
||||||
| **锁机制** | 2小时超时,防止并发冲突 |
|
|
||||||
| **状态同步** | JSON ↔ SQLite 自动同步 |
|
|
||||||
| **发布准备** | 生成多平台HTML + 发布指南,人工发布(风控) |
|
|
||||||
| **Web管理** | Vue 3 单页应用,无需构建 |
|
|
||||||
| **日志聚合** | 所有模块日志按日期归档 |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 🚧 待办事项
|
|
||||||
|
|
||||||
- [ ] 添加用户认证(目前仅本地访问)
|
|
||||||
- [ ] 实现异步任务状态轮询(创作/优化耗时较长)
|
|
||||||
- [ ] Nginx 反向代理配置(外网访问)
|
|
||||||
- [ ] 监控告警(失败通知)
|
|
||||||
- [ ] 多账号/IP策略(小红书多号分散风险)
|
|
||||||
- [ ] 数据导出功能(选题库、发布记录)
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 📚 相关文档
|
|
||||||
|
|
||||||
- `platform/PORTFOLIO.md` - 平台架构详解
|
|
||||||
- `platform/README.md` - 管理平台使用说明
|
|
||||||
- `PROJECT_PLAN_V2.md` - 盈利模式与5平台矩阵
|
|
||||||
- `HERMES_AND_YUZHRAN_STATUS.md` - 多Agent共享状态
|
|
||||||
- `2026-04-18-YUZHRAN-FIXES-SUMMARY.md` - 技术修复总结
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
**版本**: 2.0 (2026-04-19)
|
|
||||||
**维护**: 宇之然 AI 助手
|
|
||||||
**最后更新**: 2026-04-19
|
|
||||||
@@ -0,0 +1,331 @@
|
|||||||
|
# 宇之然工作台改造方案 — 极简实用 AI Agent 时代设计
|
||||||
|
|
||||||
|
> 调研日期: 2026-06-16
|
||||||
|
> 基于 2026 年 AI 产品设计趋势 + 现有工作台全面审计
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 一、现有工作台问题分析
|
||||||
|
|
||||||
|
### 1.1 当前页面结构
|
||||||
|
|
||||||
|
| 页面 | 定位 | 问题 |
|
||||||
|
|------|------|------|
|
||||||
|
| `/index.html` 仪表盘 | 系统概览 + 模块状态 + 近期计划 | **系统视角**,不是用户视角。6 张统计卡片 + 6 个定时模块卡片 + 调度状态 → 像运维面板,不像创作工作台 |
|
||||||
|
| `topics.html` 选题 | 选题表格 CRUD + 批量操作 | 功能完整但无聊。没有 AI 辅助选题推荐,没有智能排序 |
|
||||||
|
| `metrics.html` 数据 | 统计看板 + 图表 | 功能 OK,但与 GEO/搜索排名/合规数据分离在不同页面 |
|
||||||
|
| `calendar.html` 日历 | 内容日历 | 独立页面,与选题/数据割裂 |
|
||||||
|
| `tasks.html` 任务 | 流水线执行记录 | 展示后端调度状态,普通用户看不懂 |
|
||||||
|
| `admin.html` 系统管理 | 13 个 Tab 的后台 | 混入了业务功能(AI助手、搜索排名、GEO) |
|
||||||
|
| `assets.html` 素材 | 素材管理 | 基础功能 |
|
||||||
|
| `landing.html` 官网 | 产品官网 | ✅ 独立、清晰 |
|
||||||
|
|
||||||
|
### 1.2 核心问题
|
||||||
|
|
||||||
|
1. **仪表盘是「系统监控」不是「创作工作台」**
|
||||||
|
- 一进来看到的是定时任务状态(热点趋势/采集/创作/审查),不是「我今天要做什么」
|
||||||
|
- 缺少任务优先级、待办提醒、进度概览
|
||||||
|
- 对于内容编辑来说,模块卡片(scheduler 状态)毫无意义
|
||||||
|
|
||||||
|
2. **导航/信息架构是「功能菜单」不是「创作流程」**
|
||||||
|
- 六个平级菜单项:仪表盘、选题、数据、日历、素材、任务
|
||||||
|
- 没有工作流意识 — 用户需要在多个页面跳转来完成一个创作流程
|
||||||
|
- 缺少「最近工作」「快速开始」等具有上下文感的入口
|
||||||
|
|
||||||
|
3. **AI 能力是「附加功能」不是「内嵌体验」**
|
||||||
|
- AI 助手是右下角浮窗 chatbot,与工作流分离
|
||||||
|
- AI 选题分析在选题页弹窗里,AI 写文章在发布流程里
|
||||||
|
- 没有 Agent 工作区 — 没有一个地方能看到 AI 正在做什么、做了什么、需要什么审批
|
||||||
|
|
||||||
|
4. **权限与功能混杂**
|
||||||
|
- 业务功能(搜索排名、GEO 优化、AI 助手)锁在 admin.html 里
|
||||||
|
- 普通用户使用需要切换到「系统管理」—— 概念上就不对
|
||||||
|
|
||||||
|
5. **缺少「Agent 时代」的核心交互模式**
|
||||||
|
- ❌ 没有 Plan-first(先展示计划,再执行)
|
||||||
|
- ❌ 没有 AI 操作轨迹/审计
|
||||||
|
- ❌ 没有任务编排/Agent 工作区
|
||||||
|
- ❌ 没有智能建议/预测
|
||||||
|
- ✅ 但已经有一个基础的 AI 助手浮窗底座
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 二、2026 AI 产品设计趋势映射
|
||||||
|
|
||||||
|
### 从 7 个趋势看我们应该做什么
|
||||||
|
|
||||||
|
| # | 趋势 | 对我们意味着什么 |
|
||||||
|
|---|------|----------------|
|
||||||
|
| 1 | **UX → AX (Agentic Experience)** | 工作台需要展示 AI 的**行动计划**和**执行轨迹**,而不是单纯的界面操作 |
|
||||||
|
| 2 | **Plan-first 交互** | 选题→创作→发布 应该有一个**流程预览**步骤,AI 先展示「我将做 A→B→C」,用户确认后再执行 |
|
||||||
|
| 3 | **Invisible AI (嵌入式 AI)** | AI 不应该是右下角聊天窗,而应该嵌入到选题列表(智能排序)、文章编辑(实时优化建议)、日历(智能排期)|
|
||||||
|
| 4 | **Delegation with Control** | 用户需要看到一个「代理仪表盘」— AI 正在做什么、已完成什么、需要审批什么 |
|
||||||
|
| 5 | **Workspace over Chat** | 从「跟 AI 对话」到「AI 作为团队成员在共享空间工作」|
|
||||||
|
| 6 | **预览→差异→确认 模式** | 所有 AI 生成/修改的内容,先展示 diff/预览,再确认写入 |
|
||||||
|
| 7 | **审批路径和可逆性** | 每一步操作都有 undo 路径和操作历史 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 三、改造方案设计
|
||||||
|
|
||||||
|
### 3.1 总体信息架构重构
|
||||||
|
|
||||||
|
```
|
||||||
|
当前: 目标:
|
||||||
|
┌──────────┐ ┌──────────────────┐
|
||||||
|
│ 仪表盘 │ ← 系统视角 │ 工作台 (首页) │ ← 用户视角
|
||||||
|
│ 选题 │ │ ├─ 今日待办 │
|
||||||
|
│ 数据 │ │ ├─ 创作流水线 │
|
||||||
|
│ 日历 │ │ ├─ 智能建议 │
|
||||||
|
│ 素材 │ │ └─ 最近工作 │
|
||||||
|
│ 任务 │ ├──────────────────┤
|
||||||
|
│ 系统管理 │ │ 内容工厂 │ ← 创作流程
|
||||||
|
└──────────┘ │ ├─ 选题工作区 │
|
||||||
|
│ ├─ AI 创作工作区 │
|
||||||
|
│ ├─ 发布工作区 │
|
||||||
|
│ └─ 内容日历 │
|
||||||
|
├──────────────────┤
|
||||||
|
│ 数据洞察 │ ← 效果分析
|
||||||
|
│ ├─ 数据看板 │
|
||||||
|
│ ├─ 搜索排名 │
|
||||||
|
│ ├─ GEO 就绪度 │
|
||||||
|
│ └─ 合规报告 │
|
||||||
|
├──────────────────┤
|
||||||
|
│ 资产库 │ ← 资源管理
|
||||||
|
├──────────────────┤
|
||||||
|
│ 系统管理 (admin) │ ← 仅管理员
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3.2 工作台首页(全新设计)
|
||||||
|
|
||||||
|
**目标**:一打开就知道今天要做什么、进度如何、有什么需要关注
|
||||||
|
|
||||||
|
```
|
||||||
|
┌─────────────────────────────────────────────────┐
|
||||||
|
│ ☀️ 早上好,张三 你的团队本周已发布 3 篇内容 │
|
||||||
|
├─────────────────────────────────────────────────┤
|
||||||
|
│ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ │
|
||||||
|
│ │ 待处理│ │ 待审查│ │ 待发布│ │ 本月 │ │ 合规 │ │
|
||||||
|
│ │ 选题 │ │ 文章 │ │ 内容 │ │ 目标 │ │ 健康 │ │
|
||||||
|
│ │ 12 │ │ 5 │ │ 3 │ │ 67% │ │ 94% │ │
|
||||||
|
│ └──────┘ └──────┘ └──────┘ └──────┘ └──────┘ │
|
||||||
|
├─────────────────────────────────────────────────┤
|
||||||
|
│ 📋 今日待办 │
|
||||||
|
│ ┌─────────────────────────────────────────────┐ │
|
||||||
|
│ │ 🔴 审查「远程办公的 5 个陷阱」- 逾期 2 天 │ │
|
||||||
|
│ │ 🟡 审核「AI 写作工具实测」- AI 已完稿 │ │
|
||||||
|
│ │ 🔵 确认本周排期 - 3 篇待定稿 │ │
|
||||||
|
│ └─────────────────────────────────────────────┘ │
|
||||||
|
├─────────────────────────────────────────────────┤
|
||||||
|
│ 🤖 AI Agent 工作区 │
|
||||||
|
│ ┌─────────────────────────────────────────────┐ │
|
||||||
|
│ │ 📡 热点采集 ✅ 完成 (12 条新趋势) │ │
|
||||||
|
│ │ ✍️ 文章创作 ⏳ 进行中 (2/5 篇) │ │
|
||||||
|
│ │ 🔍 合规审查 ⏳ 排队中 (3 篇待审) │ │
|
||||||
|
│ │ 📊 数据同步 ⏰ 06:00 自动运行 │ │
|
||||||
|
│ │ │ │
|
||||||
|
│ │ [查看 Agent 轨迹 →] │ │
|
||||||
|
│ └─────────────────────────────────────────────┘ │
|
||||||
|
├─────────────────────────────────────────────────┤
|
||||||
|
│ 💡 AI 智能建议 │
|
||||||
|
│ ┌─────────────────────────────────────────────┐ │
|
||||||
|
│ │ 💡 「碳中和」关键词本周搜索量 ↑47% │ │
|
||||||
|
│ │ 建议创建一篇相关选题 │ │
|
||||||
|
│ │ [一键创建选题 →] │ │
|
||||||
|
│ │ 💡 你的知乎上周互动率 ↑12% │ │
|
||||||
|
│ │ 建议继续保持数据分析深度 │ │
|
||||||
|
│ └─────────────────────────────────────────────┘ │
|
||||||
|
├─────────────────────────────────────────────────┤
|
||||||
|
│ 📅 近期计划 │
|
||||||
|
│ ┌──────────┬──────────────────┬──────────┐ │
|
||||||
|
│ │ 06/17 二 │ 远程办公工具对比 │ 知乎发布 │ │
|
||||||
|
│ │ 06/18 三 │ AI 写作体验 │ 公众号 │ │
|
||||||
|
│ │ 06/19 四 │ 零浪费生活指南 │ 小红书 │ │
|
||||||
|
│ └──────────┴──────────────────┴──────────┘ │
|
||||||
|
└─────────────────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3.3 内容工厂(创作流水线重构)
|
||||||
|
|
||||||
|
**目标**:按创作流程组织,而不是按数据表组织
|
||||||
|
|
||||||
|
#### 选题工作区
|
||||||
|
- **AI 智能选题板**:热点趋势 + 关键词热度 + 历史数据 → 推荐选题
|
||||||
|
- **选题看板**:Kanban 视图(待处理→分析中→已评分→待创作)
|
||||||
|
- **批量操作**:AI 一键分析 → 自动评分 → 自动排序
|
||||||
|
- **卡片预览**:题目的核心观点、受众痛点、差异化切入点和评分一览
|
||||||
|
|
||||||
|
#### AI 创作工作区 (NEW)
|
||||||
|
- **创作任务面板**:显示所有进行中的 AI 创作任务
|
||||||
|
- **Plan-first 流程**:用户选择选题 → AI 展示大纲 → 用户确认 → AI 逐节写作
|
||||||
|
```
|
||||||
|
步骤 1: 选择选题 + 平台
|
||||||
|
步骤 2: AI 生成大纲 (展示预览)
|
||||||
|
步骤 3: 用户调整大纲 (拖拽排序/编辑)
|
||||||
|
步骤 4: AI 逐节写作 (进度条展示)
|
||||||
|
步骤 5: 合规审查 (展示问题列表)
|
||||||
|
步骤 6: 用户最终编辑
|
||||||
|
```
|
||||||
|
- **Agent 执行轨迹**:每次 AI 操作都有时间线记录
|
||||||
|
- **在线编辑器**:统一的富文本编辑器,支持实时 AI 优化建议
|
||||||
|
|
||||||
|
#### 发布工作区
|
||||||
|
- **发布检查清单**:AI 自动检查合规、字数、配图、格式
|
||||||
|
- **一键多平台发布**:选题→三平台各自适配→预览→确认发布
|
||||||
|
- **发布历史**:时间线视图
|
||||||
|
|
||||||
|
### 3.4 AI Agent 工作区(新概念页面)
|
||||||
|
|
||||||
|
**这是本次改造的核心创新亮点** — 一个展示 AI 作为「团队成员」工作状况的看板。
|
||||||
|
|
||||||
|
```
|
||||||
|
┌─────────────────────────────────────────────────┐
|
||||||
|
│ 🤖 AI Agent 工作区 │
|
||||||
|
├─────────────────────────────────────────────────┤
|
||||||
|
│ 🔴 活跃任务 │
|
||||||
|
│ ┌─────────────────────────────────────────────┐ │
|
||||||
|
│ │ ✍️ 正在创作「远程办公的 5 个陷阱」→ 知乎版 │ │
|
||||||
|
│ │ 进度: ████████░░ 78% │ │
|
||||||
|
│ │ 当前步骤: 撰写第 3 节「团队协作挑战」 │ │
|
||||||
|
│ │ [预览] [暂停] [取消] │ │
|
||||||
|
│ │ │ │
|
||||||
|
│ │ 🔍 正在审查「AI 写作工具实测」- 小红书版 │ │
|
||||||
|
│ │ 进度: ████░░░░░░ 35% │ │
|
||||||
|
│ │ 发现 2 个合规问题 │ │
|
||||||
|
│ │ [查看详情] │ │
|
||||||
|
│ └─────────────────────────────────────────────┘ │
|
||||||
|
├─────────────────────────────────────────────────┤
|
||||||
|
│ ⏳ 待审批 │
|
||||||
|
│ ┌─────────────────────────────────────────────┐ │
|
||||||
|
│ │ 📝 大纲待确认 「零浪费生活指南」 │ │
|
||||||
|
│ │ 已由 AI 自动生成,等待你审核 │ │
|
||||||
|
│ │ [查看大纲] [确认] [修改] │ │
|
||||||
|
│ │ │ │
|
||||||
|
│ │ 📄 文章待审 「碳中和入门」已完稿 │ │
|
||||||
|
│ │ 合规评分 92/100,2 条建议 │ │
|
||||||
|
│ │ [审阅] [通过] [退回修改] │ │
|
||||||
|
│ └─────────────────────────────────────────────┘ │
|
||||||
|
├─────────────────────────────────────────────────┤
|
||||||
|
│ ✅ 今日已完成 │
|
||||||
|
│ ┌─────────────────────────────────────────────┐ │
|
||||||
|
│ │ ✅ 采集热点 12 条 → 生成 3 个新选题 │ │
|
||||||
|
│ │ ✅ 同步数据指标 → 知乎互动率 +12% │ │
|
||||||
|
│ └─────────────────────────────────────────────┘ │
|
||||||
|
└─────────────────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3.5 数据洞察(统一分析中心)
|
||||||
|
|
||||||
|
将当前分散的数据功能整合:
|
||||||
|
|
||||||
|
| Tab | 功能 | 来源 |
|
||||||
|
|-----|------|------|
|
||||||
|
| 概览 | 总指标 + 趋势图 | 现有 metrics.html |
|
||||||
|
| 搜索排名 | 关键词排名追踪 | 现 admin.html 搜索排名 |
|
||||||
|
| GEO 就绪度 | AI 搜索优化评分 | 现 admin.html GEO |
|
||||||
|
| 合规报告 | 发布前合规检查历史 | 现 admin.html + 优化报告 |
|
||||||
|
| 平台对比 | 知乎/公众号/小红书数据 | 现有 metrics.html |
|
||||||
|
|
||||||
|
### 3.6 导航改造
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
// 现有 navItems (硬编码):
|
||||||
|
[{dashboard, topics, metrics, calendar, assets, tasks}]
|
||||||
|
// admin 额外: [admin]
|
||||||
|
|
||||||
|
// 目标 navItems (按角色动态):
|
||||||
|
// 编辑:
|
||||||
|
[{工作台(top), 内容工厂(factory), 数据洞察(insights), 资产库(assets)}]
|
||||||
|
// 管理员:
|
||||||
|
内容工厂 + 数据洞察 + 资产库 + 系统管理(admin)
|
||||||
|
```
|
||||||
|
|
||||||
|
导航从「功能清单」变成「流程引导」:
|
||||||
|
- **工作台** = 首页(今日待办 + Agent 状态 + 智能建议)
|
||||||
|
- **内容工厂** = 创作全流程(选题→创作→发布→日历)
|
||||||
|
- **数据洞察** = 所有数据分析入口
|
||||||
|
- **资产库** = 素材管理
|
||||||
|
|
||||||
|
### 3.7 移动端适配
|
||||||
|
|
||||||
|
当前移动端只是隐藏表格换卡片,改造后:
|
||||||
|
- 底部 Tab 导航栏(代替顶部汉堡菜单)
|
||||||
|
- 工作台首页简化为:今日待办 + Agent 状态 + 快速操作按钮
|
||||||
|
- 内容工厂:简易 Kanban,手势左右切换阶段
|
||||||
|
- AI Agent: 推送通知代替实时面板
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 四、实施优先级
|
||||||
|
|
||||||
|
### P0 — 快速见效 (1-2 天)
|
||||||
|
这些改动小但体验提升大:
|
||||||
|
|
||||||
|
| 改动 | 文件 | 工作量 |
|
||||||
|
|------|------|--------|
|
||||||
|
| 仪表盘改为用户视角(统计卡片 = 待办数量而不是系统模块) | `index.html` | 半天 |
|
||||||
|
| 将 AI 助手从浮窗升级为半屏面板 | `ai-assistant.js` | 半天 |
|
||||||
|
| 导航改为新架构(工作台/内容工厂/数据洞察/资产库) | `uni-nav.js` | 半天 |
|
||||||
|
|
||||||
|
### P1 — 核心重构 (3-5 天)
|
||||||
|
| 改动 | 涉及 | 工作量 |
|
||||||
|
|------|------|--------|
|
||||||
|
| 内容工厂页面(创作流水线) | 新建 `factory.html` | 2 天 |
|
||||||
|
| AI Agent 工作区 | 新建 `agent.html` | 2 天 |
|
||||||
|
| 数据洞察整合(合并 GEO/搜索排名) | 改造 `metrics.html` | 1 天 |
|
||||||
|
|
||||||
|
### P2 — 增强功能 (5-7 天)
|
||||||
|
| 改动 | 工作量 |
|
||||||
|
|------|--------|
|
||||||
|
| Plan-first 创作流程(大纲预览→确认→执行) | 3 天 |
|
||||||
|
| Agent 执行轨迹/审计时间线 | 2 天 |
|
||||||
|
| 智能选题推荐面板 | 2 天 |
|
||||||
|
| 移动端全面适配 | 2 天 |
|
||||||
|
|
||||||
|
### P3 — AI 原生体验 (后续)
|
||||||
|
| 改动 | 工作量 |
|
||||||
|
|------|--------|
|
||||||
|
| 智能排期 / 内容策略建议 | 3 天 |
|
||||||
|
| 自动化工作流编排(拖拽编排 Agent 任务) | 5 天 |
|
||||||
|
| 多 Agent 协作(采集 Agent + 写作 Agent + 审查 Agent) | 5 天 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 五、关键设计原则
|
||||||
|
|
||||||
|
1. **用户视角 > 系统视角**
|
||||||
|
- 展示「我今天要做什么」而不是「系统正在运行什么」
|
||||||
|
- 统计数字 = 行动信号(待办数量)而不是监控指标
|
||||||
|
|
||||||
|
2. **流程 > 功能**
|
||||||
|
- 按创作流程组织页面(选题→创作→发布→分析)
|
||||||
|
- 不在功能之间跳转,在流程中前进
|
||||||
|
|
||||||
|
3. **AI 是团队成员,不是工具**
|
||||||
|
- 展示 AI 的工作计划、进度、产出
|
||||||
|
- 用户是「审核者/决策者」而不是「操作者」
|
||||||
|
- 核心模式:用 AI → AI 执行 Plan → 用户审核/批准
|
||||||
|
|
||||||
|
4. **预览→确认→执行**
|
||||||
|
- AI 生成的所有内容:先预览/展示差异,再确认
|
||||||
|
- 所有操作可逆,有撤销路径
|
||||||
|
|
||||||
|
5. **极简不极简功能**
|
||||||
|
- 减少平级菜单数量和页面复杂
|
||||||
|
- 不减少功能 — 用上下文和流程引导代替功能罗列
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 六、与当前改造项目的关系
|
||||||
|
|
||||||
|
本次工作台改造与正在进行的数据隔离/权限升级是 **互补关系**:
|
||||||
|
|
||||||
|
| 改造线 | 范围 | 依赖 |
|
||||||
|
|--------|------|------|
|
||||||
|
| **数据隔离+权限** (当前进行中) | 后端架构、数据安全 | 无 |
|
||||||
|
| **工作台极简改造** (本方案) | 前端 UI/UX、信息架构 | 权限系统就绪后可基于角色定制页面 |
|
||||||
|
|
||||||
|
建议:
|
||||||
|
1. 先完成数据隔离和权限基础 — 这是安全基石
|
||||||
|
2. 工作台改造可以在权限未完全就绪时就开始前端改造(不依赖后端)
|
||||||
|
3. 导航的 role-based 显示可以利用现有的 `/api/menus/active` 接口
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
#!/usr/bin/env python3
|
|
||||||
"""
|
|
||||||
在 Markdown 的 H2 标题前插入分隔线,第一个除外
|
|
||||||
"""
|
|
||||||
|
|
||||||
MD_PATH = "/root/.openclaw/workspaces/yzr-yxl/projects/yu-zhi-ran/content/published/2026-04-14-上海阳台种菜一年/final-article.md"
|
|
||||||
|
|
||||||
with open(MD_PATH, "r", encoding="utf-8") as f:
|
|
||||||
lines = f.readlines()
|
|
||||||
|
|
||||||
new_lines = []
|
|
||||||
first_h2_seen = False
|
|
||||||
for line in lines:
|
|
||||||
if line.startswith("## "):
|
|
||||||
if first_h2_seen:
|
|
||||||
new_lines.append("---\n\n")
|
|
||||||
else:
|
|
||||||
first_h2_seen = True
|
|
||||||
new_lines.append(line)
|
|
||||||
|
|
||||||
with open(MD_PATH, "w", encoding="utf-8") as f:
|
|
||||||
f.writelines(new_lines)
|
|
||||||
|
|
||||||
print(f"✅ 已处理 {MD_PATH}")
|
|
||||||
@@ -1,39 +0,0 @@
|
|||||||
#!/usr/bin/env python3
|
|
||||||
"""
|
|
||||||
在章节标题(h2)前插入分隔线,第一个除外
|
|
||||||
"""
|
|
||||||
|
|
||||||
import re
|
|
||||||
|
|
||||||
HTML_PATH = "/root/.openclaw/workspaces/yzr-yxl/projects/yu-zhi-ran/content/published/2026-04-14-上海阳台种菜一年/article-optimized.html"
|
|
||||||
|
|
||||||
with open(HTML_PATH, "r", encoding="utf-8") as f:
|
|
||||||
html = f.read()
|
|
||||||
|
|
||||||
# 分隔线HTML
|
|
||||||
separator = '<div class="chapter-separator" style="margin: 40px 0 20px; border-top: 2px dashed #e0e0e0;"></div>\n'
|
|
||||||
|
|
||||||
# 找到所有 h2 标题
|
|
||||||
h2_pattern = re.compile(r'(<h2>.*?</h2>)', re.DOTALL)
|
|
||||||
matches = list(h2_pattern.finditer(html))
|
|
||||||
|
|
||||||
# 跳过第一个 h2,对其余每个插入分隔
|
|
||||||
insertions = []
|
|
||||||
for i, m in enumerate(matches[1:], start=1): # 从第二个开始
|
|
||||||
insert_pos = m.start()
|
|
||||||
insertions.append((insert_pos, separator))
|
|
||||||
|
|
||||||
# 按位置逆序插入,避免影响后续位置
|
|
||||||
insertions.sort(reverse=True, key=lambda x: x[0])
|
|
||||||
html_list = list(html)
|
|
||||||
for pos, sep in insertions:
|
|
||||||
html_list.insert(pos, sep)
|
|
||||||
|
|
||||||
new_html = ''.join(html_list)
|
|
||||||
|
|
||||||
# 写回
|
|
||||||
with open(HTML_PATH, "w", encoding="utf-8") as f:
|
|
||||||
f.write(new_html)
|
|
||||||
|
|
||||||
print(f"✅ 已插入 {len(insertions)} 个章节分隔")
|
|
||||||
print(f"📄 文件: {HTML_PATH}")
|
|
||||||
@@ -7,8 +7,8 @@
|
|||||||
import os
|
import os
|
||||||
from PIL import Image
|
from PIL import Image
|
||||||
|
|
||||||
IMAGES_DIR = "/root/.openclaw/workspaces/yzr-yxl/projects/yu-zhi-ran/content/publishing/images"
|
IMAGES_DIR = "/root/openclaw-workspace/projects/yu-zhi-ran/content/publishing/images"
|
||||||
OUTPUT_DIR = "/root/.openclaw/workspaces/yzr-yxl/projects/yu-zhi-ran/content/publishing/images_compressed"
|
OUTPUT_DIR = "/root/openclaw-workspace/projects/yu-zhi-ran/content/publishing/images_compressed"
|
||||||
|
|
||||||
os.makedirs(OUTPUT_DIR, exist_ok=True)
|
os.makedirs(OUTPUT_DIR, exist_ok=True)
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,338 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"title": "GitLab 全远程公司手册",
|
||||||
|
"field": "未来工作方式",
|
||||||
|
"summary": "GitLab 是全球最大的全远程公司,拥有1500+员工分布在65+国家,其文档和协作模式被广泛研究。",
|
||||||
|
"key_metrics": "员工满意度 4.5/5,离职率低于行业平均50%",
|
||||||
|
"date": "2024",
|
||||||
|
"source": "GitLab 官方博客",
|
||||||
|
"source_url": "https://about.gitlab.com/remote-work/",
|
||||||
|
"credibility_rating": "⭐⭐⭐⭐⭐",
|
||||||
|
"china_applicability": "⭐⭐⭐⭐"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 2,
|
||||||
|
"title": "Zapier 异步沟通指南",
|
||||||
|
"field": "未来工作方式",
|
||||||
|
"summary": "Zapier 通过自动化工作流减少会议,实现全球团队异步协作。",
|
||||||
|
"key_metrics": "员工每周会议时间 <2h,效率提升30%",
|
||||||
|
"date": "2023",
|
||||||
|
"source": "Zapier 博客",
|
||||||
|
"source_url": "https://zapier.com/blog/asynchronous-communication/",
|
||||||
|
"credibility_rating": "⭐⭐⭐⭐⭐",
|
||||||
|
"china_applicability": "⭐⭐⭐"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 3,
|
||||||
|
"title": "爱沙尼亚游民签证",
|
||||||
|
"field": "未来工作方式",
|
||||||
|
"summary": "爱沙尼亚推出数字游民签证,允许远程工作者合法居住1年。",
|
||||||
|
"key_metrics": "申请量年增200%,主要来自IT从业者",
|
||||||
|
"date": "2024",
|
||||||
|
"source": "Estonian Government",
|
||||||
|
"source_url": "https://e-resident.gov.ee/",
|
||||||
|
"credibility_rating": "⭐⭐⭐⭐⭐",
|
||||||
|
"china_applicability": "⭐⭐⭐"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 4,
|
||||||
|
"title": "巴厘岛游民社区",
|
||||||
|
"field": "未来工作方式",
|
||||||
|
"summary": "巴厘岛成为亚洲游民热点,提供 coworking 空间和社区活动。",
|
||||||
|
"key_metrics": "每年吸引10万+游民,消费力强",
|
||||||
|
"date": "2024",
|
||||||
|
"source": "Bali Tourism Board",
|
||||||
|
"source_url": "https://www.balitourismboard.org/",
|
||||||
|
"credibility_rating": "⭐⭐⭐⭐",
|
||||||
|
"china_applicability": "⭐⭐⭐⭐"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 5,
|
||||||
|
"title": "Fiverr AI服务市场",
|
||||||
|
"field": "未来工作方式",
|
||||||
|
"summary": "Fiverr 上 AI 代写、数据分析等服务泛滥,形成灰色产业链。",
|
||||||
|
"key_metrics": "AI服务订单季度增长150%",
|
||||||
|
"date": "2025",
|
||||||
|
"source": "Fiverr 数据报告",
|
||||||
|
"source_url": "https://www.fiverr.com/",
|
||||||
|
"credibility_rating": "⭐⭐⭐",
|
||||||
|
"china_applicability": "⭐⭐⭐⭐"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 6,
|
||||||
|
"title": "Indie Hackers 社区",
|
||||||
|
"field": "未来工作方式",
|
||||||
|
"summary": "Indie Hackers 是独立开发者分享产品成长和盈利的地方。",
|
||||||
|
"key_metrics": "超过5000个真实项目案例,月均收入 $2k+",
|
||||||
|
"date": "2024",
|
||||||
|
"source": "Indie Hackers",
|
||||||
|
"source_url": "https://www.indiehackers.com/",
|
||||||
|
"credibility_rating": "⭐⭐⭐⭐⭐",
|
||||||
|
"china_applicability": "⭐⭐⭐"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 7,
|
||||||
|
"title": "One Person Business",
|
||||||
|
"field": "未来工作方式",
|
||||||
|
"summary": "一人企业思维强调极简运营,低风险创业模式。",
|
||||||
|
"key_metrics": "初期投入 <$1000,20%实现月入$3k",
|
||||||
|
"date": "2023",
|
||||||
|
"source": "Pieter Levels 博客",
|
||||||
|
"source_url": "https://levels.io/",
|
||||||
|
"credibility_rating": "⭐⭐⭐⭐",
|
||||||
|
"china_applicability": "⭐⭐⭐⭐"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 9,
|
||||||
|
"title": "纽约社区花园政策",
|
||||||
|
"field": "可持续生活系统",
|
||||||
|
"summary": "纽约市通过土地使用权政策支持社区花园建设。",
|
||||||
|
"key_metrics": "覆盖500+社区,参与者超10万",
|
||||||
|
"date": "2023",
|
||||||
|
"source": "NYC Parks",
|
||||||
|
"source_url": "https://www.nycgovparks.org/",
|
||||||
|
"credibility_rating": "⭐⭐⭐⭐",
|
||||||
|
"china_applicability": "⭐⭐⭐"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 10,
|
||||||
|
"title": "瑞典零浪费城市",
|
||||||
|
"field": "可持续生活系统",
|
||||||
|
"summary": "瑞典城市通过垃圾分类和堆肥计划,实现垃圾填埋量减少90%。",
|
||||||
|
"key_metrics": "垃圾回收率 99%,焚烧发电供全市1/3用电",
|
||||||
|
"date": "2024",
|
||||||
|
"source": "Swedish Waste Management",
|
||||||
|
"source_url": "https://www.avfallsverige.se/",
|
||||||
|
"credibility_rating": "⭐⭐⭐⭐⭐",
|
||||||
|
"china_applicability": "⭐⭐"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 11,
|
||||||
|
"title": "日本 Mottainai 文化",
|
||||||
|
"field": "可持续生活系统",
|
||||||
|
"summary": "Mottainai(勿浪费)精神贯穿生活,提倡物尽其用。",
|
||||||
|
"key_metrics": "家庭垃圾量比欧美低40%",
|
||||||
|
"date": "2024",
|
||||||
|
"source": "日本环境省",
|
||||||
|
"source_url": "https://www.env.go.jp/",
|
||||||
|
"credibility_rating": "⭐⭐⭐⭐",
|
||||||
|
"china_applicability": "⭐⭐⭐"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 12,
|
||||||
|
"title": "荷兰自行车城市",
|
||||||
|
"field": "可持续生活系统",
|
||||||
|
"summary": "荷兰城市拥有完善的自行车道网络,自行车通勤占比 >40%。",
|
||||||
|
"key_metrics": "人均自行车拥有量 1.3辆,交通事故率低",
|
||||||
|
"date": "2023",
|
||||||
|
"source": "Dutch Cycling Embassy",
|
||||||
|
"source_url": "https://cyclingembassy.org/",
|
||||||
|
"credibility_rating": "⭐⭐⭐⭐⭐",
|
||||||
|
"china_applicability": "⭐⭐"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 13,
|
||||||
|
"title": "挪威电动车普及",
|
||||||
|
"field": "可持续生活系统",
|
||||||
|
"summary": "挪威通过免税和充电设施补贴,使电动车占新车销量80%以上。",
|
||||||
|
"key_metrics": "2024年电动车渗透率 82%",
|
||||||
|
"date": "2024",
|
||||||
|
"source": "Norwegian EV Association",
|
||||||
|
"source_url": "https://elbil.no/",
|
||||||
|
"credibility_rating": "⭐⭐⭐⭐⭐",
|
||||||
|
"china_applicability": "⭐⭐⭐"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 14,
|
||||||
|
"title": "法国二手强制法",
|
||||||
|
"field": "可持续生活系统",
|
||||||
|
"summary": "法国要求零售商提供二手商品区域,促进循环消费。",
|
||||||
|
"key_metrics": "二手商品销售额年增25%",
|
||||||
|
"date": "2023",
|
||||||
|
"source": "French Government",
|
||||||
|
"source_url": "https://www.gouvernement.fr/",
|
||||||
|
"credibility_rating": "⭐⭐⭐⭐",
|
||||||
|
"china_applicability": "⭐⭐"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 15,
|
||||||
|
"title": "Patagonia 维修服务",
|
||||||
|
"field": "可持续生活系统",
|
||||||
|
"summary": "Patagonia 提供终身维修服务,延长产品寿命。",
|
||||||
|
"key_metrics": "维修量年增30%,顾客忠诚度极高",
|
||||||
|
"date": "2024",
|
||||||
|
"source": "Patagonia Worn Wear",
|
||||||
|
"source_url": "https://www.patagonia.com/worn-wear/",
|
||||||
|
"credibility_rating": "⭐⭐⭐⭐⭐",
|
||||||
|
"china_applicability": "⭐⭐⭐"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 16,
|
||||||
|
"title": "Obsidian + RAG 个人知识库",
|
||||||
|
"field": "个人知识工厂",
|
||||||
|
"summary": "Obsidian 结合检索增强生成,实现私有知识问答。",
|
||||||
|
"key_metrics": "无需云端,本地向量存储,响应 <1s",
|
||||||
|
"date": "2024",
|
||||||
|
"source": "Obsidian Hub",
|
||||||
|
"source_url": "https://obsidian.md/",
|
||||||
|
"credibility_rating": "⭐⭐⭐⭐",
|
||||||
|
"china_applicability": "⭐⭐⭐⭐"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 17,
|
||||||
|
"title": "PARA 系统在 Notion",
|
||||||
|
"field": "个人知识工厂",
|
||||||
|
"summary": "Tiago Forte 的 PARA 方法将信息分为项目、领域、资源、存档四类。",
|
||||||
|
"key_metrics": "用户报告节省每周 3 小时信息整理时间",
|
||||||
|
"date": "2023",
|
||||||
|
"source": "Fortelabs.co",
|
||||||
|
"source_url": "https://fortelabs.co/",
|
||||||
|
"credibility_rating": "⭐⭐⭐⭐",
|
||||||
|
"china_applicability": "⭐⭐⭐⭐"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 18,
|
||||||
|
"title": "费曼技巧经典",
|
||||||
|
"field": "个人知识工厂",
|
||||||
|
"summary": "通过向他人讲解来检验自己是否真正理解。",
|
||||||
|
"key_metrics": "学习效率提升 40%",
|
||||||
|
"date": "2024",
|
||||||
|
"source": "Feynman Technique",
|
||||||
|
"source_url": "https://www.feynmantechnique.org/",
|
||||||
|
"credibility_rating": "⭐⭐⭐⭐⭐",
|
||||||
|
"china_applicability": "⭐⭐⭐⭐"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 19,
|
||||||
|
"title": "EU AI Act",
|
||||||
|
"field": "科技人文交叉",
|
||||||
|
"summary": "欧盟人工智能法案,对 AI 系统进行风险分级监管。",
|
||||||
|
"key_metrics": "违反最高罚款达全球年营业额6%",
|
||||||
|
"date": "2024",
|
||||||
|
"source": "European Commission",
|
||||||
|
"source_url": "https://digital-strategy.ec.europa.eu/en/policies/european-approach-artificial-intelligence",
|
||||||
|
"credibility_rating": "⭐⭐⭐⭐⭐",
|
||||||
|
"china_applicability": "⭐⭐"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20,
|
||||||
|
"title": "硅谷高管禅修热",
|
||||||
|
"field": "科技人文交叉",
|
||||||
|
"summary": "许多硅谷领袖将正念冥想作为日常,提高专注力。",
|
||||||
|
"key_metrics": " Fortune 500 中 35% 提供冥想课程",
|
||||||
|
"date": "2023",
|
||||||
|
"source": "Harvard Business Review",
|
||||||
|
"source_url": "https://hbr.org/",
|
||||||
|
"credibility_rating": "⭐⭐⭐⭐",
|
||||||
|
"china_applicability": "⭐⭐"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 21,
|
||||||
|
"title": "Tauri + Rust 构建跨平台桌面应用性能对比",
|
||||||
|
"field": "技术工具集",
|
||||||
|
"summary": "对比 Tauri 2.0 与 Electron 在资源占用、启动速度、包体积等维度的性能数据,展示 Rust 后端优势。",
|
||||||
|
"key_metrics": "内存占用降低 60%, 安装包体积减少 70%, 首次启动时间 <1.5s",
|
||||||
|
"date": "2026",
|
||||||
|
"source": "Tauri 官方博客",
|
||||||
|
"source_url": "https://tauri.app/blog/",
|
||||||
|
"credibility_rating": "⭐⭐⭐⭐⭐",
|
||||||
|
"china_applicability": "⭐⭐⭐⭐⭐"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 22,
|
||||||
|
"title": "独立开发者如何用 FastAPI + Vue 3 快速构建 SaaS",
|
||||||
|
"field": "技术工具集",
|
||||||
|
"summary": "一位独立开发者分享使用 FastAPI 后端 + Vue 3 前端在 2 周内完成多平台内容管理系统的实战经验。",
|
||||||
|
"key_metrics": "开发周期 14 天, 代码量 8K 行, 部署成本 < $10/月",
|
||||||
|
"date": "2025",
|
||||||
|
"source": "Dev.to 社区",
|
||||||
|
"source_url": "https://dev.to/",
|
||||||
|
"credibility_rating": "⭐⭐⭐⭐",
|
||||||
|
"china_applicability": "⭐⭐⭐⭐"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 23,
|
||||||
|
"title": "Notion + Python 自动化内容工作流案例",
|
||||||
|
"field": "个人知识工厂",
|
||||||
|
"summary": "如何用 Python 脚本自动同步 Notion 数据库到博客平台,实现从选题到发布的完整自动化。",
|
||||||
|
"key_metrics": "每周节省 8 小时, 错误率降为 0, 发布延迟 <5 分钟",
|
||||||
|
"date": "2025",
|
||||||
|
"source": "Notion 模板社区",
|
||||||
|
"source_url": "https://www.notion.so/templates",
|
||||||
|
"credibility_rating": "⭐⭐⭐⭐",
|
||||||
|
"china_applicability": "⭐⭐⭐⭐"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 24,
|
||||||
|
"title": "GitHub Copilot 辅助 Rust 开发效率调研",
|
||||||
|
"field": "技术工具集",
|
||||||
|
"summary": "在真实 Rust 项目中启用 Copilot 后,代码编写速度提升 35%,且代码质量保持不变。",
|
||||||
|
"key_metrics": "编码速度 +35%, 代码评审通过率 92%, 学习曲线平缓",
|
||||||
|
"date": "2026",
|
||||||
|
"source": "GitHub 官方报告",
|
||||||
|
"source_url": "https://github.blog/",
|
||||||
|
"credibility_rating": "⭐⭐⭐⭐⭐",
|
||||||
|
"china_applicability": "⭐⭐⭐⭐"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 25,
|
||||||
|
"title": "零浪费生活方式:一年减少 80% 塑料使用",
|
||||||
|
"field": "可持续生活系统",
|
||||||
|
"summary": "记录一家三口一年内通过改变购物习惯、DIY 日用品、选择可持续品牌,实现塑料消耗大幅减少的过程。",
|
||||||
|
"key_metrics": "塑料垃圾减少 80%, 开销降低 15%, 生活质量评分 +20%",
|
||||||
|
"date": "2025",
|
||||||
|
"source": "B站 UP 主 \"零浪费生活家\"",
|
||||||
|
"source_url": "https://www.bilibili.com/",
|
||||||
|
"credibility_rating": "⭐⭐⭐",
|
||||||
|
"china_applicability": "⭐⭐⭐⭐⭐"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 27,
|
||||||
|
"title": "数字游民签证地图:2026 最新政策对比",
|
||||||
|
"field": "未来工作方式",
|
||||||
|
"summary": "收集 35 个国家/地区的数字游民签证政策,包括申请条件、停留时间、税收优惠等关键信息。",
|
||||||
|
"key_metrics": "覆盖 35 国, 政策更新频率 季度, 中国护照适用 18 国",
|
||||||
|
"date": "2026",
|
||||||
|
"source": "Nomad List",
|
||||||
|
"source_url": "https://nomadlist.com/",
|
||||||
|
"credibility_rating": "⭐⭐⭐⭐⭐",
|
||||||
|
"china_applicability": "⭐⭐⭐⭐"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 28,
|
||||||
|
"title": "AI 副业变现:用 StepFun API 打造的 5 个微型产品",
|
||||||
|
"field": "未来工作方式",
|
||||||
|
"summary": "开发者分享如何利用 StepFun 的大模型 API 快速开发并上线 5 个小型付费 AI 工具,实现月入过万。",
|
||||||
|
"key_metrics": "产品上线时间 1-3 天/个, 月收入 ¥12,000+, 用户满意度 4.8/5",
|
||||||
|
"date": "2026",
|
||||||
|
"source": "StepFun 开发者故事",
|
||||||
|
"source_url": "https://www.stepfun.com/",
|
||||||
|
"credibility_rating": "⭐⭐⭐⭐⭐",
|
||||||
|
"china_applicability": "⭐⭐⭐⭐⭐"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 29,
|
||||||
|
"title": "知识管理新范式:Obsidian + LlamaIndex 实现个人知识问答",
|
||||||
|
"field": "个人知识工厂",
|
||||||
|
"summary": "将 Obsidian 笔记库通过 LlamaIndex 索引,打造基于个人知识的智能问答系统,准确率超 90%。",
|
||||||
|
"key_metrics": "笔记量 5K+, 问答准确率 92%, 本地部署无持续成本",
|
||||||
|
"date": "2025",
|
||||||
|
"source": "Obsidian 论坛",
|
||||||
|
"source_url": "https://forum.obsidian.md/",
|
||||||
|
"credibility_rating": "⭐⭐⭐⭐",
|
||||||
|
"china_applicability": "⭐⭐⭐⭐"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 30,
|
||||||
|
"title": "异步协作革命:用 Lark + Python 实现分布式团队项目管理",
|
||||||
|
"field": "未来工作方式",
|
||||||
|
"summary": "跨 5 个时区的 15 人团队,通过 Lark 机器人 + Python 脚本实现自动化任务分配、进度同步、日报生成。",
|
||||||
|
"key_metrics": "会议减少 60%, 项目延期率下降 70%, 员工满意度 +25%",
|
||||||
|
"date": "2025",
|
||||||
|
"source": "字节跳动企业服务案例",
|
||||||
|
"source_url": "https://www.larkoffice.com/",
|
||||||
|
"credibility_rating": "⭐⭐⭐⭐⭐",
|
||||||
|
"china_applicability": "⭐⭐⭐⭐⭐"
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
# 文章大纲:AI时代的技能组合:什么技能值得投入10年?
|
|
||||||
|
|
||||||
## 一、引言(约200字)
|
|
||||||
- 开场场景/痛点引入
|
|
||||||
- 提出核心问题:AI时代的技能组合:什么技能值得投入10年?
|
|
||||||
- 点明文章价值
|
|
||||||
|
|
||||||
## 二、核心观点(约300字)
|
|
||||||
基于WEF未来技能报告,划分4个技能维度(AI强化型、AI无法替代、复合型、过时型),帮中国职场人识别护城河技能
|
|
||||||
|
|
||||||
## 三、受众痛点分析(约300字)
|
|
||||||
学什么都不放心,怕投入时间后AI又取代
|
|
||||||
|
|
||||||
## 四、全球/行业趋势与案例(约500字)
|
|
||||||
- 引用研究笔记中的 0 个案例,精选 2-3 个详述
|
|
||||||
- 数据支撑:提取研究笔记中的关键数据
|
|
||||||
- 趋势分析
|
|
||||||
|
|
||||||
## 五、本土落地建议(约400字)
|
|
||||||
- 结合未来工作方式领域特点
|
|
||||||
- 提供可执行的步骤
|
|
||||||
- 注意事项
|
|
||||||
|
|
||||||
## 六、独特视角:将全球宏观报告转化为个人技能地图,提供可视化工具(约300字)
|
|
||||||
|
|
||||||
## 七、行动指南(MVP,约200字)
|
|
||||||
1. 理解现状
|
|
||||||
2. 小范围试验
|
|
||||||
3. 评估效果
|
|
||||||
4. 形成习惯
|
|
||||||
|
|
||||||
## 八、总结与鼓励(约200字)
|
|
||||||
- 回顾要点
|
|
||||||
- 呼吁行动
|
|
||||||
|
|
||||||
## 九、参考文献
|
|
||||||
- 从研究笔记中提取来源链接
|
|
||||||
|
|
||||||
---
|
|
||||||
*大纲生成时间:2026-04-17*
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
# 文章大纲:远程工作2026中国指南:从'不可能'到'可行'的路径图
|
|
||||||
|
|
||||||
## 一、引言(约200字)
|
|
||||||
- 开场场景/痛点引入
|
|
||||||
- 提出核心问题:远程工作2026中国指南:从'不可能'到'可行'的路径图
|
|
||||||
- 点明文章价值
|
|
||||||
|
|
||||||
## 二、核心观点(约300字)
|
|
||||||
通过法律实操(合同、社保、个税)和心理建设(孤独应对),在中国环境下实现远程工作
|
|
||||||
|
|
||||||
## 三、受众痛点分析(约300字)
|
|
||||||
想远程但不知如何合法操作,担心被边缘化
|
|
||||||
|
|
||||||
## 四、全球/行业趋势与案例(约500字)
|
|
||||||
- 引用研究笔记中的 0 个案例,精选 2-3 个详述
|
|
||||||
- 数据支撑:提取研究笔记中的关键数据
|
|
||||||
- 趋势分析
|
|
||||||
|
|
||||||
## 五、本土落地建议(约400字)
|
|
||||||
- 结合未来工作方式领域特点
|
|
||||||
- 提供可执行的步骤
|
|
||||||
- 注意事项
|
|
||||||
|
|
||||||
## 六、独特视角:对比GitLab/Zapier海外实践,本土化落地策略(约300字)
|
|
||||||
|
|
||||||
## 七、行动指南(MVP,约200字)
|
|
||||||
1. 理解现状
|
|
||||||
2. 小范围试验
|
|
||||||
3. 评估效果
|
|
||||||
4. 形成习惯
|
|
||||||
|
|
||||||
## 八、总结与鼓励(约200字)
|
|
||||||
- 回顾要点
|
|
||||||
- 呼吁行动
|
|
||||||
|
|
||||||
## 九、参考文献
|
|
||||||
- 从研究笔记中提取来源链接
|
|
||||||
|
|
||||||
---
|
|
||||||
*大纲生成时间:2026-04-18*
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
# 文章大纲:第二大脑2.0:用DeepSeek+本地向量库建立私有知识系统
|
|
||||||
|
|
||||||
## 一、引言(约200字)
|
|
||||||
- 开场场景/痛点引入
|
|
||||||
- 提出核心问题:第二大脑2.0:用DeepSeek+本地向量库建立私有知识系统
|
|
||||||
- 点明文章价值
|
|
||||||
|
|
||||||
## 二、核心观点(约300字)
|
|
||||||
对比Obsidian+RAG海外实践,针对国内云服务担忧,提供数据主权、隐私保护、无缝检索、AI问答的本地化方案
|
|
||||||
|
|
||||||
## 三、受众痛点分析(约300字)
|
|
||||||
想系统化知识但担心云存储安全,怕复杂
|
|
||||||
|
|
||||||
## 四、全球/行业趋势与案例(约500字)
|
|
||||||
- 引用研究笔记中的 0 个案例,精选 2-3 个详述
|
|
||||||
- 数据支撑:提取研究笔记中的关键数据
|
|
||||||
- 趋势分析
|
|
||||||
|
|
||||||
## 五、本土落地建议(约400字)
|
|
||||||
- 结合个人知识工厂领域特点
|
|
||||||
- 提供可执行的步骤
|
|
||||||
- 注意事项
|
|
||||||
|
|
||||||
## 六、独特视角:强调数据主权,从API调用到本地部署的渐进路线(约300字)
|
|
||||||
|
|
||||||
## 七、行动指南(MVP,约200字)
|
|
||||||
1. 理解现状
|
|
||||||
2. 小范围试验
|
|
||||||
3. 评估效果
|
|
||||||
4. 形成习惯
|
|
||||||
|
|
||||||
## 八、总结与鼓励(约200字)
|
|
||||||
- 回顾要点
|
|
||||||
- 呼吁行动
|
|
||||||
|
|
||||||
## 九、参考文献
|
|
||||||
- 从研究笔记中提取来源链接
|
|
||||||
|
|
||||||
---
|
|
||||||
*大纲生成时间:2026-04-18*
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
# 文章大纲:AI副业入门:用DeepSeek实现第一笔收入的100天
|
|
||||||
|
|
||||||
## 一、引言(约200字)
|
|
||||||
- 开场场景/痛点引入
|
|
||||||
- 提出核心问题:AI副业入门:用DeepSeek实现第一笔收入的100天
|
|
||||||
- 点明文章价值
|
|
||||||
|
|
||||||
## 二、核心观点(约300字)
|
|
||||||
从代写文案/数据分析起步,通过Fiverr国内外平台对比,制定定价策略和违规红线规避
|
|
||||||
|
|
||||||
## 三、受众痛点分析(约300字)
|
|
||||||
想用AI赚钱但不知从何开始,怕踩坑
|
|
||||||
|
|
||||||
## 四、全球/行业趋势与案例(约500字)
|
|
||||||
- 引用研究笔记中的 0 个案例,精选 2-3 个详述
|
|
||||||
- 数据支撑:提取研究笔记中的关键数据
|
|
||||||
- 趋势分析
|
|
||||||
|
|
||||||
## 五、本土落地建议(约400字)
|
|
||||||
- 结合未来工作方式领域特点
|
|
||||||
- 提供可执行的步骤
|
|
||||||
- 注意事项
|
|
||||||
|
|
||||||
## 六、独特视角:对比Fiverr海外繁荣 vs 国内空白,提供本土化接单路径(约300字)
|
|
||||||
|
|
||||||
## 七、行动指南(MVP,约200字)
|
|
||||||
1. 理解现状
|
|
||||||
2. 小范围试验
|
|
||||||
3. 评估效果
|
|
||||||
4. 形成习惯
|
|
||||||
|
|
||||||
## 八、总结与鼓励(约200字)
|
|
||||||
- 回顾要点
|
|
||||||
- 呼吁行动
|
|
||||||
|
|
||||||
## 九、参考文献
|
|
||||||
- 从研究笔记中提取来源链接
|
|
||||||
|
|
||||||
---
|
|
||||||
*大纲生成时间:2026-04-19*
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
# 研究笔记:AI时代的技能组合:什么技能值得投入10年?
|
|
||||||
|
|
||||||
## 选题信息
|
|
||||||
- **ID**: A05
|
|
||||||
- **领域**: 未来工作方式
|
|
||||||
- **核心观点**: 基于WEF未来技能报告,划分4个技能维度(AI强化型、AI无法替代、复合型、过时型),帮中国职场人识别护城河技能
|
|
||||||
- **受众痛点**: 学什么都不放心,怕投入时间后AI又取代
|
|
||||||
- **独特视角**: 将全球宏观报告转化为个人技能地图,提供可视化工具
|
|
||||||
|
|
||||||
## 相关案例(0个)
|
|
||||||
|
|
||||||
## 研究发现摘要
|
|
||||||
- 待补充:从案例中提炼的趋势和洞察
|
|
||||||
- 待补充:数据支撑
|
|
||||||
|
|
||||||
## 待深入研究的问题
|
|
||||||
- [ ] 需要更多本土数据
|
|
||||||
- [ ] 需要验证某些结论的适用性
|
|
||||||
|
|
||||||
*生成时间:2026-04-17*
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
# 研究笔记:远程工作2026中国指南:从'不可能'到'可行'的路径图
|
|
||||||
|
|
||||||
## 选题信息
|
|
||||||
- **ID**: A01
|
|
||||||
- **领域**: 未来工作方式
|
|
||||||
- **核心观点**: 通过法律实操(合同、社保、个税)和心理建设(孤独应对),在中国环境下实现远程工作
|
|
||||||
- **受众痛点**: 想远程但不知如何合法操作,担心被边缘化
|
|
||||||
- **独特视角**: 对比GitLab/Zapier海外实践,本土化落地策略
|
|
||||||
|
|
||||||
## 相关案例(0个)
|
|
||||||
|
|
||||||
## 研究发现摘要
|
|
||||||
- 待补充:从案例中提炼的趋势和洞察
|
|
||||||
- 待补充:数据支撑
|
|
||||||
|
|
||||||
## 待深入研究的问题
|
|
||||||
- [ ] 需要更多本土数据
|
|
||||||
- [ ] 需要验证某些结论的适用性
|
|
||||||
|
|
||||||
*生成时间:2026-04-18*
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
# 研究笔记:第二大脑2.0:用DeepSeek+本地向量库建立私有知识系统
|
|
||||||
|
|
||||||
## 选题信息
|
|
||||||
- **ID**: C01
|
|
||||||
- **领域**: 个人知识工厂
|
|
||||||
- **核心观点**: 对比Obsidian+RAG海外实践,针对国内云服务担忧,提供数据主权、隐私保护、无缝检索、AI问答的本地化方案
|
|
||||||
- **受众痛点**: 想系统化知识但担心云存储安全,怕复杂
|
|
||||||
- **独特视角**: 强调数据主权,从API调用到本地部署的渐进路线
|
|
||||||
|
|
||||||
## 相关案例(0个)
|
|
||||||
|
|
||||||
## 研究发现摘要
|
|
||||||
- 待补充:从案例中提炼的趋势和洞察
|
|
||||||
- 待补充:数据支撑
|
|
||||||
|
|
||||||
## 待深入研究的问题
|
|
||||||
- [ ] 需要更多本土数据
|
|
||||||
- [ ] 需要验证某些结论的适用性
|
|
||||||
|
|
||||||
*生成时间:2026-04-18*
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
# 研究笔记:AI副业入门:用DeepSeek实现第一笔收入的100天
|
|
||||||
|
|
||||||
## 选题信息
|
|
||||||
- **ID**: A02
|
|
||||||
- **领域**: 未来工作方式
|
|
||||||
- **核心观点**: 从代写文案/数据分析起步,通过Fiverr国内外平台对比,制定定价策略和违规红线规避
|
|
||||||
- **受众痛点**: 想用AI赚钱但不知从何开始,怕踩坑
|
|
||||||
- **独特视角**: 对比Fiverr海外繁荣 vs 国内空白,提供本土化接单路径
|
|
||||||
|
|
||||||
## 相关案例(0个)
|
|
||||||
|
|
||||||
## 研究发现摘要
|
|
||||||
- 待补充:从案例中提炼的趋势和洞察
|
|
||||||
- 待补充:数据支撑
|
|
||||||
|
|
||||||
## 待深入研究的问题
|
|
||||||
- [ ] 需要更多本土数据
|
|
||||||
- [ ] 需要验证某些结论的适用性
|
|
||||||
|
|
||||||
*生成时间:2026-04-19*
|
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
## 标题(爆款钩子)
|
||||||
|
73%的人因AI替身失去信任,你还在用它省那12%的时间?
|
||||||
|
|
||||||
|
## 口播文案
|
||||||
|
你以为AI换脸能帮你省时间?[停顿]别傻了,每一次用AI形象开会,都是在职场里透支信任。
|
||||||
|
|
||||||
|
2025年卡内基梅隆大学的研究发现,[停顿]73%的商务谈判者,一旦知道对方用的是AI替身,信任度直接暴跌。你省下的那12%会议时长,得用几十次真诚沟通才能补回来。[停顿]
|
||||||
|
|
||||||
|
为啥?人眼天生能识别“非自然”的脸,哪怕只是一丝微笑延迟,你的大脑杏仁核就会报警——“这人不靠谱!”[停顿]哈佛的脑成像实验更狠:跟AI形象合作时,你大脑里的共情区域活跃度下降30%。你根本不在意对方有没有在听,对方也感受不到你的真诚。
|
||||||
|
|
||||||
|
所以那些跨国大公司为什么明令禁止?[停顿]因为信任一旦崩了,客户流失率六个季度能涨18%。你省的时间,抵不过一个客户的流失。[停顿]记住:高信任场景——客户会、谈判、一对一辅导,绝对不要用AI替身。
|
||||||
|
|
||||||
|
你觉得有道理吗?评论聊聊,你的公司禁用AI换脸了吗?
|
||||||
|
|
||||||
|
## 分镜建议
|
||||||
|
| 镜头 | 画面 | 字幕 | 时长 |
|
||||||
|
|------|------|------|------|
|
||||||
|
| 镜头1 | 博主正对镜头,背后是电脑屏幕显示视频会议中的AI换脸头像 | “AI换脸省时间?你省的是信任” | 0-8秒 |
|
||||||
|
| 镜头2 | 切换至数据图表:73%的数字放大闪烁,旁边有“信任度暴跌”字样 | “73%谈判者因AI替身失去信任” | 8-20秒 |
|
||||||
|
| 镜头3 | 博主做“恐怖谷”表情演示:先微笑、然后眼神呆滞、再突然回神 | “大脑报警:不自然的微笑=不靠谱” | 20-35秒 |
|
||||||
|
| 镜头4 | 动画展示大脑区域变暗(共情区下降30%),旁边出现客户流失率18% | “共情关闭,客户跑路” | 35-50秒 |
|
||||||
|
| 镜头5 | 博主回到正对镜头,手势强调“三场景禁用” | “客户会、谈判、一对一,禁用!” | 50-65秒 |
|
||||||
|
|
||||||
|
## 适配平台
|
||||||
|
- **抖音**:开头3秒用“73%”数字怼脸,加热门BGM(悬疑类),字幕用大字跳闪。
|
||||||
|
- **视频号**:节奏稍缓,加“你认同吗”互动投票卡片,结尾引导关注。
|
||||||
|
- **小红书视频**:封面用“AI替身毁信任”金句,文案加emoji分段,评论区置顶“自查清单”。
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
## 标题(爆款钩子)
|
||||||
|
别让AI换脸毁了客户!3条保命铁律立刻救你
|
||||||
|
|
||||||
|
## 口播文案
|
||||||
|
「[停顿]」你知道吗?你那个完美的AI替身,正在让你和客户之间的信任疯狂透支。今天三条干货,立刻就能用。
|
||||||
|
|
||||||
|
第一条:所有对外会议、重要谈判、一对一辅导,千万别用AI形象。[停顿]加州大学研究证明,哪怕眼珠动慢一丁点,对方大脑立刻拉警报——73%的商务谈判者会直接判定你不诚实。信任崩塌了,修复一次需要5到8次真诚互动。
|
||||||
|
|
||||||
|
第二条:内部非正式头脑风暴,用AI形象可以提升流畅度,[停顿]但必须提前告知团队,划清边界。盖洛普数据显示,明确边界的公司员工满意度高23%,客户推荐值高12%。
|
||||||
|
|
||||||
|
第三条:如果已经用了AI形象,立刻补救。真诚道歉,换成真人视频,主动暴露缺点。[停顿]别拿“效率”骗自己,信任是账面上的隐形资产。
|
||||||
|
|
||||||
|
记住:信任建立要日积月累,崩塌只在一念之间。觉得有用?点赞收藏,别再踩坑了。
|
||||||
|
|
||||||
|
## 分镜建议
|
||||||
|
|
||||||
|
| 镜头 | 画面 | 字幕 | 时长 |
|
||||||
|
|------|------|------|------|
|
||||||
|
| 1 | 博主正面近景,严肃表情,手指镜头 | 别让AI换脸毁了客户!3条保命铁律 | 8秒 |
|
||||||
|
| 2 | 博主拿起手机或电脑屏幕,展示一个AI换脸会议场景图标 | 73%的人直接判定不诚实 | 一次失信需要5-8次修复 | 12秒 |
|
||||||
|
| 3 | 博主切换到侧身,用手势列举要点,镜头缓慢推进 | 第一条:对外会议禁用 | 第二条:内部告知划边界 | 15秒 |
|
||||||
|
| 4 | 博主站起,背景出现“信任度收益”图表动画 | 第三条:用了立刻补救 | 信任是隐形资产 | 12秒 |
|
||||||
|
| 5 | 博主回到正面,微笑,手指向上做“收藏”手势 | 点赞收藏,别再踩坑 | 8秒 |
|
||||||
|
|
||||||
|
## 适配平台
|
||||||
|
- **抖音**:前3秒加一个“你中招了吗”的悬念语气,用快切放大“73%”等数据,字幕用黄色大字突出。
|
||||||
|
- **视频号**:开场加一句“我做商务8年,今天说个血泪教训”,增加真实感和信任感;节奏略慢,留出互动引导时间。
|
||||||
|
- **小红书视频**:首帧用“🔥AI换脸避坑指南”彩色标题,口播再简练10%,强调“收藏备用”;视频下方配图文摘要文字。
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
## 标题(爆款钩子)
|
||||||
|
我用AI替身开视频会,结果被客户当场识破,丢了200万的单
|
||||||
|
|
||||||
|
## 口播文案
|
||||||
|
上个月我哥们儿跟我喝酒,差点哭了[停顿]他说他为了赶一个跨国客户的视频会,用了最高级的AI换脸软件——皮肤零瑕疵、微笑完美,连声音都调了音。结果你猜怎么着?会议开到一半,对方突然问:“你本人是不是没在镜头前?”[停顿]原来客户那边有人工智能识别系统,发现他瞳孔反光不对,微表情卡顿。当场翻脸,200万的单子黄了[停顿]你以为AI替身能省时间?错了[停顿]大脑天生对“假脸”拉警报,瞳孔放大、心跳加速,你根本没法建立信任。老板们醒醒,效率再高也换不来真心合作。你身边有公司因为AI形象吃过亏吗?评论区聊聊。
|
||||||
|
|
||||||
|
## 分镜建议
|
||||||
|
| 画面 | 字幕 | 时长 |
|
||||||
|
|------|------|------|
|
||||||
|
| 中景:博主坐在桌前,表情无奈摇头 | 哥们儿用AI替身开会 单子黄了 | 0-5s |
|
||||||
|
| 特写:博主手指敲桌面,语气加重 | 客户突然问:你本人不在? | 5-15s |
|
||||||
|
| 切到手机/电脑屏幕动画:AI脸+显微镜下瞳孔异常 | 瞳孔反光不对 微表情卡顿 | 15-25s |
|
||||||
|
| 博主直视镜头,双手摊开 | 大脑对假脸拉警报! | 25-35s |
|
||||||
|
| 博主低头写笔记状,抬头问 | 你身边有公司吃过亏吗?评论区聊聊 | 35-45s |
|
||||||
|
|
||||||
|
## 适配平台
|
||||||
|
- **抖音**:前3秒加“你敢信?”等悬念字幕,节奏再快一点,每秒换画面。
|
||||||
|
- **视频号**:保持自然聊天的语气,结尾加一句“关注我,了解更多职场避坑技巧”。
|
||||||
|
- **小红书视频**:封面用大字“AI换脸翻车实录”,口播语速放慢,每句之间留呼吸感。
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
## 标题(爆款钩子)
|
||||||
|
别再挤景区了!4.2 亿人都在假装过端午,你还要继续吗?
|
||||||
|
|
||||||
|
## 口播文案
|
||||||
|
承认吧,你端午那趟旅行,根本不算过节,只是去当了个“人肉背景板”![停顿]
|
||||||
|
|
||||||
|
2026 年端午,4.2 亿人涌进景区。你拍的是密密麻麻的后脑勺,回家翻相册,除了证明“我去过”,对屈原、龙舟的理解,还停留在小学课本那两句话。[停顿]
|
||||||
|
|
||||||
|
调查显示,超六成人都在“走马观花”。问题真不在节日没内涵,而是你太懒了![停顿]你只会被动跟着人流挪动,却忘了主动探索。
|
||||||
|
|
||||||
|
换个思路试试?让 AI 做你的私人文化向导。[停顿]输入“屈原流放路线”或“龙舟制作工艺”,它立马生成专属路径。不再是大锅饭式的打卡,而是穿越千年的深度对话。
|
||||||
|
|
||||||
|
现在,四成游客愿意为这种“独家体验”多付 30% 的钱。[停顿]因为大家终于醒了:真正的文化,从来不在拥挤的人堆里,而在你主动迈出的那一步。
|
||||||
|
|
||||||
|
今年假期,你是继续去挤照片,还是用 AI 定制一场真正的文化穿越?评论区告诉我!
|
||||||
|
|
||||||
|
## 分镜建议
|
||||||
|
| 画面 | 字幕 | 时长 |
|
||||||
|
| :--- | :--- | :--- |
|
||||||
|
| **近景**:博主对着镜头一脸严肃,背景合成极度拥挤的景区人头攒动画面,甚至有点压抑感。 | 4.2 亿人<br>全是背景板? | 5s |
|
||||||
|
| **中景**:博主无奈地翻看手机相册,屏幕特写显示全是模糊的人头照,随后画面切换成枯燥的课本插图。 | 走马观花<br>等于没去 | 8s |
|
||||||
|
| **特写**:博主眼神突然亮起,手持手机展示 AI 界面,手指滑动生成一条炫酷的 3D 地图路线。 | 拒绝被动<br>AI 定制路径 | 10s |
|
||||||
|
| **混剪**:快速闪过几个高质量画面:亲手触摸龙舟木纹、在屈原故里听沉浸式故事,对比之前的拥挤画面。 | 深度体验<br>值得多付 30% | 10s |
|
||||||
|
| **近景**:博主回到镜头前,身体前倾,发出真诚邀请,屏幕下方弹出评论框引导。 | 你是哪种?<br>评论区见 | 7s |
|
||||||
|
|
||||||
|
## 适配平台
|
||||||
|
- **抖音**:前 3 秒拥挤画面要配合嘈杂的环境音效和急促的 BGM,制造强烈的焦虑感,随后音乐瞬间转为科技感轻音乐。
|
||||||
|
- **视频号**:文案中“小学课本”、“文化穿越”等情感共鸣点要加重语气,结尾引导转发给“只会打卡的朋友”。
|
||||||
|
- **小红书**:封面图要用"AI 定制路线 vs 传统人挤人”的强烈对比拼图,标题加上"🆘避雷”和"✨小众玩法”emoji。
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
## 标题(爆款钩子)
|
||||||
|
端午出游4.2亿人,AI教你3招避开人挤人
|
||||||
|
|
||||||
|
## 口播文案
|
||||||
|
你是不是也这样?[停顿]端午挤进景区,举着手机拍的全是人头,回家翻相册就剩“我去过”三个字。[停顿]超过六成游客都说体验太同质化,走马观花。[停顿]问题出在哪?不是节日没文化,是你太被动。[停顿]今天直接给你3条干货,让AI帮你定制专属文化路线,彻底告别“人从众”。[停顿]
|
||||||
|
|
||||||
|
第一条:别搜攻略,先问自己。[停顿]打开手机,输入“屈原流放路线”“端午习俗演变”或者“现代龙舟怎么造”,AI就能秒出主题路线。[停顿]第二条:别只看景点,要看故事。[停顿]AI会沿途穿插历史讲解、互动体验,让你从“拍照”变成“沉浸”。[停顿]第三条:多花30%的钱,换100%的深度体验。[停顿]最新数据说,超过四成游客愿意为个性化深度体验多付费,AI让这钱花得值。[停顿]
|
||||||
|
|
||||||
|
赶紧试试,评论区告诉我你用过AI定制旅行吗?[停顿]点赞收藏,下次出游再也不当背景板!
|
||||||
|
|
||||||
|
## 分镜建议
|
||||||
|
| 镜头 | 画面 | 字幕 | 时长 |
|
||||||
|
|------|------|------|------|
|
||||||
|
| 1 | 近景:博主对着镜头,手机展示假期人山人海的视频片段 | 端午出游4.2亿人 | 8秒 |
|
||||||
|
| 2 | 中景:博主手势比划,手机屏幕出现“屈原流放路线”输入框 | 6成游客:体验同质化 | 10秒 |
|
||||||
|
| 3 | 特写:手机屏幕快速滑动,显示AI生成的路线图、历史故事卡片、互动体验图标 | AI定制路线:输入→秒出 | 10秒 |
|
||||||
|
| 4 | 中景:博主拿着手机,表情兴奋,画面上方弹出数据图“40%游客愿多付30%” | 多花30%,换100%深度 | 8秒 |
|
||||||
|
| 5 | 近景:博主笑着对镜头,手指向屏幕“评论区见” | 评论区聊聊你的AI旅行 | 4秒 |
|
||||||
|
|
||||||
|
## 适配平台
|
||||||
|
- **抖音**:前3秒上“人潮拥挤”的实拍画面+快节奏卡点音乐,字幕用动态大字强调“4.2亿”。
|
||||||
|
- **视频号**:语速放慢10%,开头加一句“端午刚过,你踩雷了吗?”引发共鸣,结尾引导点赞转发。
|
||||||
|
- **小红书视频**:封面用“AI定制旅行”效果图,文案侧重“小众玩法”“拒绝人挤人”,画面多展示手机操作界面。
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
## 标题(爆款钩子)
|
||||||
|
端午挤到怀疑人生?她用AI玩出了新高度
|
||||||
|
|
||||||
|
## 口播文案
|
||||||
|
上周末端午,我闺蜜兴冲冲去古镇打卡,[停顿]结果你猜怎么着?朋友圈发的全是人头,连屈原像都没挤到跟前。回来她跟我说:感觉自己就是个移动的背景板,除了累,啥也没记住。[停顿]
|
||||||
|
|
||||||
|
其实,问题不是节日没意思,是我们太“被动”了。跟着人流走,走到哪拍到哪,回家一翻相册——哦,我去过。[停顿]
|
||||||
|
|
||||||
|
但如果反过来呢?你打开手机,让AI根据你的兴趣规划一条专属路线:喜欢历史,就走屈原流放路线;喜欢手艺,就去学包粽子、看龙舟怎么做。[停顿]我闺蜜后来试了一下,她说那天她才知道,五彩绳原来有五种含义,不是随便戴的。
|
||||||
|
|
||||||
|
数据也说了,超四成人愿意多花30%的钱,就为了这种“私人定制”的体验。[停顿]所以别再当“人挤人”里的沙粒了,主动一点,让文化真正走进你心里。[停顿]
|
||||||
|
|
||||||
|
你觉得呢?评论区聊聊你遇到过最坑的旅行经历。
|
||||||
|
|
||||||
|
## 分镜建议
|
||||||
|
| 镜头 | 画面 | 字幕 | 时长 |
|
||||||
|
|------|------|------|------|
|
||||||
|
| 1 | 中景:博主对着镜头,表情略带无奈,手里拿手机翻照片 | 端午古镇,全是人头 | 8秒 |
|
||||||
|
| 2 | 插入画面:景区人山人海的短视频素材(或模拟),然后切回博主 | 六成人觉得走马观花 | 10秒 |
|
||||||
|
| 3 | 特写:博主手指在手机屏幕上滑动,屏幕出现AI定制界面(可后期特效) | 输入“屈原流放路线” | 12秒 |
|
||||||
|
| 4 | 博主回忆状,微笑 | 五彩绳原来有五种含义 | 10秒 |
|
||||||
|
| 5 | 博主正对镜头,语气坚定,手势强调 | 别再做背景板了 | 8秒 |
|
||||||
|
|
||||||
|
(总时长约48秒,可适当调整节奏)
|
||||||
|
|
||||||
|
## 适配平台
|
||||||
|
- **抖音**:前3秒加一个“人多到哭”的音效或变脸特效,快速抓注意力。
|
||||||
|
- **视频号**:开头增加一个朋友圈实拍片段(人头),强化真实感,结尾引导点赞转发。
|
||||||
|
- **小红书视频**:画面加柔和滤镜,字幕用可爱字体,突出“闺蜜故事”的亲切感,文末加话题标签。
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
## 标题(爆款钩子)
|
||||||
|
🔥你的Logo设计单,正被邻居用旧电脑10分钟抢走!
|
||||||
|
|
||||||
|
## 口播文案
|
||||||
|
你刚接的那个Logo单,[停顿]可能正被隔壁邻居用一台三年前的笔记本,十分钟搞定。[停顿]别不信——2026年,Stability AI的端侧模型,能让普通笔记本15秒出商业级矢量图,成本只有云端的1/50。[停顿]翻译更惨,谷歌的离线实时口译,准确率已经92%,你还在按字收钱?[停顿]客户发现:本地跑AI不仅免费,隐私还更安全。[停顿]那咱们就等死吗?[停顿]不,自救关键是往“非标”钻——复杂人际博弈、现场应急决策、情感陪伴,这些端侧AI学不会。[停顿]立刻停止卖标准时间,转做深度咨询和定制方案,把AI变成你的杠杆。[停顿]听懂了的,评论区扣“转型”。
|
||||||
|
|
||||||
|
## 分镜建议
|
||||||
|
| 镜头 | 画面 | 字幕 | 时长 |
|
||||||
|
|------|------|------|------|
|
||||||
|
| 1 | 特写:手机屏幕显示一个Logo设计稿,然后一只手把设计稿推开 | 你的Logo单,邻居10分钟搞定 | 8秒 |
|
||||||
|
| 2 | 中景:博主坐在电脑前,表情严肃,手比划“15秒” | Stability AI端侧模型:15秒出图,成本1/50 | 10秒 |
|
||||||
|
| 3 | 切换:手机画面展示谷歌翻译界面,然后快速切换成离线模式 | 离线实时口译,准确率92%,按字收费模式已死 | 12秒 |
|
||||||
|
| 4 | 近景:博主身体前倾,眼神坚定,手指点向镜头 | 自救:深耕“非标”领域,复杂博弈、情感陪伴 | 10秒 |
|
||||||
|
| 5 | 特写:博主手拿话筒,背景虚化,字幕滚动 | 停止卖时间,做深度咨询,AI是你的杠杆 | 8秒 |
|
||||||
|
|
||||||
|
## 适配平台
|
||||||
|
- **抖音**:前3秒用冲突画面+快节奏剪辑,字幕用动态大字,激发完播。
|
||||||
|
- **视频号**:口播语速稍慢,增加“认同吗?评论区聊聊”等互动引导,强化信任感。
|
||||||
|
- **小红书视频**:封面用“2026自由职业生存指南”文字,口播中加入“干货警告”,结尾加话题标签。
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
## 标题(爆款钩子)
|
||||||
|
端侧AI爆发!3条自救指南,不想被淘汰的立刻看
|
||||||
|
|
||||||
|
## 口播文案
|
||||||
|
你还在做这3种活儿吗?赶紧停![停顿]
|
||||||
|
|
||||||
|
第一种,设计外包。你熬三天做的Logo,邻居用三年前的笔记本,15秒出图,成本只有你报价的1/50。客户发现本地跑AI免费还安全,你的报价单下季度就废了。[停顿]
|
||||||
|
|
||||||
|
第二种,翻译文案。谷歌的离线口译延迟不到0.2秒,医疗法律准确率92%,客户凭什么还按字付你钱?记住,AI不是抢你饭碗,是让“文字搬运工”技能归零。[停顿]
|
||||||
|
|
||||||
|
第三种,卖成品稿件。35%的中小企业已经用本地营销代理自动生成海报文案了,你要是不转型成训练这些智能体的“教练”,就会被踢出局。[停顿]
|
||||||
|
|
||||||
|
自救就一条路:深耕端侧AI搞不定的“非标”领域。比如复杂人际博弈、现场应急决策、高度情感陪伴。别卖标准时间,卖信任和深度咨询,把AI当杠杆,处理人类才能定义的模糊地带。[停顿]
|
||||||
|
|
||||||
|
现在,立刻,检查你的业务有没有被这三条砸中?评论区聊聊。
|
||||||
|
|
||||||
|
## 分镜建议
|
||||||
|
- 镜头1:特写,博主对着镜头,表情严肃,手指向屏幕。字幕:“3种职业正在被AI干掉”。时长:8秒
|
||||||
|
- 镜头2:切画面,展示AI快速生成Logo的对比(左边是你熬夜加班,右边是电脑15秒出图)。字幕:“设计外包→15秒出图”。时长:15秒
|
||||||
|
- 镜头3:博主口播,背景闪现谷歌翻译界面和字幕。字幕:“翻译文案→92%准确率”。时长:15秒
|
||||||
|
- 镜头4:博主口播,屏幕显示Gartner报告数据。字幕:“35%企业用AI代理→你该做教练”。时长:15秒
|
||||||
|
- 镜头5:博主面向镜头,语气坚定,手指点向观众。字幕:“自救:深耕非标领域,卖信任”。时长:10秒
|
||||||
|
|
||||||
|
## 适配平台
|
||||||
|
- **抖音**:开头加“别划走,3条干货救你饭碗”,语速更快,每句留1秒停顿。
|
||||||
|
- **视频号**:开头加“这条视频可能会被限流,但建议你看到最后”,语气更稳重,停顿稍长。
|
||||||
|
- **小红书视频**:开头加“姐妹们,别再踩坑了”,结尾加“关注我,只分享能用的干货”,画面更干净,字幕加emoji。
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
## 标题(爆款钩子)
|
||||||
|
你接的Logo单,邻居用旧电脑10分钟搞定|端侧AI来了
|
||||||
|
|
||||||
|
## 口播文案
|
||||||
|
上个月,一个朋友接了个Logo单子,报价3000块。[停顿]结果呢?他隔壁邻居,一个从没学过设计的大学生,用一台三年前的旧笔记本,装了最新的AI工具,十分钟出了三套方案。客户直接取消订单。[停顿]你可能会觉得夸张,但这就是2026年正在发生的事——端侧AI已经能本地跑商业级矢量图,15秒出图,成本是云端的五十分之一。[停顿]翻译、文案、设计这些自由职业者还在按字收费?客户已经发现:AI翻译带情感色彩和方言,能达到初级译员水平。[停顿]所以,如果你还在卖“时间”和“技能”,你的报价单下个季度就废了。[停顿]真正的出路不是跟AI比快,而是做AI做不了的事——比如复杂人际博弈、现场决策、情感陪伴。你得从“工具人”变成“教练”,帮客户调教本地AI,而不是被AI替代。[停顿]
|
||||||
|
|
||||||
|
## 分镜建议
|
||||||
|
- 镜头1(近景):博主对着镜头,表情略带无奈,手里拿着一张画着Logo的纸。字幕:“上周接了个Logo单子,报价3000。” 时长:8秒
|
||||||
|
- 镜头2(中景):切到博主旁边放一台旧笔记本电脑,屏幕快速闪过AI生成Logo的过程。字幕:“邻居大学生,十分钟出三套方案。” 时长:10秒
|
||||||
|
- 镜头3(近景):博主手指屏幕,语气加重。字幕:“15秒出图,成本是云端的1/50。” 时长:6秒
|
||||||
|
- 镜头4(全景):博主站起来,伸出双手做“停止”动作。字幕:“还在按字收费?客户已经不需要你了。” 时长:8秒
|
||||||
|
- 镜头5(特写):博主指向自己胸口,眼神坚定。字幕:“做AI做不了的,当教练。” 时长:8秒
|
||||||
|
|
||||||
|
## 适配平台
|
||||||
|
- **抖音**:前3秒用“你接的Logo单子”开头,快速钩住注意力;节奏紧凑,加上热门BGM。
|
||||||
|
- **视频号**:偏重情绪共鸣,可以放大“邻居大学生”的故事冲突,结尾多停留两秒引导点赞。
|
||||||
|
- **小红书视频**:封面用“3000块的单子被AI抢了”醒目大字,文案更干货,附上“你中招了吗”互动话题。
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
## 标题(爆款钩子)
|
||||||
|
做了8年SEO,流量却暴跌68%?你的文章正在给AI打工!
|
||||||
|
|
||||||
|
## 口播文案
|
||||||
|
老张上周在群里崩溃了,写了8年SEO,花三天打磨一篇爆款,结果流量掉了68%。[停顿] 他不信邪,搜自己标题——排在第一条的,不是他的文章,而是AI的摘要。[停顿] 你的完美SEO文章,正在变成AI搜索的免费数据源。这不是危言耸听。[停顿] 去年Google推出AI概览,直接在你内容里抽答案,用户根本不用点进来。你堆的关键词、铺的内链,全成了AI的养料。[停顿] 怎么办?别再写那种标准答案式的文章了。要写AI不会写的东西:你的个人故事、独家数据、争议观点。[停顿] 当你的内容不可替代时,AI只能把你当参考来源,而不是直接吃掉。[停顿] 记住,未来的SEO不是讨好算法,是成为AI不敢忽视的权威。评论“转型”,我教你具体做法。
|
||||||
|
|
||||||
|
## 分镜建议
|
||||||
|
- **镜头1**(0-8秒):博主面对镜头,表情严肃,背景是电脑显示SEO数据图表。字幕:“你的文章正在给AI打工”。时长8秒。
|
||||||
|
- **镜头2**(8-18秒):切换手机屏幕画面,展示一个AI搜索结果,红色圆圈圈出摘要框。字幕:“用户根本不用点进去”。时长10秒。
|
||||||
|
- **镜头3**(18-30秒):博主手比划,旁边放一块白板,画“旧SEO”和“新SEO”两个对比概念。字幕:“别再堆关键词”。时长12秒。
|
||||||
|
- **镜头4**(30-45秒):博主微笑自信,手指向自己胸前。字幕:“成为AI不敢忽视的权威”。时长15秒。
|
||||||
|
- **镜头5**(45-60秒):博主指向屏幕外,做出引导互动的动作。字幕:“评论‘转型’”。时长15秒。
|
||||||
|
|
||||||
|
## 适配平台
|
||||||
|
- **抖音**:前三秒必须情绪拉满,建议把“流量暴跌68%”做成动态大字炸屏,配合紧张BGM。
|
||||||
|
- **视频号**:增加1-2秒行业数据引用画面(如Google AI概览覆盖率),强化专业感和可信度。
|
||||||
|
- **小红书视频**:开头用“刷到这条视频你赚到了”代替直接冲突,结尾引导收藏并@好友,提高互动率。
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
## 标题(爆款钩子)
|
||||||
|
SEO已死?3招让AI主动抓你的文章,流量翻10倍!
|
||||||
|
|
||||||
|
## 口播文案
|
||||||
|
做SEO的老铁注意了![停顿]你花三天写的“完美文章”,标题塞满关键词,内链铺了12个,结果流量掉68%?原因很简单——AI搜索时代,你的文章被当免费数据喂给机器了![停顿]今天直接给三条能立刻上手的干货,让你成为AI的“必引内容”。
|
||||||
|
|
||||||
|
第一,别堆关键词了,改成结构化排版。用清晰的小标题、短段落、加粗重点、加列表。AI喜欢直接抓取“答案盒子”,你写成散文它理都不理。[停顿]
|
||||||
|
|
||||||
|
第二,疯狂建外链!让高权重网站引用你,AI搜索的排序算法超级看重反向链接。找个行业大号互推,或者去知乎、quora回答问题时顺手贴链接。[停顿]
|
||||||
|
|
||||||
|
第三,给你的文章加Schema标记。百度、谷歌都有免费工具,一键生成结构化数据标签,告诉AI这篇是“教程”还是“评测”。[停顿]
|
||||||
|
|
||||||
|
记住:以后你不是写给人看,是写给AI看的。AI先读,再推荐给你用户。三条立马去执行,下个月搜索广场就是你首页![停顿]
|
||||||
|
|
||||||
|
## 分镜建议
|
||||||
|
- 画面:博主对着镜头,表情焦虑,手里拿手机显示流量曲线暴跌图
|
||||||
|
字幕:SEO老张的惨痛教训
|
||||||
|
时长:5秒
|
||||||
|
|
||||||
|
- 画面:快速切换三个关键词卡片:结构化排版、外链引用、Schema标记,每个卡片停留1秒
|
||||||
|
字幕:3招立刻上手
|
||||||
|
时长:5秒
|
||||||
|
|
||||||
|
- 画面:博主手指屏幕,展示一个清晰的结构化文章示例(有小标题、列表)
|
||||||
|
字幕:AI喜欢“盒子内容”
|
||||||
|
时长:8秒
|
||||||
|
|
||||||
|
- 画面:博主做出打电话动作,画外显示“联系大V互推”字样
|
||||||
|
字幕:外链=流量密码
|
||||||
|
时长:6秒
|
||||||
|
|
||||||
|
- 画面:博主演示在搜索引擎工具页面点选Schema类型
|
||||||
|
字幕:一行代码让AI秒懂你
|
||||||
|
时长:6秒
|
||||||
|
|
||||||
|
- 画面:博主自信微笑,手指向镜头,文字弹出“现在就去改你的文章!”
|
||||||
|
字幕:行动才有流量
|
||||||
|
时长:5秒
|
||||||
|
|
||||||
|
## 适配平台
|
||||||
|
- 抖音:开头加个“你中招了吗”的钩子,字幕用更大字号,前3秒必须出现文题。
|
||||||
|
- 视频号:节奏稍慢,每招后加1秒表情特写,适合中年创业者观看习惯。
|
||||||
|
- 小红书视频:封面做对比图“旧SEO vs 新AI搜流”,正文精简到3个要点图,口播语速放慢。
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
## 标题(爆款钩子)
|
||||||
|
AI换脸开会?省了10分钟,丢了18%客户!
|
||||||
|
|
||||||
|
## 口播文案
|
||||||
|
你有没有碰到过这种场景?[停顿]打开视频会议,对面坐着个皮肤零瑕疵、眼神却发僵的“AI替身”。是不是瞬间觉得怪怪的?[停顿]别怪你太敏感,加州大学研究发现,见到这种“完美脸”,你的大脑会本能拉响警报——瞳孔放大,皮肤电反应飙升,这是进化留给你的保命本能。[停顿]
|
||||||
|
|
||||||
|
但很多人还在吹AI换脸多高效:会议时间缩短12%![停顿]可你知道另一面吗?同一家公司,员工抱怨“会议变陌生”“判断不了对方有没有在听”的比例,暴涨了41%。[停顿]更致命的是,一家欧洲金融科技公司用了AI形象后,客户流失率18个月内飙升18%——客户觉得你在“省成本”,而不是“在乎关系”。[停顿]
|
||||||
|
|
||||||
|
所谓效率,不过是在透支信任。[停顿]信任崩塌,比效率低更致命。你公司敢用AI换脸开会吗?评论区聊聊。[停顿]
|
||||||
|
|
||||||
|
## 分镜建议
|
||||||
|
| 镜头 | 画面 | 字幕 | 时长 |
|
||||||
|
|------|------|------|------|
|
||||||
|
| 1 | 主播正面特写,表情略带疑惑 | “AI换脸开会?省了10分钟,丢了18%客户!” | 5秒 |
|
||||||
|
| 2 | 画面插入数据对比图:左边“会议缩短12%”,右边“信任下降41%” | 会议缩短12% vs 信任下降41% | 8秒 |
|
||||||
|
| 3 | 主播用手比划大脑,背景出现杏仁核示意图 | 大脑拉响警报:瞳孔放大,皮肤电升高 | 10秒 |
|
||||||
|
| 4 | 切换场景:金融公司logo+客户流失曲线图 | 客户流失率18个月上升18% | 8秒 |
|
||||||
|
| 5 | 主播回到正面,直视镜头,摊手提问 | 你公司敢用AI换脸吗?评论区聊聊 | 7秒 |
|
||||||
|
|
||||||
|
## 适配平台
|
||||||
|
- **抖音**:前3秒用“你肯定遇到过”情绪钩子,节奏加快,字幕多用大号关键词。
|
||||||
|
- **视频号**:适当增加数据引用(如“盖洛普2026年报告”),语气更沉稳,强化信任与效率的理性对比。
|
||||||
|
- **小红书视频**:开头用“姐妹们,这事太离谱了”拉近距离,结尾引导收藏和“@你的老板来看”。
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
## 标题(爆款钩子)
|
||||||
|
AI换脸被职场封杀?这3个真相让你立刻关掉它
|
||||||
|
|
||||||
|
## 口播文案
|
||||||
|
你知道吗?用AI换脸开视频会议,73%的客户会直接降低对你的信任。[停顿]卡内基梅隆大学的研究实锤了——就算看起来再逼真,大脑杏仁核也会本能拉响警报,觉得“这人不对劲”。[停顿]
|
||||||
|
|
||||||
|
而且啊,你以为节省了时间?哈佛实验发现,和AI形象互动时,共情脑区活跃度整整下降30%。[停顿]员工匿名抱怨增加了41%——说“感觉会议变得陌生”。效率背后,是看不见的信任透支。[停顿]
|
||||||
|
|
||||||
|
更扎心的是,“完美形象”反而让人不舒服。斯坦福的研究说,AI永远模仿不了微表情的那些细微抖动,你的社交脑会陷入矛盾:看起来是人,直觉告诉你不是,持续消耗你的注意力。[停顿]
|
||||||
|
|
||||||
|
所以干货来了,三条立刻能用的:
|
||||||
|
第一条,对外客户会议、重要谈判、一对一辅导——绝对禁用AI脸。[停顿]
|
||||||
|
第二条,内部非正式头脑风暴可以用,但必须提前告知对方。[停顿]
|
||||||
|
第三条,每次想用AI形象前,先问自己三个问题:客户介意吗?团队能真正连接吗?如果因此失去一个客户,你接受吗?[停顿]
|
||||||
|
|
||||||
|
信任积累要几年,崩塌只需要一张AI脸。点赞收藏,别让效率毁了你的职场关系。
|
||||||
|
|
||||||
|
## 分镜建议
|
||||||
|
- 画面:博主面对镜头,表情严肃,手指指向屏幕上的“73%”数据字幕
|
||||||
|
- 字幕:73%的客户信任直线下降
|
||||||
|
- 时长:8秒
|
||||||
|
|
||||||
|
- 画面:快速切换大脑示意图/脑区动画,然后切回博主说话
|
||||||
|
- 字幕:共情脑区活跃度下降30%|员工抱怨+41%
|
||||||
|
- 时长:8秒
|
||||||
|
|
||||||
|
- 画面:展示一张完美AI人脸图片,然后手指划掉,出现“抖动的微表情”文字
|
||||||
|
- 字幕:完美 ≠ 真实|社交脑陷入矛盾
|
||||||
|
- 时长:8秒
|
||||||
|
|
||||||
|
- 画面:博主用手势比划“三”,然后逐条列出文字,配合手写动画
|
||||||
|
- 字幕:三条实操:①对外禁用②内部告知③三问自检
|
||||||
|
- 时长:12秒
|
||||||
|
|
||||||
|
- 画面:博主微笑总结,手势做“点赞”动作,结尾留钩子
|
||||||
|
- 字幕:信任积累几年,崩塌只需一张AI脸
|
||||||
|
- 时长:7秒
|
||||||
|
|
||||||
|
## 适配平台
|
||||||
|
- **抖音**:开头放5秒恐怖谷动画吸引眼球,全程快剪+高能字幕,结尾引导点赞收藏。
|
||||||
|
- **视频号**:节奏稍慢0.5倍,中间加入情绪停顿(比如叹息),适合熟人传播信任感。
|
||||||
|
- **小红书视频**:标题改成“打工人避坑!AI换脸会议避雷指南”,重点突出“亲测”“血泪教训”人设,评论区引导提问。
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
## 标题(爆款钩子)
|
||||||
|
就因为客户用了AI换脸,我200万的单子一夜黄了
|
||||||
|
|
||||||
|
## 口播文案
|
||||||
|
你知道吗?我有个做销售的朋友,去年年初谈一个200万的大单,[停顿]视频会议里客户全程用了一张AI换脸,皮肤完美、笑容标准,但眼神就是不太对劲。[停顿]他说自己全程浑身不舒服,最后报价都报得没底气。结果呢?客户反馈说“感觉你们公司不真诚”,直接选了别家。[停顿]
|
||||||
|
这不是个例啊。加州大学研究早就证明了,人看到“完美但空洞”的AI脸时,大脑会本能拉响警报——瞳孔放大、皮肤电反应升高,这是几百万年进化保留下来的警惕机制。[停顿]卡内基梅隆大学更狠:73%的商务谈判参与者,只要发现对方用了AI形象,信任直接打骨折。[停顿]
|
||||||
|
所以现在很多大公司开始明文封杀AI换脸,不是抵制效率,是害怕信任崩塌。[停顿]想想看,一场会议省了12%的时间,却要多花几十次真诚沟通才能挽回信用,这笔账你算得过来吗?[停顿]
|
||||||
|
你觉得AI形象该在职场用吗?评论区聊聊你的真实感受。[停顿]点赞收藏,别让更多人踩这个坑。
|
||||||
|
|
||||||
|
## 分镜建议
|
||||||
|
| 镜头 | 画面(景别/动作/场景) | 字幕(关键词) | 时长 |
|
||||||
|
|------|------------------------|----------------|------|
|
||||||
|
| 1 | 近景,主播在办公室对着镜头,表情略带懊恼 | “我朋友丢了200万的大单” | 8秒 |
|
||||||
|
| 2 | 插入视频会议画面,客户AI形象在微笑,眼神空洞,画面加恐怖谷特效 | “客户用的是AI换脸” | 6秒 |
|
||||||
|
| 3 | 切回主播近景,手指敲桌子加强语气 | “73%的人信任度下降” | 6秒 |
|
||||||
|
| 4 | 画面出现两个天平:左边是“省时间12%”,右边是“5-8次真诚沟通”,天平向右倾斜 | “效率 vs 信任,你选哪个?” | 6秒 |
|
||||||
|
| 5 | 主播直视镜头,做出询问表情,最后挥手 | “评论区等你故事” | 4秒 |
|
||||||
|
|
||||||
|
## 适配平台
|
||||||
|
- **抖音**:开头前3秒用“200万”+“黄了”制造强冲击,字幕加粗放大,节奏紧凑,可加#AI换脸职场封杀 话题标签。
|
||||||
|
- **视频号**:保留更多数据细节(73%、12%),结尾可引导关注账号获取“信任修复清单”,适合知识传播。
|
||||||
|
- **小红书视频**:封面用“❌AI换脸毁了我的大单”黄色大字,文案增加情绪词“气死了”“凭什么”,评论区引导互动共鸣。
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
## 标题(爆款钩子)
|
||||||
|
AI 预警快 15 分钟?别高兴太早,误报可能更要命!
|
||||||
|
|
||||||
|
## 口播文案
|
||||||
|
大家都觉得 AI 预警龙卷风是救星,能抢回救命 15 分钟?[停顿]
|
||||||
|
大错特错!
|
||||||
|
如果告诉你,这多出来的 15 分钟,可能是把你骗进死胡同的“催命符”,你信吗?[停顿]
|
||||||
|
传统雷达确实慢,要等风成型才报警。但 AI 太“敏感”了!
|
||||||
|
去年美国中部那场大乌龙还记得吗?[停顿]
|
||||||
|
AI 把一团普通云彩看成了超级龙卷风,几百万人半夜狂奔逃生,结果呢?连个风影都没见着。
|
||||||
|
这就是最可怕的“狼来了”效应。[停顿]
|
||||||
|
一旦误报多了,下次真龙卷风来了,你还会跑吗?
|
||||||
|
你会想:“又是 AI 抽风吧?”然后继续睡觉。
|
||||||
|
技术是快了,但信任没了,这才是最大的安全隐患。[停顿]
|
||||||
|
所以,别盲目吹捧 AI 万能。
|
||||||
|
在生死面前,快,不一定就是好。
|
||||||
|
你觉得,是宁可错杀一千,还是宁可慢那十几分钟?[停顿]
|
||||||
|
评论区告诉我你的选择。
|
||||||
|
|
||||||
|
## 分镜建议
|
||||||
|
|
||||||
|
| 镜头 | 画面 | 字幕 | 时长 |
|
||||||
|
| :--- | :--- | :--- | :--- |
|
||||||
|
| 1 | 主播怼脸特写,表情严肃甚至带点质疑,手做“停止”手势 | AI 预警=救星?<br>大错特错! | 5s |
|
||||||
|
| 2 | 快速剪辑:新闻画面中人群惊慌奔跑 vs 平静无风的街道(对比强烈) | 百万人大逃亡<br>结果:0 伤害 | 15s |
|
||||||
|
| 3 | 主播侧身,背景出现“狼来了”的卡通插图或警报器失灵特效 | 狼来了效应<br>信任崩塌 | 15s |
|
||||||
|
| 4 | 主播回到正脸,眼神诚恳,语速放缓,强调观点 | 快≠好<br>信任>速度 | 15s |
|
||||||
|
| 5 | 主播抛出问题,身体前倾,引导互动,屏幕出现投票条样式 | 宁可错报?<br>还是宁可慢? | 10s |
|
||||||
|
|
||||||
|
## 适配平台
|
||||||
|
- **抖音**:开头前 3 秒语速要更快,背景音乐用紧张的倒计时音效,强化冲突感。
|
||||||
|
- **视频号**:在“狼来了”段落可插入真实的新闻误报片段截图,增加中老年观众的信服力。
|
||||||
|
- **小红书**:封面图要用大字报风格写上“误报比迟到更可怕”,文案中增加 emoji 软化语气,引导讨论“安全感”。
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
## 标题(爆款钩子)
|
||||||
|
龙卷风预警提前15分钟?3个救命技巧别等误报后悔
|
||||||
|
|
||||||
|
## 口播文案
|
||||||
|
你知道吗?传统龙卷风预警平均只留给你13分钟![停顿]AI现在能提前15分钟,但误报率飙高。别慌,这3条干货,现在就能用上。
|
||||||
|
|
||||||
|
第一,别只盯手机短信。[停顿]气象局APP、本地应急广播全开,多个渠道多一重确认。第二,学会看天。漏斗云、旋转灰黑云团,就是死神敲门。别等警报响才跑,看到反常就撤。第三,提前找避难所。地下室、内部小房间,别躲车库或活动房。AI误报不怕,怕你麻痹大意。[停顿]记住,预警是提醒,自己预判才是保命符。评论区说说,你收到过假警报吗?
|
||||||
|
|
||||||
|
## 分镜建议
|
||||||
|
| 镜头 | 画面 | 字幕 | 时长 |
|
||||||
|
|------|------|------|------|
|
||||||
|
| 1 | 主播面对镜头,手指比划数字“13”和“15” | 13分钟 vs 15分钟,谁更快? | 5秒 |
|
||||||
|
| 2 | 切换手机预警通知截图,快速划过多个APP图标 | 多渠道预警,别只等短信 | 8秒 |
|
||||||
|
| 3 | 插入龙卷风来临前天空实拍(漏斗云旋转) | 漏斗云=死神敲门,看到就跑 | 10秒 |
|
||||||
|
| 4 | 主播手指向下指,背景出现地下室示意图 | 地下室最安全!别躲车库 | 8秒 |
|
||||||
|
| 5 | 主播回归镜头,微笑提问 | AI误报不可怕,麻痹才要命 | 7秒 |
|
||||||
|
|
||||||
|
## 适配平台
|
||||||
|
- **抖音**:前3秒用强冲突字幕“你的预警短信可能比死神晚到”,节奏更快,加热门音效。
|
||||||
|
- **视频号**:开头加“点赞收藏保命”引导互动,结尾带话题#极端天气自救指南。
|
||||||
|
- **小红书视频**:封面用醒目大字“3条龙卷风保命干货”,口播语速稍慢,强调“提前准备”。
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
## 标题(爆款钩子)
|
||||||
|
龙卷风撕碎屋顶那刻,救命短信竟迟到了 13 分钟?
|
||||||
|
|
||||||
|
## 口播文案
|
||||||
|
2026 年 7 月,湖北那个下午,老张正修着屋顶。[停顿]
|
||||||
|
突然,天像被撕开个大口子,灰黑色的漏斗云直插下来。
|
||||||
|
就在瓦片满天飞、老张下意识抱头的那一秒,手机终于响了。
|
||||||
|
是一条红色预警短信。[停顿]
|
||||||
|
可这时候,跑还来得及吗?
|
||||||
|
这不是电影,是真实发生的“生死时间差”。
|
||||||
|
传统雷达太“慢热”了,非要等龙卷风完全成型才报警,平均晚整整 13 分钟!
|
||||||
|
对你我来说,这 13 分钟,就是生与死的距离。
|
||||||
|
有人寄希望于 AI 能快那 15 分钟,可去年美国那场大规模误报,又让几百万人白跑一趟,吓出心脏病。[停顿]
|
||||||
|
太快怕误报,太慢怕没命。
|
||||||
|
在极端天气面前,我们到底该怎么跑赢死神?
|
||||||
|
这道题,气象学家还在争,但留给我们的思考时间,真的不多了。[停顿]
|
||||||
|
你觉得,这命该交给算法,还是交给经验?评论区聊聊。
|
||||||
|
|
||||||
|
## 分镜建议
|
||||||
|
|
||||||
|
| 镜头 | 画面描述 | 字幕关键词 | 时长 |
|
||||||
|
| :--- | :--- | :--- | :--- |
|
||||||
|
| 1 | **特写 + 音效**:手机屏幕特写,显示时间跳动,背景音是呼啸的风声和瓦片碎裂声,突然弹出红色短信通知。 | 迟到的救命短信 | 5s |
|
||||||
|
| 2 | **中景/情景再现**:一个中年男子(老张)在屋顶惊慌失措,背景是合成特效的灰黑色漏斗云逼近,色调压抑。 | 生死 13 分钟 | 8s |
|
||||||
|
| 3 | **近景/口播**:博主面对镜头,神情严肃,手势比划出“时间差”的概念,背景可配一张传统雷达波形图。 | 传统雷达太“慢热” | 10s |
|
||||||
|
| 4 | **快剪/资料画面**:快速闪过美国新闻画面,人群惊慌奔跑,随后打上大大的红色问号“误报?”。 | AI 也会“狼来了”? | 8s |
|
||||||
|
| 5 | **特写/口播**:博主眼神直视镜头,抛出问题,画面逐渐变暗,只留眼神光。 | 你选速度还是准确? | 5s |
|
||||||
|
|
||||||
|
## 适配平台
|
||||||
|
- **抖音**:前 3 秒必须把“瓦片乱飞 + 短信迟到”的冲突画面剪在一起,配合急促的音效,完播率才高。
|
||||||
|
- **视频号**:文案结尾可加重“家人安全”的情感引导,评论区多引导中年用户分享身边的极端天气经历。
|
||||||
|
- **小红书**:封面图要用“漏斗云实拍 + 大字报标题”,文案中增加“避雷指南”或“自救干货”的标签属性。
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
## 标题(爆款钩子)
|
||||||
|
一道初中数学题,让GPT-4o集体死机:AI的数学智商到底有多差?
|
||||||
|
|
||||||
|
## 口播文案
|
||||||
|
你敢信?[停顿]那个能写论文、写代码、碾压围棋的AI,竟然被韦东奕的一道初中数学题给整破防了![停顿]
|
||||||
|
|
||||||
|
GPT-4o、Claude 3.5,还有所谓的“专用数学模型”……全给出错误答案,甚至直接放弃![停顿]可这道题,就是一个聪明的高中生花半小时也能做出来。[停顿]
|
||||||
|
|
||||||
|
为什么?因为AI根本没有“数学直觉”。[停顿]它只会疯狂穷举、暴力检索,遇到需要构造辅助线、灵光一现的题,立马变成傻子。[停顿]
|
||||||
|
|
||||||
|
说白了,人类最后一道防线不是算力,而是那一瞬间的“灵感”。[停顿]你还在替AI焦虑?先问问自己:你的直觉,还活着吗?
|
||||||
|
|
||||||
|
## 分镜建议
|
||||||
|
| 镜头 | 画面 | 字幕(关键词) | 时长 |
|
||||||
|
|------|------|----------------|------|
|
||||||
|
| 1 | 博主直视镜头,表情略带挑衅 | “一道初中数学题,AI集体死机” | 3秒 |
|
||||||
|
| 2 | 快速闪过韦东奕照片,叠加大模型logo(GPT-4o、Claude等) | “韦神出题 vs 四大AI” | 5秒 |
|
||||||
|
| 3 | 展示一张几何题图(辅助线题型)+红色叉号 | “全错!甚至直接放弃” | 4秒 |
|
||||||
|
| 4 | 博主手势比划“思路”,背景出现灯泡图标 | “人类数学直觉:灵光一现” | 5秒 |
|
||||||
|
| 5 | 博主摊手,嘴角微笑 | “你的直觉,还活着吗?” | 3秒 |
|
||||||
|
|
||||||
|
## 适配平台
|
||||||
|
- **抖音**:前3秒用“你敢信?一道初中题”直接引爆好奇心,全程语速加快,每句后留0.5秒反应时间。
|
||||||
|
- **视频号**:开头加一句“这可能是你今年听到最反认知的事”,结尾改成“转发给还在神化AI的朋友”增强社交互动。
|
||||||
|
- **小红书视频**:首页配图文标题“AI被初中题碾压?真相扎心了”,全程语速放缓,突出“数学直觉”关键词,适合知识收藏。
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
## 标题(爆款钩子)
|
||||||
|
韦神一道题让AI集体死机?3招保住你的数学直觉
|
||||||
|
|
||||||
|
## 口播文案
|
||||||
|
你听说了吗?[停顿]韦东奕出了一道初中数学题,结果GPT-4o、Claude 3.5全体翻车,直接“死机”[停顿]凭什么?因为AI没有数学直觉,它只会套公式,不会构造辅助线。今天给你3条干货,让你在AI时代也能守住人类最后的防线。
|
||||||
|
|
||||||
|
第一条:别让AI替你思考。[停顿]遇到难题,先自己画图、写步骤,逼自己找突破口。AI给答案太快,你根本没机会训练直觉。
|
||||||
|
|
||||||
|
第二条:刻意练习“开放式问题”。[停顿]平面几何、数论证明这类题,没有标准解法,需要你构造辅助线、猜规律。每天一道,大脑就会长出“直觉肌肉”。
|
||||||
|
|
||||||
|
第三条:把AI当陪练,别当老师。[停顿]做完题,再用AI验证思路,看它怎么错。你发现它卡在哪,你就在哪赢了。
|
||||||
|
|
||||||
|
这三招,今天就能用,别等脑子生锈。评论区告诉我,你遇到过AI算不出来的题吗?
|
||||||
|
|
||||||
|
## 分镜建议
|
||||||
|
| 镜头 | 画面 | 字幕 | 时长 |
|
||||||
|
|------|------|------|------|
|
||||||
|
| 1 | 近景:博主对着镜头,表情惊讶,手指比划 | 韦神一道题,AI集体死机? | 5秒 |
|
||||||
|
| 2 | 中景:博主拿出一张白纸,画一条辅助线,然后摇头 | 没有数学直觉,只会套公式 | 8秒 |
|
||||||
|
| 3 | 特写:博主用手势模仿思考,然后指向自己 | 别让AI替你思考,先自己画图 | 10秒 |
|
||||||
|
| 4 | 中景:博主展示一张几何题,用笔圈出关键点 | 每天一道开放式问题,训练直觉肌肉 | 10秒 |
|
||||||
|
| 5 | 近景:博主拿起手机,假装和AI对话,然后微笑 | 把AI当陪练,看它怎么错 | 8秒 |
|
||||||
|
|
||||||
|
## 适配平台
|
||||||
|
- **抖音**:前3秒用“韦神+AI翻车”标题+悬念剪辑,节奏更快,字幕加粗放大。
|
||||||
|
- **视频号**:增加“你同意吗?”结尾互动,结合朋友圈转发话术,强调“人类优势”。
|
||||||
|
- **小红书视频**:标题改为“AI翻车后我悟了:3个数学直觉训练法”,封面用几何题+红色感叹号。
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
## 标题(爆款钩子)
|
||||||
|
韦神一道初中题,AI全部“死机”——人类直觉到底有多强?
|
||||||
|
|
||||||
|
## 口播文案
|
||||||
|
前几天,韦东奕出了一道初中数学题。[停顿]结果你猜怎么着?那些号称能写论文、编代码、替人类打工的顶级AI,像GPT-4o、Claude 3.5,居然集体翻车了。[停顿]是真的“死机”,连思路都理不清。[停顿]我当时看到这个新闻,心里咯噔一下——原来AI再厉害,也学不会那种灵光一现的直觉。[停顿]数学靠的是巧劲儿,是十几年甚至几十年磨出来的感觉。而AI呢?它只会算,不会“想”。[停顿]所以别老焦虑自己被替代了。有些东西,机器就是学不会。比如你脑子里的那根“辅助线”,比如你看到问题突然冒出来的那个解法。[停顿]这,才是我们人类的最后防线。
|
||||||
|
|
||||||
|
## 分镜建议
|
||||||
|
| 镜头 | 画面 | 字幕 | 时长 |
|
||||||
|
|------|------|------|------|
|
||||||
|
| 1 | 镜头对准手机屏幕,展示韦东奕照片或新闻截图,快速拉近 | “韦神出题” | 5秒 |
|
||||||
|
| 2 | 切到电脑屏幕,显示AI回答错误或加载失败动画,配合音效 | “GPT-4o、Claude 3.5……全懵了” | 8秒 |
|
||||||
|
| 3 | 真人出镜,皱眉、摊手,语气惊讶 | “是不是觉得不可思议?” | 6秒 |
|
||||||
|
| 4 | 镜头切回真人,一边说一边比划“辅助线”的手势 | “数学直觉,才是人类最后的防线” | 10秒 |
|
||||||
|
| 5 | 真人微笑,屏幕下方弹出话题标签,结尾定格 | “有些东西,机器就是学不会” | 6秒 |
|
||||||
|
|
||||||
|
## 适配平台
|
||||||
|
- **抖音**:前3秒用快节奏切屏和音效冲突感,字幕加emoji,结尾引导点赞评论“你觉得自己直觉准吗?”
|
||||||
|
- **视频号**:适当放慢语速,保留停顿感,增加“你身边有没有这样的例子?”互动话术,适合中老年用户传播。
|
||||||
|
- **小红书视频**:封面用韦东奕照片+“AI翻车”大字,正文加#人类直觉 #韦东奕 标签,文案侧重“普通人如何训练自己的直觉”。
|
||||||
@@ -1,104 +0,0 @@
|
|||||||
[
|
|
||||||
{
|
|
||||||
"id": "LOCAL-UNKNOWN",
|
|
||||||
"country": "Global",
|
|
||||||
"category": "未分类",
|
|
||||||
"title": "",
|
|
||||||
"core_idea": "",
|
|
||||||
"data_facts": "",
|
|
||||||
"global_advantage": "",
|
|
||||||
"china_pain_point": "",
|
|
||||||
"localization_suggestion": "",
|
|
||||||
"mvp_action": "",
|
|
||||||
"source_url": "",
|
|
||||||
"credibility_rating": "⭐⭐",
|
|
||||||
"china_applicability": "⭐⭐",
|
|
||||||
"collection_date": "2026-04-18",
|
|
||||||
"status": "待验证"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "LOCAL-UNKNOWN",
|
|
||||||
"country": "Global",
|
|
||||||
"category": "未分类",
|
|
||||||
"title": "",
|
|
||||||
"core_idea": "",
|
|
||||||
"data_facts": "",
|
|
||||||
"global_advantage": "",
|
|
||||||
"china_pain_point": "",
|
|
||||||
"localization_suggestion": "",
|
|
||||||
"mvp_action": "",
|
|
||||||
"source_url": "",
|
|
||||||
"credibility_rating": "⭐⭐",
|
|
||||||
"china_applicability": "⭐⭐",
|
|
||||||
"collection_date": "2026-04-18",
|
|
||||||
"status": "待验证"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "LOCAL-UNKNOWN",
|
|
||||||
"country": "Global",
|
|
||||||
"category": "未分类",
|
|
||||||
"title": "",
|
|
||||||
"core_idea": "",
|
|
||||||
"data_facts": "",
|
|
||||||
"global_advantage": "",
|
|
||||||
"china_pain_point": "",
|
|
||||||
"localization_suggestion": "",
|
|
||||||
"mvp_action": "",
|
|
||||||
"source_url": "",
|
|
||||||
"credibility_rating": "⭐⭐",
|
|
||||||
"china_applicability": "⭐⭐",
|
|
||||||
"collection_date": "2026-04-18",
|
|
||||||
"status": "待验证"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "LOCAL-UNKNOWN",
|
|
||||||
"country": "Global",
|
|
||||||
"category": "未分类",
|
|
||||||
"title": "",
|
|
||||||
"core_idea": "",
|
|
||||||
"data_facts": "",
|
|
||||||
"global_advantage": "",
|
|
||||||
"china_pain_point": "",
|
|
||||||
"localization_suggestion": "",
|
|
||||||
"mvp_action": "",
|
|
||||||
"source_url": "",
|
|
||||||
"credibility_rating": "⭐⭐",
|
|
||||||
"china_applicability": "⭐⭐",
|
|
||||||
"collection_date": "2026-04-18",
|
|
||||||
"status": "待验证"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "LOCAL-UNKNOWN",
|
|
||||||
"country": "Global",
|
|
||||||
"category": "未分类",
|
|
||||||
"title": "",
|
|
||||||
"core_idea": "",
|
|
||||||
"data_facts": "",
|
|
||||||
"global_advantage": "",
|
|
||||||
"china_pain_point": "",
|
|
||||||
"localization_suggestion": "",
|
|
||||||
"mvp_action": "",
|
|
||||||
"source_url": "",
|
|
||||||
"credibility_rating": "⭐⭐",
|
|
||||||
"china_applicability": "⭐⭐",
|
|
||||||
"collection_date": "2026-04-18",
|
|
||||||
"status": "待验证"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "LOCAL-UNKNOWN",
|
|
||||||
"country": "Global",
|
|
||||||
"category": "未分类",
|
|
||||||
"title": "",
|
|
||||||
"core_idea": "",
|
|
||||||
"data_facts": "",
|
|
||||||
"global_advantage": "",
|
|
||||||
"china_pain_point": "",
|
|
||||||
"localization_suggestion": "",
|
|
||||||
"mvp_action": "",
|
|
||||||
"source_url": "",
|
|
||||||
"credibility_rating": "⭐⭐",
|
|
||||||
"china_applicability": "⭐⭐",
|
|
||||||
"collection_date": "2026-04-18",
|
|
||||||
"status": "待验证"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
[]
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
[]
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
{"task": "sustainability_collection", "time": "2026-04-17 18:33", "topic_count": 0, "case_count": 0, "source_count": 8, "details_link": "automation/data/sustainability_raw/2026-04-17"}
|
|
||||||
@@ -1,53 +0,0 @@
|
|||||||
[
|
|
||||||
{
|
|
||||||
"id": "LOCAL-UNKNOWN",
|
|
||||||
"country": "Global",
|
|
||||||
"category": "未分类",
|
|
||||||
"title": "",
|
|
||||||
"core_idea": "",
|
|
||||||
"data_facts": "",
|
|
||||||
"global_advantage": "",
|
|
||||||
"china_pain_point": "",
|
|
||||||
"localization_suggestion": "",
|
|
||||||
"mvp_action": "",
|
|
||||||
"source_url": "",
|
|
||||||
"credibility_rating": "⭐⭐",
|
|
||||||
"china_applicability": "⭐⭐",
|
|
||||||
"collection_date": "2026-04-18",
|
|
||||||
"status": "待验证"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "LOCAL-UNKNOWN",
|
|
||||||
"country": "Global",
|
|
||||||
"category": "未分类",
|
|
||||||
"title": "",
|
|
||||||
"core_idea": "",
|
|
||||||
"data_facts": "",
|
|
||||||
"global_advantage": "",
|
|
||||||
"china_pain_point": "",
|
|
||||||
"localization_suggestion": "",
|
|
||||||
"mvp_action": "",
|
|
||||||
"source_url": "",
|
|
||||||
"credibility_rating": "⭐⭐",
|
|
||||||
"china_applicability": "⭐⭐",
|
|
||||||
"collection_date": "2026-04-18",
|
|
||||||
"status": "待验证"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "LOCAL-UNKNOWN",
|
|
||||||
"country": "Global",
|
|
||||||
"category": "未分类",
|
|
||||||
"title": "",
|
|
||||||
"core_idea": "",
|
|
||||||
"data_facts": "",
|
|
||||||
"global_advantage": "",
|
|
||||||
"china_pain_point": "",
|
|
||||||
"localization_suggestion": "",
|
|
||||||
"mvp_action": "",
|
|
||||||
"source_url": "",
|
|
||||||
"credibility_rating": "⭐⭐",
|
|
||||||
"china_applicability": "⭐⭐",
|
|
||||||
"collection_date": "2026-04-18",
|
|
||||||
"status": "待验证"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
[
|
|
||||||
{
|
|
||||||
"id": "TOPIC-.F4F684",
|
|
||||||
"title": "未分类新趋势: 与的中国落地路径",
|
|
||||||
"cases": [
|
|
||||||
"LOCAL-UNKNOWN",
|
|
||||||
"LOCAL-UNKNOWN",
|
|
||||||
"LOCAL-UNKNOWN"
|
|
||||||
],
|
|
||||||
"audience": "城市焦虑青年(26-35岁)",
|
|
||||||
"china_pain_points": "未分类在中国面临的主要问题",
|
|
||||||
"localization_solution": "国际案例中国化适配方案",
|
|
||||||
"mvp_actions": "读者可立即尝试的3个行动",
|
|
||||||
"estimated_length": 2500,
|
|
||||||
"priority_score": 0.78,
|
|
||||||
"status": "待处理",
|
|
||||||
"lock_by": null,
|
|
||||||
"lock_at": null,
|
|
||||||
"created_at": "2026-04-18T18:26:25.984697"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
{"task": "sustainability_collection", "time": "2026-04-18 18:26", "topic_count": 1, "case_count": 3, "source_count": 8, "details_link": "automation/data/sustainability_raw/2026-04-18"}
|
|
||||||
@@ -1,53 +0,0 @@
|
|||||||
[
|
|
||||||
{
|
|
||||||
"id": "LOCAL-UNKNOWN",
|
|
||||||
"country": "Global",
|
|
||||||
"category": "未分类",
|
|
||||||
"title": "",
|
|
||||||
"core_idea": "",
|
|
||||||
"data_facts": "",
|
|
||||||
"global_advantage": "",
|
|
||||||
"china_pain_point": "",
|
|
||||||
"localization_suggestion": "",
|
|
||||||
"mvp_action": "",
|
|
||||||
"source_url": "",
|
|
||||||
"credibility_rating": "⭐⭐",
|
|
||||||
"china_applicability": "⭐⭐",
|
|
||||||
"collection_date": "2026-04-18",
|
|
||||||
"status": "待验证"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "LOCAL-UNKNOWN",
|
|
||||||
"country": "Global",
|
|
||||||
"category": "未分类",
|
|
||||||
"title": "",
|
|
||||||
"core_idea": "",
|
|
||||||
"data_facts": "",
|
|
||||||
"global_advantage": "",
|
|
||||||
"china_pain_point": "",
|
|
||||||
"localization_suggestion": "",
|
|
||||||
"mvp_action": "",
|
|
||||||
"source_url": "",
|
|
||||||
"credibility_rating": "⭐⭐",
|
|
||||||
"china_applicability": "⭐⭐",
|
|
||||||
"collection_date": "2026-04-18",
|
|
||||||
"status": "待验证"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "LOCAL-UNKNOWN",
|
|
||||||
"country": "Global",
|
|
||||||
"category": "未分类",
|
|
||||||
"title": "",
|
|
||||||
"core_idea": "",
|
|
||||||
"data_facts": "",
|
|
||||||
"global_advantage": "",
|
|
||||||
"china_pain_point": "",
|
|
||||||
"localization_suggestion": "",
|
|
||||||
"mvp_action": "",
|
|
||||||
"source_url": "",
|
|
||||||
"credibility_rating": "⭐⭐",
|
|
||||||
"china_applicability": "⭐⭐",
|
|
||||||
"collection_date": "2026-04-18",
|
|
||||||
"status": "待验证"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
[
|
|
||||||
{
|
|
||||||
"id": "TOPIC-.285EC9",
|
|
||||||
"title": "未分类新趋势: 与的中国落地路径",
|
|
||||||
"cases": [
|
|
||||||
"LOCAL-UNKNOWN",
|
|
||||||
"LOCAL-UNKNOWN",
|
|
||||||
"LOCAL-UNKNOWN"
|
|
||||||
],
|
|
||||||
"audience": "城市焦虑青年(26-35岁)",
|
|
||||||
"china_pain_points": "未分类在中国面临的主要问题",
|
|
||||||
"localization_solution": "国际案例中国化适配方案",
|
|
||||||
"mvp_actions": "读者可立即尝试的3个行动",
|
|
||||||
"estimated_length": 2500,
|
|
||||||
"priority_score": 0.78,
|
|
||||||
"status": "待处理",
|
|
||||||
"lock_by": null,
|
|
||||||
"lock_at": null,
|
|
||||||
"created_at": "2026-04-19T05:00:54.473396"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
{"task": "sustainability_collection", "time": "2026-04-19 05:00", "topic_count": 1, "case_count": 3, "source_count": 8, "details_link": "automation/data/sustainability_raw/2026-04-19"}
|
|
||||||
@@ -1,322 +0,0 @@
|
|||||||
[
|
|
||||||
{
|
|
||||||
"id": "001",
|
|
||||||
"title": "在上海阳台种菜一年,我收获了啥?",
|
|
||||||
"field": "自然 / 生活",
|
|
||||||
"format": "实操指南 + 个人故事",
|
|
||||||
"word_count": "2500",
|
|
||||||
"core_concept": "城市农业不仅是种菜,更是与自然重建连接的生活方式",
|
|
||||||
"audience_pain": "- 想体验田园生活但没条件去农村",
|
|
||||||
"unique_angle": "- 不鼓吹\"田园牧歌\",客观展示失败和踩坑",
|
|
||||||
"data_cases": [
|
|
||||||
"1. 上海阳台种植调研报告(找本地社区数据)",
|
|
||||||
"2. 不同蔬菜的生长周期和产量数据(农业网站)"
|
|
||||||
],
|
|
||||||
"estimated_days": "4天",
|
|
||||||
"priority": "高",
|
|
||||||
"priority_score": 10,
|
|
||||||
"publish_date": "2026-04-15",
|
|
||||||
"status": "已发布",
|
|
||||||
"evaluation": {
|
|
||||||
"受众覆盖": 8,
|
|
||||||
"独特性": 9,
|
|
||||||
"数据可得性": 8,
|
|
||||||
"可持续性": 7,
|
|
||||||
"平台契合度": 9,
|
|
||||||
"品牌契合度": 10,
|
|
||||||
"总分": 51
|
|
||||||
},
|
|
||||||
"total_score": 51,
|
|
||||||
"cases": [],
|
|
||||||
"source_file": "001-上海阳台种菜一年.md",
|
|
||||||
"created_at": "2026-04-16T07:52:48.754855",
|
|
||||||
"published_date": "2026-04-16"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "002",
|
|
||||||
"title": "AI时代,什么能力不会被替代?",
|
|
||||||
"field": "科技 / 职场",
|
|
||||||
"format": "趋势洞察 + 实操建议",
|
|
||||||
"word_count": "2800",
|
|
||||||
"core_concept": "AI淘汰的不是工作,而是不会使用AI的人;但有些\"人类特质\"能力反而更珍贵",
|
|
||||||
"audience_pain": "- 担心被AI替代,职业焦虑严重",
|
|
||||||
"unique_angle": "- 区分配\"被AI强化的能力\"和\"AI无法替代的能力\"",
|
|
||||||
"data_cases": [
|
|
||||||
"1. 世界经济论坛《未来就业报告》技能趋势数据",
|
|
||||||
"2. 美国劳工统计局职业自动化概率研究"
|
|
||||||
],
|
|
||||||
"estimated_days": "5天",
|
|
||||||
"priority": "高",
|
|
||||||
"priority_score": 10,
|
|
||||||
"publish_date": "2026-04-18",
|
|
||||||
"status": "待处理",
|
|
||||||
"evaluation": {
|
|
||||||
"受众覆盖": 9,
|
|
||||||
"独特性": 8,
|
|
||||||
"数据可得性": 9,
|
|
||||||
"平台契合度": 9,
|
|
||||||
"品牌契合度": 10,
|
|
||||||
"总分": 53
|
|
||||||
},
|
|
||||||
"total_score": 53,
|
|
||||||
"cases": [],
|
|
||||||
"source_file": "002-AI时代什么能力不会被替代.md",
|
|
||||||
"created_at": "2026-04-16T07:52:48.755025"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "003",
|
|
||||||
"title": "从程序员到数字游民:我的三年转型之路",
|
|
||||||
"field": "工作 / 职场",
|
|
||||||
"format": "个人故事 + 实操指南",
|
|
||||||
"word_count": "2600",
|
|
||||||
"core_concept": "数字游民不是逃离,而是更聪明的工作生活方式选择",
|
|
||||||
"audience_pain": "- 受够了996,想自由但不敢行动",
|
|
||||||
"unique_angle": "- 不美化\"边玩边赚\",客观展示挑战和代价",
|
|
||||||
"data_cases": [
|
|
||||||
"1. 数字游民调研报告(人数、收入、职业分布)",
|
|
||||||
"2. 不同国家的签证政策和生活成本对比(数字游民签证国家)"
|
|
||||||
],
|
|
||||||
"estimated_days": "5天",
|
|
||||||
"priority": "高",
|
|
||||||
"priority_score": 10,
|
|
||||||
"publish_date": "2026-04-20",
|
|
||||||
"status": "待处理",
|
|
||||||
"evaluation": {
|
|
||||||
"受众覆盖": 9,
|
|
||||||
"独特性": 8,
|
|
||||||
"数据可得性": 8,
|
|
||||||
"可持续性": 9,
|
|
||||||
"平台契合度": 9,
|
|
||||||
"品牌契合度": 10,
|
|
||||||
"总分": 53
|
|
||||||
},
|
|
||||||
"total_score": 53,
|
|
||||||
"cases": [],
|
|
||||||
"source_file": "003-数字游民这一年.md",
|
|
||||||
"created_at": "2026-04-16T07:52:48.755167"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "004",
|
|
||||||
"title": "零浪费生活一年:一个家庭产生的垃圾去哪儿了?",
|
|
||||||
"field": "自然 / 生活",
|
|
||||||
"format": "实验记录 + 科普指南",
|
|
||||||
"word_count": "2300",
|
|
||||||
"core_concept": "零浪费不是苦行,而是更聪明的消费选择;个人行动虽小,但能改变系统",
|
|
||||||
"audience_pain": "- 想环保但不知道从何下手",
|
|
||||||
"unique_angle": "- 不道德绑架,用数据和成本说服",
|
|
||||||
"data_cases": [
|
|
||||||
"1. 中国城市生活垃圾产生量数据(统计年鉴)",
|
|
||||||
"2. 不同包装方式的碳足迹对比(生产、运输、处理)"
|
|
||||||
],
|
|
||||||
"estimated_days": "4天",
|
|
||||||
"priority": "高",
|
|
||||||
"priority_score": 10,
|
|
||||||
"publish_date": "2026-04-22",
|
|
||||||
"status": "待处理",
|
|
||||||
"evaluation": {
|
|
||||||
"受众覆盖": 8,
|
|
||||||
"独特性": 9,
|
|
||||||
"数据可得性": 8,
|
|
||||||
"可持续性": 8,
|
|
||||||
"平台契合度": 8,
|
|
||||||
"品牌契合度": 10,
|
|
||||||
"总分": 51
|
|
||||||
},
|
|
||||||
"total_score": 51,
|
|
||||||
"cases": [],
|
|
||||||
"source_file": "004-零浪费生活一年实验.md",
|
|
||||||
"created_at": "2026-04-16T07:52:48.755315"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "005",
|
|
||||||
"title": "深度工作实践:如何在干扰世界中保持专注",
|
|
||||||
"field": "工作 / 生产力",
|
|
||||||
"format": "实操指南 + 个人实验",
|
|
||||||
"word_count": "2400",
|
|
||||||
"core_concept": "专注力是新时代最稀缺的资源,通过系统方法可以重建深度工作能力",
|
|
||||||
"audience_pain": "- 每天忙碌但没产出,时间碎片化",
|
|
||||||
"unique_angle": "- 不鸡汤,用实验数据和自我追踪说话",
|
|
||||||
"data_cases": [
|
|
||||||
"1. Cal Newport《深度工作》理论体系",
|
|
||||||
"2. 注意力恢复理论(Attention Restoration Theory)"
|
|
||||||
],
|
|
||||||
"estimated_days": "4天",
|
|
||||||
"priority": "高",
|
|
||||||
"priority_score": 10,
|
|
||||||
"publish_date": "2026-04-23",
|
|
||||||
"status": "待处理",
|
|
||||||
"evaluation": {
|
|
||||||
"受众覆盖": 9,
|
|
||||||
"独特性": 7,
|
|
||||||
"数据可得性": 9,
|
|
||||||
"可持续性": 8,
|
|
||||||
"平台契合度": 9,
|
|
||||||
"品牌契合度": 8,
|
|
||||||
"总分": 50
|
|
||||||
},
|
|
||||||
"total_score": 50,
|
|
||||||
"cases": [],
|
|
||||||
"source_file": "005-深度工作实践.md",
|
|
||||||
"created_at": "2026-04-16T07:52:48.755469"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "006",
|
|
||||||
"title": "副业月入过万:我一个程序员的三年探索之路",
|
|
||||||
"field": "工作 / 副业",
|
|
||||||
"format": "实操经验 + 方法论总结",
|
|
||||||
"word_count": "2700",
|
|
||||||
"core_concept": "副业不是投机,而是将主业技能产品化、多元化的过程",
|
|
||||||
"audience_pain": "- 工资不够花,想搞钱但不知道从哪开始",
|
|
||||||
"unique_angle": "- 从技术人视角(程序员)看副业选项,但方法论通用",
|
|
||||||
"data_cases": [
|
|
||||||
"1. 中国职场人副业调研报告(参与率、收入分布)",
|
|
||||||
"2. 程序员技能变现渠道对比(外包、咨询、产品、内容)"
|
|
||||||
],
|
|
||||||
"estimated_days": "5天",
|
|
||||||
"priority": "高",
|
|
||||||
"priority_score": 10,
|
|
||||||
"publish_date": "2026-04-25",
|
|
||||||
"status": "待处理",
|
|
||||||
"evaluation": {
|
|
||||||
"受众覆盖": 9,
|
|
||||||
"独特性": 7,
|
|
||||||
"数据可得性": 9,
|
|
||||||
"可持续性": 9,
|
|
||||||
"平台契合度": 9,
|
|
||||||
"品牌契合度": 9,
|
|
||||||
"总分": 52
|
|
||||||
},
|
|
||||||
"total_score": 52,
|
|
||||||
"cases": [],
|
|
||||||
"source_file": "006-副业月入过万.md",
|
|
||||||
"created_at": "2026-04-16T07:52:48.755650"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "007",
|
|
||||||
"title": "正念冥想一年:从焦虑到平静的转变",
|
|
||||||
"field": "人文 / 心理健康",
|
|
||||||
"format": "个人实验 + 科学解读",
|
|
||||||
"word_count": "2200",
|
|
||||||
"core_concept": "冥想不是玄学,是可训练的大脑肌肉;一年练习带来可测量的认知和情绪变化",
|
|
||||||
"audience_pain": "- 焦虑、失眠、注意力不集中",
|
|
||||||
"unique_angle": "- 用科学家态度做自我实验(追踪数据、前后对比)",
|
|
||||||
"data_cases": [
|
|
||||||
"1. 冥想改变大脑结构的研究(灰质增加、杏仁核缩小)",
|
|
||||||
"2. 压力激素(皮质醇)水平变化数据"
|
|
||||||
],
|
|
||||||
"estimated_days": "4天",
|
|
||||||
"priority": "中",
|
|
||||||
"priority_score": 7,
|
|
||||||
"publish_date": "2026-04-27",
|
|
||||||
"status": "待处理",
|
|
||||||
"evaluation": {
|
|
||||||
"受众覆盖": 8,
|
|
||||||
"独特性": 8,
|
|
||||||
"数据可得性": 8,
|
|
||||||
"可持续性": 7,
|
|
||||||
"平台契合度": 8,
|
|
||||||
"品牌契合度": 9,
|
|
||||||
"总分": 48
|
|
||||||
},
|
|
||||||
"total_score": 48,
|
|
||||||
"cases": [],
|
|
||||||
"source_file": "007-正念冥想一年变化.md",
|
|
||||||
"created_at": "2026-04-16T07:52:48.755802"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "008",
|
|
||||||
"title": "极简3年:我从囤积症到少物生活的转变",
|
|
||||||
"field": "人文 / 生活方式",
|
|
||||||
"format": "个人转变故事 + 实操指南",
|
|
||||||
"word_count": "2500",
|
|
||||||
"core_concept": "极简不是扔东西,而是重新定义\"足够\";通过减少物质,增加精神丰盈",
|
|
||||||
"audience_pain": "- 家里东西越来越多,整理完很快又乱",
|
|
||||||
"unique_angle": "- 从囤积症患者到极简主义者的真实转变(有心理过程)",
|
|
||||||
"data_cases": [
|
|
||||||
"1. 极简主义创始人(Joshua & Ryan)理念和实践",
|
|
||||||
"2. 物品生命周期研究(平均使用次数、浪费数据)"
|
|
||||||
],
|
|
||||||
"estimated_days": "4天",
|
|
||||||
"priority": "中",
|
|
||||||
"priority_score": 7,
|
|
||||||
"publish_date": "2026-04-29",
|
|
||||||
"status": "待处理",
|
|
||||||
"evaluation": {
|
|
||||||
"受众覆盖": 8,
|
|
||||||
"独特性": 8,
|
|
||||||
"数据可得性": 8,
|
|
||||||
"可持续性": 8,
|
|
||||||
"平台契合度": 8,
|
|
||||||
"品牌契合度": 10,
|
|
||||||
"总分": 50
|
|
||||||
},
|
|
||||||
"total_score": 50,
|
|
||||||
"cases": [],
|
|
||||||
"source_file": "008-极简3年我学会了.md",
|
|
||||||
"created_at": "2026-04-16T07:52:48.755960"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "009",
|
|
||||||
"title": "城市观鸟指南:如何在水泥森林发现 biodiversity",
|
|
||||||
"field": "自然 / 科普",
|
|
||||||
"format": "实操指南 + 城市生态观察",
|
|
||||||
"word_count": "2000",
|
|
||||||
"core_concept": "自然不在远方,就在身边;城市也是wildlife的栖息地,学会观察能提升生活幸福感",
|
|
||||||
"audience_pain": "- 想接触自然但没时间去郊外",
|
|
||||||
"unique_angle": "- 城市观鸟入门,从\"完全小白\"到\"常见鸟达人\"",
|
|
||||||
"data_cases": [
|
|
||||||
"1. 城市生物多样性调研报告(中国的城市化与野生动物)",
|
|
||||||
"2. 常见城市鸟类图鉴(种类、特征、习性)"
|
|
||||||
],
|
|
||||||
"estimated_days": "3天",
|
|
||||||
"priority": "中",
|
|
||||||
"priority_score": 7,
|
|
||||||
"publish_date": "2026-05-01",
|
|
||||||
"status": "待处理",
|
|
||||||
"evaluation": {
|
|
||||||
"受众覆盖": 7,
|
|
||||||
"独特性": 9,
|
|
||||||
"数据可得性": 8,
|
|
||||||
"可持续性": 9,
|
|
||||||
"平台契合度": 8,
|
|
||||||
"品牌契合度": 10,
|
|
||||||
"总分": 51
|
|
||||||
},
|
|
||||||
"total_score": 51,
|
|
||||||
"cases": [],
|
|
||||||
"source_file": "009-城市观鸟指南.md",
|
|
||||||
"created_at": "2026-04-16T07:52:48.756111"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "010",
|
|
||||||
"title": "个人知识管理系统(PKM)实践:我用一年搭建的第二大脑",
|
|
||||||
"field": "工作 / 生产力",
|
|
||||||
"format": "实操教程 + 系统设计",
|
|
||||||
"word_count": "2800",
|
|
||||||
"core_concept": "信息时代,会学习不如会管理知识;一个适合自己的PKM系统能释放认知带宽,提升创造力和决策质量",
|
|
||||||
"audience_pain": "- 收藏无数,但从未回看(收藏夹吃灰)",
|
|
||||||
"unique_angle": "- 不推销特定工具,强调方法论+适合自己的选择",
|
|
||||||
"data_cases": [
|
|
||||||
"1. PKM方法论(Zettelkasten、PARA、CODE等)",
|
|
||||||
"2. 工具对比研究(Notion、Obsidian、Roam、Logseq、飞书、Notability)"
|
|
||||||
],
|
|
||||||
"estimated_days": "5天",
|
|
||||||
"priority": "中",
|
|
||||||
"priority_score": 7,
|
|
||||||
"publish_date": "2026-05-03",
|
|
||||||
"status": "待处理",
|
|
||||||
"evaluation": {
|
|
||||||
"受众覆盖": 8,
|
|
||||||
"独特性": 8,
|
|
||||||
"数据可得性": 9,
|
|
||||||
"可持续性": 9,
|
|
||||||
"平台契合度": 9,
|
|
||||||
"品牌契合度": 9,
|
|
||||||
"总分": 52
|
|
||||||
},
|
|
||||||
"total_score": 52,
|
|
||||||
"cases": [],
|
|
||||||
"source_file": "010-PKM实践.md",
|
|
||||||
"created_at": "2026-04-16T07:52:48.756300"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
@@ -1,392 +0,0 @@
|
|||||||
[
|
|
||||||
{
|
|
||||||
"id": "A01",
|
|
||||||
"title": "远程工作2026中国指南:从'不可能'到'可行'的路径图",
|
|
||||||
"field": "未来工作方式",
|
|
||||||
"format": "趋势洞察 + 实操指南",
|
|
||||||
"core_concept": "通过法律实操(合同、社保、个税)和心理建设(孤独应对),在中国环境下实现远程工作",
|
|
||||||
"audience_pain": "想远程但不知如何合法操作,担心被边缘化",
|
|
||||||
"unique_angle": "对比GitLab/Zapier海外实践,本土化落地策略",
|
|
||||||
"priority": "高",
|
|
||||||
"priority_score": 10,
|
|
||||||
"total_score": 53,
|
|
||||||
"status": "待发布",
|
|
||||||
"cases": [],
|
|
||||||
"source_file": "strategy/全球-本土比较研究与全新内容战略规划-2026-04-15.md",
|
|
||||||
"created_at": "2026-04-16T09:42:54.436643",
|
|
||||||
"ready_at": "2026-04-18",
|
|
||||||
"compliance_score": 100,
|
|
||||||
"lock_by": null,
|
|
||||||
"lock_at": null,
|
|
||||||
"platform_urls": {},
|
|
||||||
"published_at": null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "A02",
|
|
||||||
"title": "AI副业入门:用DeepSeek实现第一笔收入的100天",
|
|
||||||
"field": "未来工作方式",
|
|
||||||
"format": "实操指南 + 案例研究",
|
|
||||||
"core_concept": "从代写文案/数据分析起步,通过Fiverr国内外平台对比,制定定价策略和违规红线规避",
|
|
||||||
"audience_pain": "想用AI赚钱但不知从何开始,怕踩坑",
|
|
||||||
"unique_angle": "对比Fiverr海外繁荣 vs 国内空白,提供本土化接单路径",
|
|
||||||
"priority": "高",
|
|
||||||
"priority_score": 10,
|
|
||||||
"total_score": 52,
|
|
||||||
"status": "待发布",
|
|
||||||
"cases": [],
|
|
||||||
"source_file": "strategy/全球-本土比较研究与全新内容战略规划-2026-04-15.md",
|
|
||||||
"created_at": "2026-04-16T09:42:54.436654",
|
|
||||||
"ready_at": "2026-04-19",
|
|
||||||
"compliance_score": 100,
|
|
||||||
"lock_by": null,
|
|
||||||
"lock_at": null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "A03",
|
|
||||||
"title": "数字游民签证全解析:30个国家政策对比,中国护照能去哪些?",
|
|
||||||
"field": "未来工作方式",
|
|
||||||
"format": "对比分析 + 实操指南",
|
|
||||||
"core_concept": "分析爱沙尼亚/葡萄牙/巴厘岛等30国游民签证,结合中国护照限制,给出签证+保险+税务+社群的完整路线",
|
|
||||||
"audience_pain": "想地理套利但被签证和社保困扰",
|
|
||||||
"unique_angle": "不是简单列出签证,而是给出中国护照持有者的可行组合方案(如泰国+大马+巴厘岛)",
|
|
||||||
"priority": "高",
|
|
||||||
"priority_score": 10,
|
|
||||||
"total_score": 51,
|
|
||||||
"status": "待处理",
|
|
||||||
"cases": [],
|
|
||||||
"source_file": "strategy/全球-本土比较研究与全新内容战略规划-2026-04-15.md",
|
|
||||||
"created_at": "2026-04-16T09:42:54.436656",
|
|
||||||
"ready_at": "2026-04-16",
|
|
||||||
"compliance_score": 100
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "A04",
|
|
||||||
"title": "一人公司实验:从创意到营收的365天日志",
|
|
||||||
"field": "未来工作方式",
|
|
||||||
"format": "实践日志 + 方法论",
|
|
||||||
"core_concept": "基于Indie Hackers案例,结合中国孤独创业现状,提供MVP设计、现金流管理、法律合规的一站式指南",
|
|
||||||
"audience_pain": "想单干但怕失败、缺启动资金、不懂营销",
|
|
||||||
"unique_angle": "真实日志形式,展示完整从0到营收的过程,不美化",
|
|
||||||
"priority": "高",
|
|
||||||
"priority_score": 10,
|
|
||||||
"total_score": 50,
|
|
||||||
"status": "待处理",
|
|
||||||
"cases": [],
|
|
||||||
"source_file": "strategy/全球-本土比较研究与全新内容战略规划-2026-04-15.md",
|
|
||||||
"created_at": "2026-04-16T09:42:54.436658",
|
|
||||||
"ready_at": "2026-04-16",
|
|
||||||
"compliance_score": 100
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "A05",
|
|
||||||
"title": "AI时代的技能组合:什么技能值得投入10年?",
|
|
||||||
"field": "未来工作方式",
|
|
||||||
"format": "趋势分析 + 个人规划",
|
|
||||||
"core_concept": "基于WEF未来技能报告,划分4个技能维度(AI强化型、AI无法替代、复合型、过时型),帮中国职场人识别护城河技能",
|
|
||||||
"audience_pain": "学什么都不放心,怕投入时间后AI又取代",
|
|
||||||
"unique_angle": "将全球宏观报告转化为个人技能地图,提供可视化工具",
|
|
||||||
"priority": "中",
|
|
||||||
"priority_score": 7,
|
|
||||||
"total_score": 50,
|
|
||||||
"status": "待处理",
|
|
||||||
"cases": [],
|
|
||||||
"source_file": "strategy/全球-本土比较研究与全新内容战略规划-2026-04-15.md",
|
|
||||||
"created_at": "2026-04-16T09:42:54.436660",
|
|
||||||
"ready_at": "2026-04-17",
|
|
||||||
"compliance_score": 100
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "B01",
|
|
||||||
"title": "城市农业ROI报告:20㎡阳台种菜一年,省了多少钱?",
|
|
||||||
"field": "可持续生活系统",
|
|
||||||
"format": "数据分析 + 实操指南",
|
|
||||||
"core_concept": "对比东京垂直农场与国内空间限制,精选高ROI蔬菜品种,智能设备自动灌溉,给出详细成本核算和品种推荐",
|
|
||||||
"audience_pain": "想种但怕麻烦、怕亏本、不知道种什么",
|
|
||||||
"unique_angle": "用财务思维算账(投入/产出/时间成本),打破'种菜必须有地'的思维",
|
|
||||||
"priority": "高",
|
|
||||||
"priority_score": 10,
|
|
||||||
"total_score": 52,
|
|
||||||
"status": "待处理",
|
|
||||||
"cases": [],
|
|
||||||
"source_file": "strategy/全球-本土比较研究与全新内容战略规划-2026-04-15.md",
|
|
||||||
"created_at": "2026-04-16T09:42:54.436665",
|
|
||||||
"ready_at": "2026-04-16",
|
|
||||||
"compliance_score": 100
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "B02",
|
|
||||||
"title": "零浪费家庭实验:一年只产100L垃圾,可能吗?",
|
|
||||||
"field": "可持续生活系统",
|
|
||||||
"format": "实践实验 + 方法论",
|
|
||||||
"core_concept": "对比瑞典零浪费城市,针对中国垃圾分类困境,提供垃圾追踪表、替代方案数据库、社区互助网络",
|
|
||||||
"audience_pain": "想环保但觉得做不到、不知道从哪减",
|
|
||||||
"unique_angle": "极限实验(100L/年)+ 可执行步骤(从塑料减量开始),不理想化",
|
|
||||||
"priority": "高",
|
|
||||||
"priority_score": 10,
|
|
||||||
"total_score": 51,
|
|
||||||
"status": "待处理",
|
|
||||||
"cases": [],
|
|
||||||
"source_file": "strategy/全球-本土比较研究与全新内容战略规划-2026-04-15.md",
|
|
||||||
"created_at": "2026-04-16T09:42:54.436667",
|
|
||||||
"ready_at": "2026-04-16",
|
|
||||||
"compliance_score": 100
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "B03",
|
|
||||||
"title": "低碳生活账单:用3年省了8万,碳足迹降了60%",
|
|
||||||
"field": "可持续生活系统",
|
|
||||||
"format": "数据分析 + 案例研究",
|
|
||||||
"core_concept": "对比欧洲碳税政策,从交通(电动车+共享)、饮食(植物为主)、消费(二手优先)三个维度,展示真实账单变化",
|
|
||||||
"audience_pain": "觉得低碳=更贵,不敢尝试",
|
|
||||||
"unique_angle": "用财务数据说话(省8万),打破'环保=烧钱'误解",
|
|
||||||
"priority": "高",
|
|
||||||
"priority_score": 10,
|
|
||||||
"total_score": 50,
|
|
||||||
"status": "待处理",
|
|
||||||
"cases": [],
|
|
||||||
"source_file": "strategy/全球-本土比较研究与全新内容战略规划-2026-04-15.md",
|
|
||||||
"created_at": "2026-04-16T09:42:54.436669",
|
|
||||||
"ready_at": "2026-04-16",
|
|
||||||
"compliance_score": 100
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "B04",
|
|
||||||
"title": "循环消费实战:10件物品,用3年省了2万",
|
|
||||||
"field": "可持续生活系统",
|
|
||||||
"format": "实操指南 + 案例清单",
|
|
||||||
"core_concept": "对比法国二手强制法与中国闲鱼文化,提供购买决策树(买新/二手/租)、延长寿命技巧、转卖策略",
|
|
||||||
"audience_pain": "想买二手但怕质量差、怕麻烦",
|
|
||||||
"unique_angle": "10件物品的具体交易记录和对比(手机、相机、家具等),可复制",
|
|
||||||
"priority": "中",
|
|
||||||
"priority_score": 7,
|
|
||||||
"total_score": 50,
|
|
||||||
"status": "待处理",
|
|
||||||
"cases": [],
|
|
||||||
"source_file": "strategy/全球-本土比较研究与全新内容战略规划-2026-04-15.md",
|
|
||||||
"created_at": "2026-04-16T09:42:54.436671",
|
|
||||||
"ready_at": "2026-04-17",
|
|
||||||
"compliance_score": 100
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "B05",
|
|
||||||
"title": "社区菜园指南:如何推动小区5户邻居共建共享",
|
|
||||||
"field": "可持续生活系统",
|
|
||||||
"format": "方法论 + 实操步骤",
|
|
||||||
"core_concept": "对比纽约社区花园政策与中国物业协调难题,提供法律风险(物权)、利益分配机制、技术方案(分区+智能)",
|
|
||||||
"audience_pain": "想组织但怕纠纷、不懂法律、协调不了邻居",
|
|
||||||
"unique_angle": "从1个友好小区试点开始,成功后复制,降低风险",
|
|
||||||
"priority": "高",
|
|
||||||
"priority_score": 10,
|
|
||||||
"total_score": 49,
|
|
||||||
"status": "待处理",
|
|
||||||
"cases": [],
|
|
||||||
"source_file": "strategy/全球-本土比较研究与全新内容战略规划-2026-04-15.md",
|
|
||||||
"created_at": "2026-04-16T09:42:54.436673",
|
|
||||||
"ready_at": "2026-04-16",
|
|
||||||
"compliance_score": 100
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "C01",
|
|
||||||
"title": "第二大脑2.0:用DeepSeek+本地向量库建立私有知识系统",
|
|
||||||
"field": "个人知识工厂",
|
|
||||||
"format": "技术指南 + 实操案例",
|
|
||||||
"core_concept": "对比Obsidian+RAG海外实践,针对国内云服务担忧,提供数据主权、隐私保护、无缝检索、AI问答的本地化方案",
|
|
||||||
"audience_pain": "想系统化知识但担心云存储安全,怕复杂",
|
|
||||||
"unique_angle": "强调数据主权,从API调用到本地部署的渐进路线",
|
|
||||||
"priority": "中",
|
|
||||||
"priority_score": 7,
|
|
||||||
"total_score": 52,
|
|
||||||
"status": "待处理",
|
|
||||||
"cases": [],
|
|
||||||
"source_file": "strategy/全球-本土比较研究与全新内容战略规划-2026-04-15.md",
|
|
||||||
"created_at": "2026-04-16T09:42:54.436675",
|
|
||||||
"ready_at": "2026-04-18",
|
|
||||||
"compliance_score": 100
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "C02",
|
|
||||||
"title": "PKM极简实践:PARA系统在Notion上的落地模板",
|
|
||||||
"field": "个人知识工厂",
|
|
||||||
"format": "模板分享 + 方法论",
|
|
||||||
"core_concept": "将Tiago Forte的PARA体系简化为3个核心文件夹,每周10分钟维护,AI辅助整理,让中国人真正用起来",
|
|
||||||
"audience_pain": "学了方法坚持不了,工具复杂难上手",
|
|
||||||
"unique_angle": "极简版(4个区)+ 每日5分钟习惯养成,降低门槛",
|
|
||||||
"priority": "中",
|
|
||||||
"priority_score": 7,
|
|
||||||
"total_score": 51,
|
|
||||||
"status": "待处理",
|
|
||||||
"cases": [],
|
|
||||||
"source_file": "strategy/全球-本土比较研究与全新内容战略规划-2026-04-15.md",
|
|
||||||
"created_at": "2026-04-16T09:42:54.436677"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "C03",
|
|
||||||
"title": "费曼学习法AI增强:如何让AI帮你'教'懂一个概念",
|
|
||||||
"field": "个人知识工厂",
|
|
||||||
"format": "方法论 + 实践工具",
|
|
||||||
"core_concept": "结合经典费曼技巧与AI工具,三步法(AI简化→自我复述→Gap识别)+ 输出倒逼输入",
|
|
||||||
"audience_pain": "学东西记不住,自以为懂了但其实不会",
|
|
||||||
"unique_angle": "用AI当'测试官',验证你的理解深度,非被动接受知识",
|
|
||||||
"priority": "中",
|
|
||||||
"priority_score": 7,
|
|
||||||
"total_score": 50,
|
|
||||||
"status": "待处理",
|
|
||||||
"cases": [],
|
|
||||||
"source_file": "strategy/全球-本土比较研究与全新内容战略规划-2026-04-15.md",
|
|
||||||
"created_at": "2026-04-16T09:42:54.436679"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "C04",
|
|
||||||
"title": "AI个人助理搭建:从ChatGPT到私有化部署的完整路线",
|
|
||||||
"field": "个人知识工厂",
|
|
||||||
"format": "技术路线图 + 成本分析",
|
|
||||||
"core_concept": "基于海外个人AI助手普及现状,针对国内数据安全顾虑,提供从API调用到本地部署的渐进式方案(成本可控)",
|
|
||||||
"audience_pain": "想用AI助手但又怕数据泄露,不知如何起步",
|
|
||||||
"unique_angle": "不是直接推本地部署(成本高),而是API优先,敏感时再本地策略",
|
|
||||||
"priority": "中",
|
|
||||||
"priority_score": 7,
|
|
||||||
"total_score": 50,
|
|
||||||
"status": "待处理",
|
|
||||||
"cases": [],
|
|
||||||
"source_file": "strategy/全球-本土比较研究与全新内容战略规划-2026-04-15.md",
|
|
||||||
"created_at": "2026-04-16T09:42:54.436680"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "C05",
|
|
||||||
"title": "技能树可视化:用思维导图规划5年职业路径",
|
|
||||||
"field": "个人知识工厂",
|
|
||||||
"format": "方法论 + 工具模板",
|
|
||||||
"core_concept": "借鉴化工业界能力模型,构建硬技能×软技能矩阵,行业对标和学习资源聚合,让职业成长可规划",
|
|
||||||
"audience_pain": "不知道学什么,学了不知道用在哪,职业迷茫",
|
|
||||||
"unique_angle": "技能树而非技能列表,展示技能间关联和成长路径",
|
|
||||||
"priority": "中",
|
|
||||||
"priority_score": 7,
|
|
||||||
"total_score": 49,
|
|
||||||
"status": "待处理",
|
|
||||||
"cases": [],
|
|
||||||
"source_file": "strategy/全球-本土比较研究与全新内容战略规划-2026-04-15.md",
|
|
||||||
"created_at": "2026-04-16T09:42:54.436682"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "D01",
|
|
||||||
"title": "AI伦理实践指南:开发者在中国的合规清单",
|
|
||||||
"field": "科技人文交叉",
|
|
||||||
"format": "合规指南 + 案例分析",
|
|
||||||
"core_concept": "对比EU AI Act与中国算法推荐管理规定,提供数据隐私、歧视检测、透明度义务、备案流程的自查清单",
|
|
||||||
"audience_pain": "开发者不了解国内AI伦理法规,怕踩雷",
|
|
||||||
"unique_angle": "不是泛泛而谈伦理,而是具体到'备案流程'和'自查表',即拿即用",
|
|
||||||
"priority": "高",
|
|
||||||
"priority_score": 10,
|
|
||||||
"total_score": 51,
|
|
||||||
"status": "待处理",
|
|
||||||
"cases": [],
|
|
||||||
"source_file": "strategy/全球-本土比较研究与全新内容战略规划-2026-04-15.md",
|
|
||||||
"created_at": "2026-04-16T09:42:54.436687",
|
|
||||||
"ready_at": "2026-04-16",
|
|
||||||
"compliance_score": 100
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "D02",
|
|
||||||
"title": "数字排毒月:戒掉微信/抖音后,生活发生了什么",
|
|
||||||
"field": "科技人文交叉",
|
|
||||||
"format": "实践实验 + 效果分析",
|
|
||||||
"core_concept": "对比硅谷禅修热与中国'失联恐惧',采用渐进式戒断(无屏时段)+ 替代活动 + 社交边界管理",
|
|
||||||
"audience_pain": "想减少屏幕时间但又怕错过重要信息,自律困难",
|
|
||||||
"unique_angle": "真实实验记录(not理论),展示戒断前后的生活变化数据",
|
|
||||||
"priority": "中",
|
|
||||||
"priority_score": 7,
|
|
||||||
"total_score": 50,
|
|
||||||
"status": "待处理",
|
|
||||||
"cases": [],
|
|
||||||
"source_file": "strategy/全球-本土比较研究与全新内容战略规划-2026-04-15.md",
|
|
||||||
"created_at": "2026-04-16T09:42:54.436689"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "D03",
|
|
||||||
"title": "银发科技报告:给爸妈装智能设备,学到的5个设计原则",
|
|
||||||
"field": "科技人文交叉",
|
|
||||||
"format": "设计原则 + 案例",
|
|
||||||
"core_concept": "对比日本适老化设计与国产'适老模式'鸡肋,提炼简化选项、物理反馈、容错设计、情感连接的具体方案",
|
|
||||||
"audience_pain": "给父母买智能设备但他们不用,功能复杂",
|
|
||||||
"unique_angle": "不是推荐产品,而是总结5个设计原则,让读者自己改造设备",
|
|
||||||
"priority": "中",
|
|
||||||
"priority_score": 7,
|
|
||||||
"total_score": 49,
|
|
||||||
"status": "待处理",
|
|
||||||
"cases": [],
|
|
||||||
"source_file": "strategy/全球-本土比较研究与全新内容战略规划-2026-04-15.md",
|
|
||||||
"created_at": "2026-04-16T09:42:54.436690"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "D04",
|
|
||||||
"title": "儿童数字素养课:10岁儿子的AI启蒙12周",
|
|
||||||
"field": "科技人文交叉",
|
|
||||||
"format": "教育日志 + 方法论",
|
|
||||||
"core_concept": "对比芬兰AI教育与国内家长'禁止接触'心态,通过每周1次'AI家庭时间',培养批判性思维和创造力",
|
|
||||||
"audience_pain": "不知如何让孩子正确认识AI,怕沉迷又怕脱节",
|
|
||||||
"unique_angle": "真实父子12周项目记录,提供可复制的课程大纲",
|
|
||||||
"priority": "中",
|
|
||||||
"priority_score": 7,
|
|
||||||
"total_score": 48,
|
|
||||||
"status": "待处理",
|
|
||||||
"cases": [],
|
|
||||||
"source_file": "strategy/全球-本土比较研究与全新内容战略规划-2026-04-15.md",
|
|
||||||
"created_at": "2026-04-16T09:42:54.436692"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "D05",
|
|
||||||
"title": "科技与自然共生:如何用AI让阳台农场更'自然'",
|
|
||||||
"field": "科技人文交叉",
|
|
||||||
"format": "理念 + 实操方案",
|
|
||||||
"core_concept": "对比荷兰智能温室与中国人'回归原始'误区,实现技术隐形化(传感器+提醒)+ 自然反馈闭环 + 人工仪式感",
|
|
||||||
"audience_pain": "想用科技但又怕失去'自然感',追求矛盾",
|
|
||||||
"unique_angle": "技术与情感连接的平衡方案,AI只做幕后,人工保留仪式",
|
|
||||||
"priority": "高",
|
|
||||||
"priority_score": 10,
|
|
||||||
"total_score": 48,
|
|
||||||
"status": "待处理",
|
|
||||||
"cases": [],
|
|
||||||
"source_file": "strategy/全球-本土比较研究与全新内容战略规划-2026-04-15.md",
|
|
||||||
"created_at": "2026-04-16T09:42:54.436694",
|
|
||||||
"ready_at": "2026-04-16",
|
|
||||||
"compliance_score": 100
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "TOPIC-.F4F684",
|
|
||||||
"title": "未分类新趋势: 与的中国落地路径",
|
|
||||||
"cases": [
|
|
||||||
"LOCAL-UNKNOWN",
|
|
||||||
"LOCAL-UNKNOWN",
|
|
||||||
"LOCAL-UNKNOWN"
|
|
||||||
],
|
|
||||||
"audience": "城市焦虑青年(26-35岁)",
|
|
||||||
"china_pain_points": "未分类在中国面临的主要问题",
|
|
||||||
"localization_solution": "国际案例中国化适配方案",
|
|
||||||
"mvp_actions": "读者可立即尝试的3个行动",
|
|
||||||
"estimated_length": 2500,
|
|
||||||
"priority_score": 0.78,
|
|
||||||
"status": "待处理",
|
|
||||||
"lock_by": null,
|
|
||||||
"lock_at": null,
|
|
||||||
"created_at": "2026-04-18T18:26:25.984697"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "TOPIC-.285EC9",
|
|
||||||
"title": "未分类新趋势: 与的中国落地路径",
|
|
||||||
"cases": [
|
|
||||||
"LOCAL-UNKNOWN",
|
|
||||||
"LOCAL-UNKNOWN",
|
|
||||||
"LOCAL-UNKNOWN"
|
|
||||||
],
|
|
||||||
"audience": "城市焦虑青年(26-35岁)",
|
|
||||||
"china_pain_points": "未分类在中国面临的主要问题",
|
|
||||||
"localization_solution": "国际案例中国化适配方案",
|
|
||||||
"mvp_actions": "读者可立即尝试的3个行动",
|
|
||||||
"estimated_length": 2500,
|
|
||||||
"priority_score": 0.78,
|
|
||||||
"status": "待处理",
|
|
||||||
"lock_by": null,
|
|
||||||
"lock_at": null,
|
|
||||||
"created_at": "2026-04-19T05:00:54.473396"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
@@ -0,0 +1,187 @@
|
|||||||
|
{
|
||||||
|
"date": "2026-05-10",
|
||||||
|
"gaps": [
|
||||||
|
{
|
||||||
|
"domain": "远程工作",
|
||||||
|
"topic": "远程工作2.0时代",
|
||||||
|
"reason": "疫情后远程工作模式持续升级,企业与员工探索新型协作方式",
|
||||||
|
"hot_keywords": [
|
||||||
|
"异步协作",
|
||||||
|
"数字游牧",
|
||||||
|
"远程团队管理"
|
||||||
|
],
|
||||||
|
"platform": "知乎"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"domain": "AI工具",
|
||||||
|
"topic": "AI绘画工具大战",
|
||||||
|
"reason": "MidJourney、Stable Diffusion等工具更新迭代,用户创作热情高涨",
|
||||||
|
"hot_keywords": [
|
||||||
|
"AI绘画",
|
||||||
|
"提示词工程",
|
||||||
|
"商用授权"
|
||||||
|
],
|
||||||
|
"platform": "微博"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"domain": "可持续生活",
|
||||||
|
"topic": "低碳生活实践",
|
||||||
|
"reason": "碳中和目标推动下,个人可持续生活方式成为热门讨论",
|
||||||
|
"hot_keywords": [
|
||||||
|
"零废弃",
|
||||||
|
"二手经济",
|
||||||
|
"绿色出行"
|
||||||
|
],
|
||||||
|
"platform": "小红书"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"domain": "知识管理",
|
||||||
|
"topic": "第二大脑(Zettelkasten)",
|
||||||
|
"reason": "知识工作者追求高效学习与输出,个人知识管理系统流行",
|
||||||
|
"hot_keywords": [
|
||||||
|
"Obsidian",
|
||||||
|
"卡片笔记法",
|
||||||
|
"知识连接"
|
||||||
|
],
|
||||||
|
"platform": "知乎"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"domain": "数字生活",
|
||||||
|
"topic": "数字极简主义",
|
||||||
|
"reason": "信息过载背景下,用户开始主动减少数字干扰",
|
||||||
|
"hot_keywords": [
|
||||||
|
"数字断舍离",
|
||||||
|
"专注力管理",
|
||||||
|
"低刺激设计"
|
||||||
|
],
|
||||||
|
"platform": "微博"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"domain": "科技人文",
|
||||||
|
"topic": "元宇宙伦理",
|
||||||
|
"reason": "虚拟世界发展引发关于隐私、身份与社会关系的深度讨论",
|
||||||
|
"hot_keywords": [
|
||||||
|
"数字身份",
|
||||||
|
"虚拟伦理",
|
||||||
|
"元宇宙治理"
|
||||||
|
],
|
||||||
|
"platform": "知乎"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"domain": "远程工作",
|
||||||
|
"topic": "远程工作税务问题",
|
||||||
|
"reason": "跨境远程工作带来的税务合规性成为热议焦点",
|
||||||
|
"hot_keywords": [
|
||||||
|
"远程税务",
|
||||||
|
"数字游牧税",
|
||||||
|
"跨境合规"
|
||||||
|
],
|
||||||
|
"platform": "微博"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"domain": "AI工具",
|
||||||
|
"topic": "AI辅助写作",
|
||||||
|
"reason": "ChatGPT等工具推动内容创作效率提升,引发创作伦理讨论",
|
||||||
|
"hot_keywords": [
|
||||||
|
"AI写作",
|
||||||
|
"内容原创性",
|
||||||
|
"AI辅助创作"
|
||||||
|
],
|
||||||
|
"platform": "小红书"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"domain": "可持续生活",
|
||||||
|
"topic": "城市垂直农业",
|
||||||
|
"reason": "城市化进程中,本地化食品生产成为可持续发展新方向",
|
||||||
|
"hot_keywords": [
|
||||||
|
"屋顶农场",
|
||||||
|
"水培种植",
|
||||||
|
"本地供应链"
|
||||||
|
],
|
||||||
|
"platform": "知乎"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"domain": "数字生活",
|
||||||
|
"topic": "数字遗产管理",
|
||||||
|
"reason": "数字资产继承问题随着老龄化社会到来受到关注",
|
||||||
|
"hot_keywords": [
|
||||||
|
"数字遗嘱",
|
||||||
|
"账号继承",
|
||||||
|
"数字身后事"
|
||||||
|
],
|
||||||
|
"platform": "微博"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"suggestions": [
|
||||||
|
{
|
||||||
|
"title": "远程工作2.0:企业与员工的新协作",
|
||||||
|
"field": "职场与管理",
|
||||||
|
"core_concept": "疫情后远程工作模式持续升级,企业与员工探索新型协作方式",
|
||||||
|
"audience_pain": "如何在远程工作中保持高效协作与团队凝聚力",
|
||||||
|
"unique_angle": "从企业与员工双方视角分析远程工作2.0的实践与挑战"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "AI绘画工具大战:创作革命还是泡沫?",
|
||||||
|
"field": "科技与创意",
|
||||||
|
"core_concept": "MidJourney、Stable Diffusion等工具更新迭代,用户创作热情高涨",
|
||||||
|
"audience_pain": "如何在AI工具辅助下提升创作效率与质量",
|
||||||
|
"unique_angle": "探讨AI绘画工具对传统艺术行业的影响与未来发展趋势"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "低碳生活实践:你的每个选择都在改变世界",
|
||||||
|
"field": "环保与可持续",
|
||||||
|
"core_concept": "碳中和目标推动下,个人可持续生活方式成为热门讨论",
|
||||||
|
"audience_pain": "如何在日常生活中实践低碳,减少个人碳足迹",
|
||||||
|
"unique_angle": "从个人行为到社会影响,探索低碳生活的实践与意义"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "第二大脑:知识管理的终极武器",
|
||||||
|
"field": "学习与生产力",
|
||||||
|
"core_concept": "知识工作者追求高效学习与输出,个人知识管理系统流行",
|
||||||
|
"audience_pain": "如何高效管理知识,提升学习与工作效率",
|
||||||
|
"unique_angle": "Zettelkasten方法的实践与优化,适用于不同场景的知识管理技巧"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "数字极简主义:减少干扰,提升专注力",
|
||||||
|
"field": "数字生活",
|
||||||
|
"core_concept": "信息过载背景下,用户开始主动减少数字干扰",
|
||||||
|
"audience_pain": "如何在数字化时代保持专注,减少信息过载",
|
||||||
|
"unique_angle": "数字极简主义的实践方法与工具推荐,提升生活质量"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "元宇宙伦理:虚拟世界的道德边界",
|
||||||
|
"field": "科技与人文",
|
||||||
|
"core_concept": "虚拟世界发展引发关于隐私、身份与社会关系的深度讨论",
|
||||||
|
"audience_pain": "如何在元宇宙中保护个人隐私与身份安全",
|
||||||
|
"unique_angle": "探讨元宇宙伦理的核心问题与可能的解决方案"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "远程工作税务问题:跨境远程工作的合规指南",
|
||||||
|
"field": "职场与财务",
|
||||||
|
"core_concept": "跨境远程工作带来的税务合规性成为热议焦点",
|
||||||
|
"audience_pain": "如何在跨境远程工作中遵守税务法规,避免合规风险",
|
||||||
|
"unique_angle": "从法律与实践角度分析远程工作税务问题的解决方案"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "AI辅助写作:创作效率的提升与伦理的思考",
|
||||||
|
"field": "科技与创意",
|
||||||
|
"core_concept": "ChatGPT等工具推动内容创作效率提升,引发创作伦理讨论",
|
||||||
|
"audience_pain": "如何利用AI工具提升创作效率,同时保持内容原创性",
|
||||||
|
"unique_angle": "探讨AI辅助写作的最佳实践与伦理边界"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "城市垂直农业:未来食品生产的新方向",
|
||||||
|
"field": "环保与可持续",
|
||||||
|
"core_concept": "城市化进程中,本地化食品生产成为可持续发展新方向",
|
||||||
|
"audience_pain": "如何在城市中实现可持续的食品生产与供应",
|
||||||
|
"unique_angle": "城市垂直农业的技术与实践,探索未来食品生产的可能性"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "数字遗产管理:老龄化社会的新挑战",
|
||||||
|
"field": "数字生活",
|
||||||
|
"core_concept": "数字资产继承问题随着老龄化社会到来受到关注",
|
||||||
|
"audience_pain": "如何管理与传承数字资产,避免遗产纠纷",
|
||||||
|
"unique_angle": "数字遗产管理的法律与实践指南,保护个人数字资产"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
PROJECT_ROOT="/root/.openclaw/workspaces/yzr-yxl/projects/yu-zhi-ran"
|
PROJECT_ROOT="/root/openclaw-workspace/projects/yu-zhi-ran"
|
||||||
MARKDOWN_FILE="$PROJECT_ROOT/content/drafts/001-wechat.md"
|
MARKDOWN_FILE="$PROJECT_ROOT/content/drafts/001-wechat.md"
|
||||||
COVER_IMG="$PROJECT_ROOT/content/publishing/images/05-封面图.png"
|
COVER_IMG="$PROJECT_ROOT/content/publishing/images/05-封面图.png"
|
||||||
|
|
||||||
|
|||||||
@@ -1,138 +0,0 @@
|
|||||||
#!/usr/bin/env python3
|
|
||||||
"""
|
|
||||||
将 Markdown 文章转换为 Word 文档,嵌入图片
|
|
||||||
"""
|
|
||||||
|
|
||||||
import os
|
|
||||||
import re
|
|
||||||
from docx import Document
|
|
||||||
from docx.shared import Inches, Pt, RGBColor
|
|
||||||
from docx.enum.text import WD_ALIGN_PARAGRAPH
|
|
||||||
|
|
||||||
# 路径配置
|
|
||||||
MARKDOWN_FILE = "/root/.openclaw/workspaces/yzr-yxl/projects/yu-zhi-ran/content/published/2026-04-14-上海阳台种菜一年/final-article.md"
|
|
||||||
IMAGES_DIR = "/root/.openclaw/workspaces/yzr-yxl/projects/yu-zhi-ran/content/publishing/images"
|
|
||||||
OUTPUT_DOCX = "/root/.openclaw/workspaces/yzr-yxl/projects/yu-zhi-ran/content/published/2026-04-14-上海阳台种菜一年/上海阳台种菜一年_最终版.docx"
|
|
||||||
|
|
||||||
# 读取 Markdown
|
|
||||||
with open(MARKDOWN_FILE, "r", encoding="utf-8") as f:
|
|
||||||
lines = f.readlines()
|
|
||||||
|
|
||||||
doc = Document()
|
|
||||||
doc.styles['Normal'].font.name = '微软雅黑'
|
|
||||||
doc.styles['Normal'].font.size = Pt(11)
|
|
||||||
|
|
||||||
# 样式函数
|
|
||||||
def add_heading(text, level=1):
|
|
||||||
heading = doc.add_heading(text, level=level)
|
|
||||||
heading.alignment = WD_ALIGN_PARAGRAPH.LEFT
|
|
||||||
return heading
|
|
||||||
|
|
||||||
def add_paragraph(text, bold=False, italic=False):
|
|
||||||
p = doc.add_paragraph()
|
|
||||||
run = p.add_run(text)
|
|
||||||
run.bold = bold
|
|
||||||
run.italic = italic
|
|
||||||
return p
|
|
||||||
|
|
||||||
# 解析 Markdown
|
|
||||||
in_code_block = False
|
|
||||||
in_table = False
|
|
||||||
table_data = []
|
|
||||||
|
|
||||||
for i, line in enumerate(lines):
|
|
||||||
line = line.rstrip('\n')
|
|
||||||
|
|
||||||
# 代码块跳过
|
|
||||||
if line.startswith('```'):
|
|
||||||
in_code_block = not in_code_block
|
|
||||||
continue
|
|
||||||
if in_code_block:
|
|
||||||
continue
|
|
||||||
|
|
||||||
# 标题
|
|
||||||
if line.startswith('# '):
|
|
||||||
add_heading(line[2:], level=1)
|
|
||||||
continue
|
|
||||||
if line.startswith('## '):
|
|
||||||
add_heading(line[3:], level=2)
|
|
||||||
continue
|
|
||||||
if line.startswith('### '):
|
|
||||||
add_heading(line[4:], level=3)
|
|
||||||
continue
|
|
||||||
|
|
||||||
# 表格处理(简化:将表格转为文本,图片位置用占位)
|
|
||||||
if line.startswith('|'):
|
|
||||||
in_table = True
|
|
||||||
table_data.append(line)
|
|
||||||
continue
|
|
||||||
if in_table and not line.startswith('|'):
|
|
||||||
in_table = False
|
|
||||||
# 可以在此转换表格,为简化直接跳过
|
|
||||||
continue
|
|
||||||
|
|
||||||
# 图片:
|
|
||||||
img_match = re.match(r'!\[(.*?)\]\((images/.*?)\)', line)
|
|
||||||
if img_match:
|
|
||||||
alt, path = img_match.groups()
|
|
||||||
img_full_path = os.path.join(os.path.dirname(MARKDOWN_FILE), path)
|
|
||||||
if os.path.exists(img_full_path):
|
|
||||||
try:
|
|
||||||
# 插入图片,宽度 6 英寸(约 15cm)
|
|
||||||
doc.add_picture(img_full_path, width=Inches(6))
|
|
||||||
# 居中
|
|
||||||
last_para = doc.paragraphs[-1]
|
|
||||||
last_para.alignment = WD_ALIGN_PARAGRAPH.CENTER
|
|
||||||
# 添加图片说明(可选)
|
|
||||||
if alt:
|
|
||||||
cap = doc.add_paragraph(alt)
|
|
||||||
cap.alignment = WD_ALIGN_PARAGRAPH.CENTER
|
|
||||||
cap.style = 'Caption'
|
|
||||||
except Exception as e:
|
|
||||||
doc.add_paragraph(f"[图片加载失败: {path}]")
|
|
||||||
else:
|
|
||||||
doc.add_paragraph(f"[图片缺失: {img_full_path}]")
|
|
||||||
continue
|
|
||||||
|
|
||||||
# 引用
|
|
||||||
if line.startswith('> '):
|
|
||||||
p = doc.add_paragraph(line[2:])
|
|
||||||
p.paragraph_format.left_indent = Inches(0.5)
|
|
||||||
p.italic = True
|
|
||||||
continue
|
|
||||||
|
|
||||||
# 列表
|
|
||||||
if re.match(r'^[-*] ', line):
|
|
||||||
p = doc.add_paragraph(line[2:], style='List Bullet')
|
|
||||||
continue
|
|
||||||
if re.match(r'^\d+\. ', line):
|
|
||||||
p = doc.add_paragraph(line[line.find('.')+2:], style='List Number')
|
|
||||||
continue
|
|
||||||
|
|
||||||
# 分隔线
|
|
||||||
if line.strip() == '---':
|
|
||||||
doc.add_paragraph('_' * 50)
|
|
||||||
continue
|
|
||||||
|
|
||||||
# 普通段落
|
|
||||||
if line.strip():
|
|
||||||
# 处理行内加粗、斜体
|
|
||||||
p = doc.add_paragraph()
|
|
||||||
parts = re.split(r'(\*\*[^*]+\*\*|\*[^*]+\*)', line)
|
|
||||||
for part in parts:
|
|
||||||
if part.startswith('**') and part.endswith('**'):
|
|
||||||
run = p.add_run(part[2:-2])
|
|
||||||
run.bold = True
|
|
||||||
elif part.startswith('*') and part.endswith('*'):
|
|
||||||
run = p.add_run(part[1:-1])
|
|
||||||
run.italic = True
|
|
||||||
else:
|
|
||||||
run = p.add_run(part)
|
|
||||||
else:
|
|
||||||
doc.add_paragraph() # 空行
|
|
||||||
|
|
||||||
# 保存文档
|
|
||||||
doc.save(OUTPUT_DOCX)
|
|
||||||
print(f"✅ Word 文档已生成: {OUTPUT_DOCX}")
|
|
||||||
print(f"📄 页数: {len(doc.paragraphs)} 段落")
|
|
||||||
print(f"🖼️ 图片路径: {IMAGES_DIR}")
|
|
||||||
@@ -1,93 +0,0 @@
|
|||||||
#!/usr/bin/env python3
|
|
||||||
"""
|
|
||||||
生成 Word 文档,图片从发布目录的 images 文件夹读取
|
|
||||||
"""
|
|
||||||
|
|
||||||
import os
|
|
||||||
from docx import Document
|
|
||||||
from docx.shared import Inches, Pt
|
|
||||||
from docx.enum.text import WD_ALIGN_PARAGRAPH
|
|
||||||
|
|
||||||
BASE_DIR = "/root/.openclaw/workspaces/yzr-yxl/projects/yu-zhi-ran/content/published/2026-04-14-上海阳台种菜一年"
|
|
||||||
MD_FILE = os.path.join(BASE_DIR, "final-article.md")
|
|
||||||
IMAGES_DIR = os.path.join(BASE_DIR, "images") # 已复制的图片
|
|
||||||
OUTPUT_DOCX = os.path.join(BASE_DIR, "上海阳台种菜一年_最终版.docx")
|
|
||||||
|
|
||||||
with open(MD_FILE, "r", encoding="utf-8") as f:
|
|
||||||
lines = f.readlines()
|
|
||||||
|
|
||||||
doc = Document()
|
|
||||||
doc.styles['Normal'].font.name = '微软雅黑'
|
|
||||||
doc.styles['Normal'].font.size = Pt(11)
|
|
||||||
|
|
||||||
def add_heading(text, level=1):
|
|
||||||
heading = doc.add_heading(text, level=level)
|
|
||||||
heading.alignment = WD_ALIGN_PARAGRAPH.LEFT
|
|
||||||
return heading
|
|
||||||
|
|
||||||
for line in lines:
|
|
||||||
line = line.rstrip('\n')
|
|
||||||
|
|
||||||
if line.startswith('# '):
|
|
||||||
add_heading(line[2:], level=1)
|
|
||||||
continue
|
|
||||||
if line.startswith('## '):
|
|
||||||
add_heading(line[3:], level=2)
|
|
||||||
continue
|
|
||||||
if line.startswith('### '):
|
|
||||||
add_heading(line[4:], level=3)
|
|
||||||
continue
|
|
||||||
if line.startswith('---'):
|
|
||||||
doc.add_paragraph('_' * 60)
|
|
||||||
continue
|
|
||||||
|
|
||||||
# 图片
|
|
||||||
if line.startswith('!['):
|
|
||||||
import re
|
|
||||||
m = re.match(r'!\[(.*?)\]\((images/.*?)\)', line)
|
|
||||||
if m:
|
|
||||||
alt, fname = m.groups()
|
|
||||||
img_path = os.path.join(IMAGES_DIR, os.path.basename(fname))
|
|
||||||
if os.path.exists(img_path):
|
|
||||||
try:
|
|
||||||
doc.add_picture(img_path, width=Inches(6))
|
|
||||||
last_para = doc.paragraphs[-1]
|
|
||||||
last_para.alignment = WD_ALIGN_PARAGRAPH.CENTER
|
|
||||||
except Exception as e:
|
|
||||||
doc.add_paragraph(f"[图片错误: {fname}]")
|
|
||||||
else:
|
|
||||||
doc.add_paragraph(f"[缺失图片: {fname}]")
|
|
||||||
continue
|
|
||||||
|
|
||||||
# 空行
|
|
||||||
if not line.strip():
|
|
||||||
doc.add_paragraph()
|
|
||||||
continue
|
|
||||||
|
|
||||||
# 普通段落,处理粗体斜体
|
|
||||||
p = doc.add_paragraph()
|
|
||||||
parts = []
|
|
||||||
tmp = line
|
|
||||||
while '**' in tmp:
|
|
||||||
parts.append(tmp[:tmp.find('**')])
|
|
||||||
tmp = tmp[tmp.find('**')+2:]
|
|
||||||
if '**' in tmp:
|
|
||||||
parts.append(('bold', tmp[:tmp.find('**')]))
|
|
||||||
tmp = tmp[tmp.find('**')+2:]
|
|
||||||
else:
|
|
||||||
parts.append(('bold', tmp))
|
|
||||||
break
|
|
||||||
if not parts:
|
|
||||||
parts = [line]
|
|
||||||
|
|
||||||
for part in parts:
|
|
||||||
if isinstance(part, tuple):
|
|
||||||
style, text = part
|
|
||||||
run = p.add_run(text)
|
|
||||||
run.bold = (style == 'bold')
|
|
||||||
else:
|
|
||||||
p.add_run(part)
|
|
||||||
|
|
||||||
doc.save(OUTPUT_DOCX)
|
|
||||||
print(f"✅ Word 已生成: {OUTPUT_DOCX}")
|
|
||||||
print(f"📄 段落数: {len(doc.paragraphs)}")
|
|
||||||
@@ -1,74 +0,0 @@
|
|||||||
#!/usr/bin/env python3
|
|
||||||
"""
|
|
||||||
生成 HTML,图片使用相对路径 'images/xxx.png'(确保图片在发布目录的 images 子文件夹中)
|
|
||||||
"""
|
|
||||||
|
|
||||||
import os
|
|
||||||
import re
|
|
||||||
|
|
||||||
BASE_DIR = "/root/.openclaw/workspaces/yzr-yxl/projects/yu-zhi-ran/content/published/2026-04-14-上海阳台种菜一年"
|
|
||||||
MD_FILE = os.path.join(BASE_DIR, "final-article.md")
|
|
||||||
OUT_HTML = os.path.join(BASE_DIR, "上海阳台种菜一年_可复制.html")
|
|
||||||
|
|
||||||
with open(MD_FILE, "r", encoding="utf-8") as f:
|
|
||||||
content = f.read()
|
|
||||||
|
|
||||||
# 替换图片为 HTML img 标签,保持相对路径
|
|
||||||
def replace_img(match):
|
|
||||||
alt, path = match.groups()
|
|
||||||
return f'<img src="{path}" alt="{alt}" style="max-width:100%; margin:20px 0; display:block;">'
|
|
||||||
|
|
||||||
content = re.sub(r'!\[(.*?)\]\((images/.*?)\)', replace_img, content)
|
|
||||||
|
|
||||||
# 转换 Markdown 为 HTML
|
|
||||||
html_lines = []
|
|
||||||
for line in content.split('\n'):
|
|
||||||
if line.startswith('# '):
|
|
||||||
html_lines.append(f'<h1>{line[2:]}</h1>')
|
|
||||||
elif line.startswith('## '):
|
|
||||||
html_lines.append(f'<h2>{line[3:]}</h2>')
|
|
||||||
elif line.startswith('### '):
|
|
||||||
html_lines.append(f'<h3>{line[4:]}</h3>')
|
|
||||||
elif line.startswith('---'):
|
|
||||||
html_lines.append('<hr style="border:none;border-top:2px dashed #ddd;margin:40px 0;">')
|
|
||||||
elif line.startswith('> '):
|
|
||||||
html_lines.append(f'<blockquote style="border-left:4px solid #4CAF50;background:#f9f9f9;padding:10px 20px;margin:20px 0;color:#666;">{line[2:]}</blockquote>')
|
|
||||||
elif re.match(r'^[-*] ', line):
|
|
||||||
html_lines.append(f'<li>{line[2:]}</li>')
|
|
||||||
elif re.match(r'^\d+\. ', line):
|
|
||||||
html_lines.append(f'<li>{line[line.find(". ")+2:]}</li>')
|
|
||||||
elif line.strip() == '':
|
|
||||||
html_lines.append('<br>')
|
|
||||||
else:
|
|
||||||
# 处理行内粗体斜体
|
|
||||||
tmp = re.sub(r'\*\*(.*?)\*\*', r'<strong>\1</strong>', line)
|
|
||||||
tmp = re.sub(r'\*(.*?)\*', r'<em>\1</em>', tmp)
|
|
||||||
html_lines.append(f'<p>{tmp}</p>')
|
|
||||||
|
|
||||||
html = f'''<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<title>上海阳台种菜一年</title>
|
|
||||||
<style>
|
|
||||||
body {{ font-family: "Microsoft YaHei", sans-serif; max-width: 800px; margin: 0 auto; padding: 20px; line-height: 1.8; }}
|
|
||||||
h1 {{ font-size: 28px; border-bottom: 2px solid #4CAF50; padding-bottom: 10px; }}
|
|
||||||
h2 {{ font-size: 24px; margin-top: 40px; border-left: 4px solid #4CAF50; padding-left: 10px; }}
|
|
||||||
h3 {{ font-size: 20px; margin-top: 30px; color: #666; }}
|
|
||||||
img {{ max-width: 100%; height: auto; border-radius: 4px; margin: 20px 0; display: block; margin-left: auto; margin-right: auto; }}
|
|
||||||
blockquote {{ border-left: 4px solid #4CAF50; background: #f9f9f9; padding: 10px 20px; margin: 20px 0; color: #666; }}
|
|
||||||
li {{ margin-bottom: 8px; }}
|
|
||||||
p {{ margin-bottom: 16px; }}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
{chr(10).join(html_lines)}
|
|
||||||
</body>
|
|
||||||
</html>'''
|
|
||||||
|
|
||||||
with open(OUT_HTML, "w", encoding="utf-8") as f:
|
|
||||||
f.write(html)
|
|
||||||
|
|
||||||
print(f"✅ HTML 已生成: {OUT_HTML}")
|
|
||||||
print(f"📊 字符数: {len(content)}")
|
|
||||||
print(f"🖼️ 图片路径: images/ (需与 HTML 同目录的 images 文件夹)")
|
|
||||||
@@ -1,90 +0,0 @@
|
|||||||
#!/usr/bin/env python3
|
|
||||||
"""
|
|
||||||
生成图文混排的 HTML(图片内联为 base64),方便直接复制
|
|
||||||
"""
|
|
||||||
|
|
||||||
import os
|
|
||||||
import re
|
|
||||||
import base64
|
|
||||||
|
|
||||||
BASE_DIR = "/root/.openclaw/workspaces/yzr-yxl/projects/yu-zhi-ran/content/published/2026-04-14-上海阳台种菜一年"
|
|
||||||
MD_FILE = os.path.join(BASE_DIR, "final-article.md")
|
|
||||||
IMAGES_DIR = os.path.join(BASE_DIR, "images") # 使用发布目录内的 images
|
|
||||||
OUT_HTML = os.path.join(BASE_DIR, "上海阳台种菜一年_内联.html")
|
|
||||||
|
|
||||||
# 读取 Markdown
|
|
||||||
with open(MD_FILE, "r", encoding="utf-8") as f:
|
|
||||||
content = f.read()
|
|
||||||
|
|
||||||
# 预加载图片并转为 base64
|
|
||||||
image_cache = {}
|
|
||||||
for fname in os.listdir(IMAGES_DIR):
|
|
||||||
if fname.endswith('.png'):
|
|
||||||
path = os.path.join(IMAGES_DIR, fname)
|
|
||||||
with open(path, "rb") as imgf:
|
|
||||||
b64 = base64.b64encode(imgf.read()).decode('utf-8')
|
|
||||||
image_cache[fname] = b64
|
|
||||||
|
|
||||||
# 替换图片
|
|
||||||
def replace_img(match):
|
|
||||||
alt = match.group(1)
|
|
||||||
fname = match.group(2)
|
|
||||||
key = os.path.basename(fname)
|
|
||||||
if key in image_cache:
|
|
||||||
return f'<img src="data:image/png;base64,{image_cache[key]}" alt="{alt}" style="max-width:100%; margin:20px 0; display:block;">'
|
|
||||||
else:
|
|
||||||
return f'<p>[图片缺失: {fname}]</p>'
|
|
||||||
|
|
||||||
content = re.sub(r'!\[(.*?)\]\((images/.*?)\)', replace_img, content)
|
|
||||||
|
|
||||||
# Markdown 转 HTML
|
|
||||||
html_lines = []
|
|
||||||
for line in content.split('\n'):
|
|
||||||
if line.startswith('# '):
|
|
||||||
html_lines.append(f'<h1>{line[2:]}</h1>')
|
|
||||||
elif line.startswith('## '):
|
|
||||||
html_lines.append(f'<h2>{line[3:]}</h2>')
|
|
||||||
elif line.startswith('### '):
|
|
||||||
html_lines.append(f'<h3>{line[4:]}</h3>')
|
|
||||||
elif line.startswith('---'):
|
|
||||||
html_lines.append('<hr>')
|
|
||||||
elif line.startswith('> '):
|
|
||||||
html_lines.append(f'<blockquote>{line[2:]}</blockquote>')
|
|
||||||
elif re.match(r'^[-*] ', line):
|
|
||||||
html_lines.append(f'<li>{line[2:]}</li>')
|
|
||||||
elif re.match(r'^\d+\. ', line):
|
|
||||||
html_lines.append(f'<li>{line[line.find(". ")+2:]}</li>')
|
|
||||||
elif line.strip() == '':
|
|
||||||
html_lines.append('<br>')
|
|
||||||
else:
|
|
||||||
tmp = re.sub(r'\*\*(.*?)\*\*', r'<strong>\1</strong>', line)
|
|
||||||
tmp = re.sub(r'\*(.*?)\*', r'<em>\1</em>', tmp)
|
|
||||||
html_lines.append(f'<p>{tmp}</p>')
|
|
||||||
|
|
||||||
html = f'''<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<title>上海阳台种菜一年</title>
|
|
||||||
<style>
|
|
||||||
body {{ font-family: "Microsoft YaHei", sans-serif; max-width: 800px; margin: 0 auto; padding: 20px; line-height: 1.8; }}
|
|
||||||
h1 {{ font-size: 28px; border-bottom: 2px solid #4CAF50; padding-bottom: 10px; }}
|
|
||||||
h2 {{ font-size: 24px; margin-top: 40px; border-left: 4px solid #4CAF50; padding-left: 10px; }}
|
|
||||||
h3 {{ font-size: 20px; margin-top: 30px; color: #666; }}
|
|
||||||
img {{ max-width: 100%; height: auto; border-radius: 4px; margin: 20px 0; display: block; margin-left: auto; margin-right: auto; }}
|
|
||||||
blockquote {{ border-left: 4px solid #4CAF50; background: #f9f9f9; padding: 10px 20px; margin: 20px 0; color: #666; }}
|
|
||||||
li {{ margin-bottom: 8px; }}
|
|
||||||
p {{ margin-bottom: 16px; }}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
{chr(10).join(html_lines)}
|
|
||||||
</body>
|
|
||||||
</html>'''
|
|
||||||
|
|
||||||
with open(OUT_HTML, "w", encoding="utf-8") as f:
|
|
||||||
f.write(html)
|
|
||||||
|
|
||||||
print(f"✅ HTML 已生成: {OUT_HTML}")
|
|
||||||
print(f"📊 字符数: {len(content)}")
|
|
||||||
print(f"🖼️ 内嵌图片: {len(image_cache)} 张")
|
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
#!/usr/bin/env python3
|
|
||||||
"""
|
|
||||||
对 article.md 进行内容优化:
|
|
||||||
- 去除具体 App 品牌名(花帮主、园艺助手)
|
|
||||||
- 隐去设备具体品牌(小米米家)
|
|
||||||
- 保留功能描述和用户价值
|
|
||||||
- 保持中立、实用、无广告感
|
|
||||||
"""
|
|
||||||
|
|
||||||
import os
|
|
||||||
import re
|
|
||||||
|
|
||||||
BASE_DIR = "/root/.openclaw/workspaces/yzr-yxl/projects/yu-zhi-ran/content/published/2026-04-14-上海阳台种菜一年"
|
|
||||||
MD_FILE = os.path.join(BASE_DIR, "final-article.md")
|
|
||||||
OUT_MD = os.path.join(BASE_DIR, "final-article-optimized.md")
|
|
||||||
|
|
||||||
with open(MD_FILE, "r", encoding="utf-8") as f:
|
|
||||||
content = f.read()
|
|
||||||
|
|
||||||
# 1. 替换具体 App 名称 -> 通用描述
|
|
||||||
content = re.sub(r'花帮主', '一些第三方种植App', content)
|
|
||||||
content = re.sub(r'园艺助手', '另一些生活助手类App', content)
|
|
||||||
content = re.sub(r'(\*\*)花帮主(\*\*),AI识别病虫害,准确率85%', '**一些第三方种植App**,可以通过 AI 识别病虫害,准确率在 80% 以上', content)
|
|
||||||
|
|
||||||
# 2. 替换设备品牌 -> 通用描述
|
|
||||||
content = re.sub(r'小米米家灌溉套装', '智能灌溉套装', content)
|
|
||||||
content = re.sub(r'LED补光灯', 'LED 植物补光灯', content)
|
|
||||||
|
|
||||||
# 3. 移除可能带有广告嫌疑的表述(如“效果最好”、“推荐”等),改为中性描述
|
|
||||||
content = re.sub(r'强烈推荐(易种)', '适合新手(易种)', content)
|
|
||||||
content = re.sub(r'强烈推荐', '推荐', content)
|
|
||||||
|
|
||||||
# 4. 图片描述调整(不影响图片本身,只调整 alt 文本和图片说明)
|
|
||||||
# 图片文件保留不变,只调整 Markdown 中的说明文字
|
|
||||||
content = re.sub(r'!\[App截图\]', '[App功能截图]', content)
|
|
||||||
content = re.sub(r'App截图', 'App功能界面示意', content)
|
|
||||||
|
|
||||||
# 5. 增加免责声明(在文末)
|
|
||||||
if "声明:" not in content:
|
|
||||||
content = content.rstrip() + "\n\n---\n\n> **声明**:本文提及的工具和设备仅为个人使用经验分享,不构成商业推荐。读者可根据自身需求选择类似产品。\n"
|
|
||||||
|
|
||||||
with open(OUT_MD, "w", encoding="utf-8") as f:
|
|
||||||
f.write(content)
|
|
||||||
|
|
||||||
print(f"✅ 优化完成: {OUT_MD}")
|
|
||||||
print("🔧 优化项:")
|
|
||||||
print(" - 去除具体 App 品牌名")
|
|
||||||
print(" - 隐去设备品牌")
|
|
||||||
print(" - 增加中立表述")
|
|
||||||
print(" - 添加免责声明")
|
|
||||||
|
Before Width: | Height: | Size: 5.4 KiB |
|
Before Width: | Height: | Size: 4.8 KiB |
|
Before Width: | Height: | Size: 7.0 KiB |
|
Before Width: | Height: | Size: 7.1 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 9.9 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 136 KiB |
@@ -6,7 +6,7 @@ from docx import Document
|
|||||||
from docx.shared import Inches, Pt
|
from docx.shared import Inches, Pt
|
||||||
from docx.enum.text import WD_ALIGN_PARAGRAPH
|
from docx.enum.text import WD_ALIGN_PARAGRAPH
|
||||||
|
|
||||||
BASE_DIR = "/root/.openclaw/workspaces/yzr-yxl/projects/yu-zhi-ran/content/published/2026-04-14-上海阳台种菜一年"
|
BASE_DIR = "/root/openclaw-workspace/projects/yu-zhi-ran/content/published/2026-04-14-上海阳台种菜一年"
|
||||||
MD_FILE = os.path.join(BASE_DIR, "final-article-optimized.md")
|
MD_FILE = os.path.join(BASE_DIR, "final-article-optimized.md")
|
||||||
IMAGES_DIR = os.path.join(BASE_DIR, "images")
|
IMAGES_DIR = os.path.join(BASE_DIR, "images")
|
||||||
OUTPUT_DOCX = os.path.join(BASE_DIR, "上海阳台种菜一年_发布版.docx")
|
OUTPUT_DOCX = os.path.join(BASE_DIR, "上海阳台种菜一年_发布版.docx")
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
python3 - << 'PYEOF'
|
python3 - << 'PYEOF'
|
||||||
import os, re, base64
|
import os, re, base64
|
||||||
|
|
||||||
BASE_DIR = "/root/.openclaw/workspaces/yzr-yxl/projects/yu-zhi-ran/content/published/2026-04-14-上海阳台种菜一年"
|
BASE_DIR = "/root/openclaw-workspace/projects/yu-zhi-ran/content/published/2026-04-14-上海阳台种菜一年"
|
||||||
MD_FILE = os.path.join(BASE_DIR, "final-article-optimized.md")
|
MD_FILE = os.path.join(BASE_DIR, "final-article-optimized.md")
|
||||||
IMAGES_DIR = os.path.join(BASE_DIR, "images")
|
IMAGES_DIR = os.path.join(BASE_DIR, "images")
|
||||||
OUT_HTML = os.path.join(BASE_DIR, "上海阳台种菜一年_发布版.html")
|
OUT_HTML = os.path.join(BASE_DIR, "上海阳台种菜一年_发布版.html")
|
||||||
|
|||||||
@@ -5,8 +5,8 @@
|
|||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
PROJECT_ROOT="/root/.openclaw/workspaces/yzr-yxl/projects/yu-zhi-ran"
|
PROJECT_ROOT="/root/openclaw-workspace/projects/yu-zhi-ran"
|
||||||
SESSION_STATE="/root/.openclaw/workspaces/yzr-yxl/projects/yu-zhi-ran/automation/wechat_state.json"
|
SESSION_STATE="/root/openclaw-workspace/projects/yu-zhi-ran/automation/wechat_state.json"
|
||||||
|
|
||||||
if [ $# -ne 2 ]; then
|
if [ $# -ne 2 ]; then
|
||||||
echo "用法: $0 <markdown_file> <images_dir>"
|
echo "用法: $0 <markdown_file> <images_dir>"
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
set -e
|
set -e
|
||||||
|
|
||||||
# 配置
|
# 配置
|
||||||
PROJECT_ROOT="/root/.openclaw/workspaces/yzr-yxl/projects/yu-zhi-ran"
|
PROJECT_ROOT="/root/openclaw-workspace/projects/yu-zhi-ran"
|
||||||
SESSION_STATE="/root/.openclaw/sessions/zhihu-state.json"
|
SESSION_STATE="/root/.openclaw/sessions/zhihu-state.json"
|
||||||
ZHIHU_CREATOR_URL="https://www.zhihu.com/creator"
|
ZHIHU_CREATOR_URL="https://www.zhihu.com/creator"
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +0,0 @@
|
|||||||
# 远程工作2026中国指南:从'不可能'到'可行'的路径图 - 2026-04-18 - 小红书笔记
|
|
||||||
|
|
||||||
宇 宇之然 | 可持续生活指南 每天分享一个可执行的可持续行动 ✨ 远程工作2026中国指南:从'不可能'到'可行'的路径图 📅 2026-04-18 更新 一、引言(约200字) (LLM 调用失败:HTTP 502: {"error":{"message":"Model resources are currently busy. Please try again later. (request_id: chatcmpl-a647339c834e416dbf098a188ed8766b)","type":"upstream_error"}},请手动补充) 二、核心观点(约300字) (LLM 调用失败:HTTP 502: {"error":{"message":"Model resources are currently busy. Please try again later. (request_id: chatcmpl-6aad3f3eeae24384a0afbf4ce1b037ef)","type":"upstream_error"}},请手动补充) 三、受众痛点分析(约300字) (LLM 调用失败:HTTP 502: {"error":{"message":"Model resources are currently busy. Please try again later. (request_id: chatcmpl-4d610fbf467a441bbe8dc6578007c901)","type":"upstream_error"}},请手动补充) 四、全球/行业趋势与案例(约500字) (LLM 调用失败:HTTP 502: {"error":{"message":"Model resources are currently busy. Please try again later. (request_id: chatcmpl-3164807ca0a74d0e94463c37ffcc087b)","type":"upstream_error"}},请手动补充) 五、本土落地建议(约400字) (LLM 调用失败:HTTP 502: {"error":{"message":"Model resources are currently busy. Please try again later. (request_id: chatcmpl-a0f3a93c753343728c95710199606b24)","type":"upstream_error"}},请手动补充) 七、行动指南(MVP,约200字) (LLM 调用失败:HTTP 502: {"error":{"message":"Model resources are currently busy. Please try again later. (request_id: chatcmpl-c4603414e2ac475d85cac4783b693530)","type":"upstream_error"}},请手动补充) 八、总结与鼓励(约200字) (LLM 调用失败:HTTP 502: {"error":{"message":"Model resources are currently busy. Please try again later. (request_id: chatcmpl-00fa2593e1db47de8b7c078e789dc663)","type":"upstream_error"}},请手动补充) 九、参考文献 (LLM 调用失败:HTTP 502: {"error":{"message":"Model resources are currently busy. Please try again later. (request_id: chatcmpl-b68f9f2bb8f94c148b249980e6301508)","type":"upstream_error"}},请手动补充) (本文由宇之然AI助手生成,数据来源可靠,内容经合规审查) 生成时间:2026-04-18 #AI #可持续 #生活方式 💚 本文由宇之然AI助手生成,基于全球可持续性趋势研究 📊 数据经过交叉验证 | 🌍 每天更新,让可持续生活更简单 💬 欢迎在评论区分享你的实践经验和改进建议
|
|
||||||
@@ -3,146 +3,164 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>{{TITLE}} - {{DATE}} - 微信公众号</title>
|
<title>{{TITLE}}</title>
|
||||||
<style>
|
<style>
|
||||||
body {
|
body {
|
||||||
font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
|
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
|
||||||
line-height: 1.7;
|
line-height: 1.8;
|
||||||
max-width: 720px;
|
max-width: 640px;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
color: #333;
|
color: #333;
|
||||||
background-color: #fff;
|
background-color: #f7f7f7;
|
||||||
-webkit-font-smoothing: antialiased;
|
}
|
||||||
|
.container {
|
||||||
|
background: #fff;
|
||||||
|
padding: 30px;
|
||||||
|
border-radius: 8px;
|
||||||
|
box-shadow: 0 2px 8px rgba(0,0,0,0.05);
|
||||||
}
|
}
|
||||||
h1 {
|
h1 {
|
||||||
font-size: 1.8em;
|
font-size: 20px;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
margin-top: 0;
|
margin: 0 0 20px 0;
|
||||||
margin-bottom: 20px;
|
color: #1a1a1a;
|
||||||
color: #222;
|
|
||||||
text-align: center;
|
|
||||||
line-height: 1.4;
|
line-height: 1.4;
|
||||||
}
|
}
|
||||||
h2 {
|
h2 {
|
||||||
font-size: 1.5em;
|
font-size: 18px;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
margin-top: 36px;
|
margin: 28px 0 14px 0;
|
||||||
margin-bottom: 18px;
|
color: #262626;
|
||||||
color: #333;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
border-bottom: 2px solid #f0f0f0;
|
|
||||||
}
|
}
|
||||||
h3 {
|
h3 {
|
||||||
font-size: 1.3em;
|
font-size: 16px;
|
||||||
font-weight: 500;
|
font-weight: 600;
|
||||||
margin-top: 28px;
|
margin: 24px 0 12px 0;
|
||||||
margin-bottom: 14px;
|
color: #595959;
|
||||||
color: #444;
|
|
||||||
}
|
}
|
||||||
p {
|
p {
|
||||||
margin: 18px 0;
|
margin: 16px 0;
|
||||||
color: #555;
|
color: #333;
|
||||||
text-align: justify;
|
text-align: justify;
|
||||||
word-break: break-word;
|
font-size: 15px;
|
||||||
}
|
}
|
||||||
ul, ol {
|
ul, ol {
|
||||||
padding-left: 24px;
|
padding-left: 24px;
|
||||||
margin: 18px 0;
|
margin: 16px 0;
|
||||||
}
|
}
|
||||||
li {
|
li {
|
||||||
margin: 10px 0;
|
margin: 8px 0;
|
||||||
color: #555;
|
font-size: 15px;
|
||||||
}
|
}
|
||||||
img {
|
img {
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
height: auto;
|
height: auto;
|
||||||
margin: 24px 0;
|
|
||||||
border-radius: 6px;
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
.abstract {
|
|
||||||
background: #f9f9f9;
|
|
||||||
padding: 18px;
|
|
||||||
border-radius:671px;
|
|
||||||
margin: 20px 0;
|
margin: 20px 0;
|
||||||
color: #666;
|
border-radius: 4px;
|
||||||
font-size: 1.05em;
|
|
||||||
line-height: 1.6;
|
|
||||||
border-left: 4px solid #07c160;
|
|
||||||
}
|
}
|
||||||
.highlight-box {
|
blockquote {
|
||||||
background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
|
|
||||||
padding: 20px;
|
|
||||||
border-radius: 8px;
|
|
||||||
margin: 24px 0;
|
|
||||||
border: 1px solid #e1e1e1;
|
|
||||||
}
|
|
||||||
.action-box {
|
|
||||||
background: #e8f5e9;
|
|
||||||
padding: 16px;
|
|
||||||
border-radius: 6px;
|
|
||||||
margin: 20px 0;
|
margin: 20px 0;
|
||||||
border-left: 5px solid #4CAF50;
|
padding: 12px 16px;
|
||||||
|
border-left: 3px solid #07c160;
|
||||||
|
background-color: #f0f9f4;
|
||||||
|
color: #555;
|
||||||
|
font-size: 14px;
|
||||||
}
|
}
|
||||||
.data-box {
|
/* 页头 */
|
||||||
background: #e3f2fd;
|
.header {
|
||||||
padding: 16px;
|
margin-bottom: 28px;
|
||||||
border-radius: 6px;
|
padding-bottom: 16px;
|
||||||
margin: 20px 0;
|
border-bottom: 1px solid #eee;
|
||||||
border-left: 5px solid #2196F3;
|
|
||||||
}
|
}
|
||||||
.wechat-footer {
|
.author-info {
|
||||||
margin-top: analyzedpx;
|
display: flex;
|
||||||
padding-top: 20px;
|
justify-content: space-between;
|
||||||
border-top: 1px solid #e1e1e1;
|
align-items: center;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
font-size: 13px;
|
||||||
color: #888;
|
color: #888;
|
||||||
font-size: 0.9em;
|
}
|
||||||
|
.author {
|
||||||
|
font-weight: 500;
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
.update-time {
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
/* 内容 */
|
||||||
|
.content {
|
||||||
|
margin-bottom: 24px;
|
||||||
|
}
|
||||||
|
/* 标签 */
|
||||||
|
.tags {
|
||||||
|
margin: 24px 0;
|
||||||
|
padding: 12px 0;
|
||||||
|
border-top: 1px solid #eee;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
}
|
||||||
|
.tag {
|
||||||
|
display: inline-block;
|
||||||
|
margin: 4px 6px 4px 0;
|
||||||
|
padding: 3px 10px;
|
||||||
|
background-color: #f0f9f4;
|
||||||
|
color: #07c160;
|
||||||
|
border-radius: 4px;
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
/* 互动 */
|
||||||
|
.interaction {
|
||||||
|
margin: 24px 0;
|
||||||
|
padding: 14px;
|
||||||
|
background-color: #f0f9f4;
|
||||||
|
border-radius: 4px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
line-height: 1.5;
|
color: #07c160;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 500;
|
||||||
}
|
}
|
||||||
.emoji {
|
/* 页脚 */
|
||||||
font-size: 1.2em;
|
footer {
|
||||||
margin: 0 2px;
|
margin-top: 28px;
|
||||||
}
|
padding-top: 16px;
|
||||||
.qrcode-section {
|
border-top: 1px solid #eee;
|
||||||
|
color: #999;
|
||||||
|
font-size: 12px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
margin: 30px 0;
|
|
||||||
padding: 20px;
|
|
||||||
background: #f9f9f9;
|
|
||||||
border-radius: 8px;
|
|
||||||
}
|
|
||||||
@media (max-width: 640px) {
|
|
||||||
body {
|
|
||||||
padding: 16px;
|
|
||||||
line-height: 1.6;
|
line-height: 1.6;
|
||||||
}
|
}
|
||||||
h1 { font-size: 1.6em; }
|
.gen-time {
|
||||||
h2 { font-size: 1.3em; }
|
margin-top: 6px;
|
||||||
.abstract { padding: 14px; }
|
font-size: 12px;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
<div class="container">
|
||||||
|
<!-- 页头区域 -->
|
||||||
|
<div class="header">
|
||||||
<h1>{{TITLE}}</h1>
|
<h1>{{TITLE}}</h1>
|
||||||
|
|
||||||
<!-- ABSTRACT -->
|
|
||||||
|
|
||||||
<div class="abstract">
|
|
||||||
<p>🌱 本文基于全球可持续性前沿趋势,结合中国实际情况,提供<strong>可执行、可落地</strong>的行动指南。每天一篇,让可持续生活成为日常。</p>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- 内容区域 -->
|
||||||
|
<div class="content">
|
||||||
<!-- CONTENT -->
|
<!-- CONTENT -->
|
||||||
|
|
||||||
<div class="qrcode-section">
|
|
||||||
<p>💚 关注「宇之然」公众号,获取每日可持续性实践指南</p>
|
|
||||||
<p>📅 每日更新,数据驱动,行动导向</p>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="wechat-footer">
|
<!-- 分类标签 -->
|
||||||
<p>本文由宇之然AI助手生成 | 数据来源:全球可持续性信息源</p>
|
<div class="tags">
|
||||||
<p>📅 生成日期:{{DATE}} | 📊 数据经过交叉验证</p>
|
<!-- TAGS -->
|
||||||
<p>💬 欢迎在留言区分享你的实践经验</p>
|
</div>
|
||||||
|
|
||||||
|
<!-- 互动建议 -->
|
||||||
|
<div class="interaction">
|
||||||
|
<p>欢迎在评论区分享你的实践经验和改进建议!</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 页脚区域 -->
|
||||||
|
<footer>
|
||||||
|
<p class="gen-time">生成时间:{{GEN_TIME}}</p>
|
||||||
|
</footer>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -3,230 +3,164 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>{{TITLE}} - {{DATE}} - 小红书笔记</title>
|
<title>{{TITLE}}</title>
|
||||||
<style>
|
<style>
|
||||||
body {
|
body {
|
||||||
font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
|
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
|
||||||
line-height: 1.6;
|
line-height: 1.6;
|
||||||
max-width: 100%;
|
max-width: 480px;
|
||||||
margin: 0;
|
margin: 0 auto;
|
||||||
padding: 0;
|
padding: 16px;
|
||||||
color: #333;
|
color: #333;
|
||||||
background-color: #fff;
|
background-color: #fafafa;
|
||||||
-webkit-font-smoothing: antialiased;
|
|
||||||
}
|
}
|
||||||
.container {
|
.container {
|
||||||
max-width: 640px;
|
background: #fff;
|
||||||
margin: 0 auto;
|
padding: 20px;
|
||||||
padding: 20px 16px 40px;
|
border-radius: 12px;
|
||||||
|
box-shadow: 0 2px 12px rgba(0,0,0,0.08);
|
||||||
}
|
}
|
||||||
.header {
|
h1 {
|
||||||
margin-bottom: 24px;
|
font-size: 18px;
|
||||||
}
|
|
||||||
.title {
|
|
||||||
font-size: 1.4em;
|
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
margin: 0 0 12px;
|
margin: 0 0 16px 0;
|
||||||
color: #222;
|
color: #1a1a1a;
|
||||||
line-height: 1.4;
|
line-height: 1.4;
|
||||||
}
|
}
|
||||||
.date-tag {
|
h2 {
|
||||||
display: inline-block;
|
font-size: 16px;
|
||||||
padding: 4px 12px;
|
font-weight: 600;
|
||||||
background-color: #ffe7e7;
|
margin: 20px 0 10px 0;
|
||||||
color: #ff2442;
|
color: #333;
|
||||||
border-radius: 12px;
|
|
||||||
font-size: 0.85em;
|
|
||||||
margin-bottom: 16px;
|
|
||||||
}
|
}
|
||||||
.image-gallery {
|
h3 {
|
||||||
margin: 20px 0;
|
font-size: 15px;
|
||||||
|
font-weight: 600;
|
||||||
|
margin: 16px 0 8px 0;
|
||||||
|
color: #555;
|
||||||
}
|
}
|
||||||
.main-image {
|
p {
|
||||||
width: 100%;
|
margin: 12px 0;
|
||||||
|
color: #444;
|
||||||
|
font-size: 14px;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
ul, ol {
|
||||||
|
padding-left: 20px;
|
||||||
|
margin: 12px 0;
|
||||||
|
}
|
||||||
|
li {
|
||||||
|
margin: 6px 0;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
img {
|
||||||
|
max-width: 100%;
|
||||||
height: auto;
|
height: auto;
|
||||||
border-radius: 12px;
|
margin: 16px 0;
|
||||||
margin-bottom: 12px;
|
|
||||||
}
|
|
||||||
.thumbnail-grid {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(3, 1fr);
|
|
||||||
gap: 8px;
|
|
||||||
margin-top: 12px;
|
|
||||||
}
|
|
||||||
.thumbnail {
|
|
||||||
width: 100%;
|
|
||||||
height: 120px;
|
|
||||||
object-fit: cover;
|
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
}
|
}
|
||||||
|
blockquote {
|
||||||
|
margin: 16px 0;
|
||||||
|
padding: 10px 14px;
|
||||||
|
border-left: 3px solid #ff2442;
|
||||||
|
background-color: #fff5f6;
|
||||||
|
color: #666;
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
/* 页头 */
|
||||||
|
.header {
|
||||||
|
margin-bottom: 20px;
|
||||||
|
padding-bottom: 12px;
|
||||||
|
border-bottom: 1px solid #f0f0f0;
|
||||||
|
}
|
||||||
|
.author-info {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
margin-bottom: 8px;
|
||||||
|
font-size: 12px;
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
.author {
|
||||||
|
font-weight: 500;
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
.update-time {
|
||||||
|
color: #bbb;
|
||||||
|
}
|
||||||
|
/* 内容 */
|
||||||
.content {
|
.content {
|
||||||
margin: 24px 0;
|
margin-bottom: 20px;
|
||||||
}
|
}
|
||||||
.section {
|
/* 标签 */
|
||||||
margin-bottom: 24px;
|
.tags {
|
||||||
}
|
|
||||||
.section-title {
|
|
||||||
font-size: 1.2em;
|
|
||||||
font-weight: 600;
|
|
||||||
margin: 0 0 12px;
|
|
||||||
color: #333;
|
|
||||||
padding-left: 8px;
|
|
||||||
border-left: 4px solid #ff2442;
|
|
||||||
}
|
|
||||||
.section-content {
|
|
||||||
color: #555;
|
|
||||||
margin: 12px 0;
|
|
||||||
line-height: 1.6;
|
|
||||||
}
|
|
||||||
.bullet-point {
|
|
||||||
margin: 10px 0;
|
|
||||||
padding-left: 20px;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
.bullet-point:before {
|
|
||||||
content: "•";
|
|
||||||
position: absolute;
|
|
||||||
left: 0;
|
|
||||||
color: #ff2442;
|
|
||||||
font-size: 1.2em;
|
|
||||||
}
|
|
||||||
.highlight-box {
|
|
||||||
background: linear-gradient(135deg, #fff5f5 0%, #ffe7e7 100%);
|
|
||||||
padding: 16px;
|
|
||||||
border-radius: 10px;
|
|
||||||
margin: 16px 0;
|
margin: 16px 0;
|
||||||
border: 1px solid #ffdada;
|
padding: 10px 0;
|
||||||
}
|
|
||||||
.action-list {
|
|
||||||
background: #f0fff4;
|
|
||||||
padding: 16px;
|
|
||||||
border-radius: 10px;
|
|
||||||
margin: 16px 0;
|
|
||||||
border: 1px solid #d1f7d1;
|
|
||||||
}
|
|
||||||
.action-item {
|
|
||||||
margin: 10px 0;
|
|
||||||
padding-left: toldpx;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
.action-item:before {
|
|
||||||
content: "✓";
|
|
||||||
position: absolute;
|
|
||||||
left: 0;
|
|
||||||
color: #4CAF50;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
.hashtags {
|
|
||||||
margin: 28px 0 20px;
|
|
||||||
padding: 16px 0;
|
|
||||||
border-top: 1px solid #f0f0f0;
|
border-top: 1px solid #f0f0f0;
|
||||||
border-bottom: 1px solid #f0f0f0;
|
border-bottom: 1px solid #f0f0f0;
|
||||||
}
|
}
|
||||||
.hashtag {
|
.tag {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
margin: 4px 6px;
|
margin: 3px 5px 3px 0;
|
||||||
|
padding: 2px 8px;
|
||||||
|
background-color: #fff5f6;
|
||||||
color: #ff2442;
|
color: #ff2442;
|
||||||
font-weight: 500;
|
border-radius: 12px;
|
||||||
font-size: 0.95em;
|
font-size: 12px;
|
||||||
}
|
}
|
||||||
.footer {
|
/* 互动 */
|
||||||
|
.interaction {
|
||||||
|
margin: 16px 0;
|
||||||
|
padding: 12px;
|
||||||
|
background-color: #fff5f6;
|
||||||
|
border-radius: 8px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
color: #888;
|
|
||||||
font-size: 0.85em;
|
|
||||||
margin-top: 32px;
|
|
||||||
padding-top: 20px;
|
|
||||||
border-top: 1px solid #f0f0f0;
|
|
||||||
}
|
|
||||||
.emoji {
|
|
||||||
font-size: 1.1em;
|
|
||||||
margin-right: 4px;
|
|
||||||
}
|
|
||||||
.profile {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
margin-bottom: 16px;
|
|
||||||
}
|
|
||||||
.avatar {
|
|
||||||
width: 40px;
|
|
||||||
height: 40px;
|
|
||||||
border-radius: 50%;
|
|
||||||
margin-right: 12px;
|
|
||||||
background-color: #f0f0f0;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
font-weight: bold;
|
|
||||||
color: #ff2442;
|
color: #ff2442;
|
||||||
|
font-size: 13px;
|
||||||
|
font-weight: 500;
|
||||||
}
|
}
|
||||||
.profile-info {
|
/* 页脚 */
|
||||||
flex: 1;
|
footer {
|
||||||
}
|
margin-top: 20px;
|
||||||
.username {
|
padding-top: 12px;
|
||||||
font-weight: 600;
|
border-top: 1px solid #f0f0f0;
|
||||||
color: #333;
|
color: #bbb;
|
||||||
margin-bottom: 2px;
|
font-size: 11px;
|
||||||
}
|
text-align: center;
|
||||||
.bio {
|
line-height: 1.5;
|
||||||
font-size: 0.9em;
|
|
||||||
color: #666;
|
|
||||||
}
|
|
||||||
@media (max-width: 480px) {
|
|
||||||
.container {
|
|
||||||
padding: 16px 12px 32px;
|
|
||||||
}
|
|
||||||
.title {
|
|
||||||
font-size: 1.3em;
|
|
||||||
}
|
|
||||||
.thumbnail-grid {
|
|
||||||
grid-template-columns: repeat(2, 1fr);
|
|
||||||
}
|
|
||||||
.thumbnail {
|
|
||||||
height: 100px;
|
|
||||||
}
|
}
|
||||||
|
.gen-time {
|
||||||
|
margin-top: 4px;
|
||||||
|
font-size: 11px;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
|
<!-- 页头区域 -->
|
||||||
<div class="header">
|
<div class="header">
|
||||||
<div class="profile">
|
<h1>{{TITLE}}</h1>
|
||||||
<div class="avatar">宇</div>
|
|
||||||
<div class="profile-info">
|
|
||||||
<div class="username">宇之然 | 可持续生活指南</div>
|
|
||||||
<div class="bio">每天分享一个可执行的可持续行动 ✨</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="title">{{TITLE}}</div>
|
|
||||||
<div class="date-tag">📅 {{DATE}} 更新</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="image-gallery">
|
|
||||||
<img src="" alt="封面图" class="main-image">
|
|
||||||
<div class="thumbnail-grid">
|
|
||||||
<img src="" alt="图1" class="thumbnail">
|
|
||||||
<img src="" alt="图2" class="thumbnail">
|
|
||||||
<img src="" alt="图3" class="thumbnail">
|
|
||||||
<img src="" alt="图4" class="thumbnail">
|
|
||||||
<img src="" alt="图5" class="thumbnail">
|
|
||||||
<img src="" alt="图6" class="thumbnail">
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- 内容区域 -->
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<!-- CONTENT -->
|
<!-- CONTENT -->
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="hashtags">
|
<!-- 分类标签 -->
|
||||||
<!-- HASHTAGS -->
|
<div class="tags">
|
||||||
|
<!-- TAGS -->
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="footer">
|
<!-- 互动建议 -->
|
||||||
<p>💚 本文由宇之然AI助手生成,基于全球可持续性趋势研究</p>
|
<div class="interaction">
|
||||||
<p>📊 数据经过交叉验证 | 🌍 每天更新,让可持续生活更简单</p>
|
<p>欢迎在评论区分享你的实践经验和改进建议!</p>
|
||||||
<p>💬 欢迎在评论区分享你的实践经验和改进建议</p>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- 页脚区域 -->
|
||||||
|
<footer>
|
||||||
|
<p class="gen-time">生成时间:{{GEN_TIME}}</p>
|
||||||
|
</footer>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -20,7 +20,6 @@
|
|||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
color: #121212;
|
color: #121212;
|
||||||
border-bottom: none;
|
|
||||||
}
|
}
|
||||||
h2 {
|
h2 {
|
||||||
font-size: 1.4em;
|
font-size: 1.4em;
|
||||||
@@ -57,16 +56,39 @@
|
|||||||
}
|
}
|
||||||
blockquote {
|
blockquote {
|
||||||
margin: 24px 0;
|
margin: 24px 0;
|
||||||
padding:"?
|
padding: 12px 20px;
|
||||||
|
|
||||||
12px 20px;
|
|
||||||
border-left: 4px solid #0084ff;
|
border-left: 4px solid #0084ff;
|
||||||
background-color: #f6f9ff;
|
background-color: #f6f9ff;
|
||||||
color: #595959;
|
color: #595959;
|
||||||
}
|
}
|
||||||
|
/* 页头样式 */
|
||||||
|
.header {
|
||||||
|
margin-bottom: 32px;
|
||||||
|
border-bottom: 1px solid #f0f0f0;
|
||||||
|
padding-bottom: 20px;
|
||||||
|
}
|
||||||
|
.author-info {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
font-size: 0.9em;
|
||||||
|
color: #8590a6;
|
||||||
|
}
|
||||||
|
.author {
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
.update-time {
|
||||||
|
color: #8590a6;
|
||||||
|
}
|
||||||
|
/* 内容样式 */
|
||||||
|
.content {
|
||||||
|
margin-bottom: 24px;
|
||||||
|
}
|
||||||
|
/* 标签样式 */
|
||||||
.tags {
|
.tags {
|
||||||
margin: 20px 0;
|
margin: 24px 0;
|
||||||
padding: 12px 0;
|
padding: 16px 0;
|
||||||
border-top: 1px solid #f0f0f0;
|
border-top: 1px solid #f0f0f0;
|
||||||
border-bottom: 1px solid #f0f0f0;
|
border-bottom: 1px solid #f0f0f0;
|
||||||
}
|
}
|
||||||
@@ -79,24 +101,17 @@
|
|||||||
border-radius: 12px;
|
border-radius: 12px;
|
||||||
font-size: 0.9em;
|
font-size: 0.9em;
|
||||||
}
|
}
|
||||||
.data-highlight {
|
/* 互动建议 */
|
||||||
background-color: #f0f9ff;
|
.interaction {
|
||||||
padding: 12px 16px;
|
margin: 24px 0;
|
||||||
|
padding: 16px;
|
||||||
|
background-color: #f6f9ff;
|
||||||
border-radius: 6px;
|
border-radius: 6px;
|
||||||
margin: 16px 0;
|
text-align: center;
|
||||||
border-left: 3px solid #1890ff;
|
color: #0084ff;
|
||||||
}
|
|
||||||
.summary {
|
|
||||||
font-size: 1.1em;
|
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
color: #595959;
|
|
||||||
margin-bottom: 24px;
|
|
||||||
}
|
|
||||||
.author {
|
|
||||||
color: #8590a6;
|
|
||||||
font-size: 0.9em;
|
|
||||||
margin-bottom: 24px;
|
|
||||||
}
|
}
|
||||||
|
/* 页脚样式 */
|
||||||
footer {
|
footer {
|
||||||
margin-top: 32px;
|
margin-top: 32px;
|
||||||
padding-top: 20px;
|
padding-top: 20px;
|
||||||
@@ -105,34 +120,53 @@
|
|||||||
font-size: 0.85em;
|
font-size: 0.85em;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
.gen-time {
|
||||||
|
margin-top: 8px;
|
||||||
|
font-size: 0.9em;
|
||||||
|
}
|
||||||
@media (max-width: 600px) {
|
@media (max-width: 600px) {
|
||||||
body {
|
body {
|
||||||
padding: 16px;
|
padding: 16px;
|
||||||
line-height: 1.6;
|
line-height: 1.6;
|
||||||
}
|
}
|
||||||
h1 { font-size: 1.5em; }
|
h1 {
|
||||||
h2 { font-size: 1.3em; }
|
font-size: 1.5em;
|
||||||
|
}
|
||||||
|
h2 {
|
||||||
|
font-size: 1.3em;
|
||||||
|
}
|
||||||
|
.author-info {
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: flex-start;
|
||||||
|
gap: 4px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="author">作者:宇之然 | 更新日期:{{DATE}}</div>
|
<!-- 页头区域 -->
|
||||||
|
<div class="header">
|
||||||
<h1>{{TITLE}}</h1>
|
<h1>{{TITLE}}</h1>
|
||||||
|
|
||||||
<div class="summary">
|
|
||||||
<p>本文基于全球可持续性趋势研究,结合中国现实,提供可执行的行动建议。数据来源可靠,观点客观中立。</p>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- 内容区域(不含标题) -->
|
||||||
|
<div class="content">
|
||||||
<!-- CONTENT -->
|
<!-- CONTENT -->
|
||||||
|
|
||||||
<div class="tags">
|
|
||||||
<!-- TAGS -->
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- 分类标签 -->
|
||||||
|
<div class="tags">
|
||||||
|
<!-- TAGS -->
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 互动建议 -->
|
||||||
|
<div class="interaction">
|
||||||
|
<p>欢迎在评论区分享你的实践经验和改进建议!</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 页脚区域 -->
|
||||||
<footer>
|
<footer>
|
||||||
<p>本文由宇之然AI助手生成,基于全球开源数据和研究成果</p>
|
<p class="gen-time">生成时间:{{GEN_TIME}}</p>
|
||||||
<p>欢迎在评论区分享你的实践经验和改进建议</p>
|
|
||||||
</footer>
|
</footer>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -58,7 +58,7 @@ if (!editor) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 上传封面图(如需自动上传)
|
// 上传封面图(如需自动上传)
|
||||||
const coverPath = "/root/.openclaw/workspaces/yzr-yxl/projects/yu-zhi-ran/content/publishing/images/05-封面图.png";
|
const coverPath = "/root/openclaw-workspace/projects/yu-zhi-ran/content/publishing/images/05-封面图.png";
|
||||||
console.log("📸 封面上传:请手动点击编辑器图片按钮,选择封面图文件");
|
console.log("📸 封面上传:请手动点击编辑器图片按钮,选择封面图文件");
|
||||||
console.log(" 文件路径:", coverPath);
|
console.log(" 文件路径:", coverPath);
|
||||||
|
|
||||||
|
|||||||
@@ -313,7 +313,7 @@ if (!editor) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 提示封面上传
|
// 提示封面上传
|
||||||
const coverPath = "/root/.openclaw/workspaces/yzr-yxl/projects/yu-zhi-ran/content/publishing/images/05-封面图.png";
|
const coverPath = "/root/openclaw-workspace/projects/yu-zhi-ran/content/publishing/images/05-封面图.png";
|
||||||
console.log("\n📸 封面上传:");
|
console.log("\n📸 封面上传:");
|
||||||
console.log(" 1. 点击编辑器工具栏的图片按钮(🖼️)");
|
console.log(" 1. 点击编辑器工具栏的图片按钮(🖼️)");
|
||||||
console.log(" 2. 选择 '上传图片'");
|
console.log(" 2. 选择 '上传图片'");
|
||||||
|
|||||||
@@ -30,10 +30,11 @@
|
|||||||
|
|
||||||
## 内容领域优先级
|
## 内容领域优先级
|
||||||
|
|
||||||
1. **科技与人文交叉** (40%)
|
1. **科技与人文交叉** (35%)
|
||||||
- AI伦理与应用思考
|
- AI伦理与应用思考
|
||||||
- 数字化生活反思
|
- 数字化生活反思
|
||||||
- 科技如何服务人性
|
- 科技如何服务人性
|
||||||
|
- **教育科技**(家庭AI教育、亲子项目)
|
||||||
|
|
||||||
2. **可持续生活** (30%)
|
2. **可持续生活** (30%)
|
||||||
- 自然与科技平衡
|
- 自然与科技平衡
|
||||||
@@ -45,8 +46,8 @@
|
|||||||
- 个人知识管理
|
- 个人知识管理
|
||||||
- 技能迭代与适应
|
- 技能迭代与适应
|
||||||
|
|
||||||
4. **社会观察** (10%)
|
4. **社会观察** (15%)
|
||||||
- 文化现象解读
|
- 教育现象解读
|
||||||
- 生活方式变迁
|
- 生活方式变迁
|
||||||
- 未来趋势预判
|
- 未来趋势预判
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
### 阶段1:选题决策(1-2小时)
|
### 阶段1:选题决策(1-2小时)
|
||||||
- [ ] 从选题库选择或提出新选题
|
- [ ] 从选题库选择或提出新选题
|
||||||
- [ ] 使用"选题评估矩阵"打分(>40分才执行)
|
- [ ] 使用"选题评估矩阵"打分(>40分才执行)
|
||||||
- [ ] 确认领域归属(科技/自然/工作/人文)
|
- [ ] 确认领域归属(科技/自然/工作/人文/教育)
|
||||||
- [ ] 确定平台首发(知乎为主)
|
- [ ] 确定平台首发(知乎为主)
|
||||||
- [ ] 设定预期目标(阅读量、互动等)
|
- [ ] 设定预期目标(阅读量、互动等)
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,12 @@
|
|||||||
|
# LLM API 调用配置
|
||||||
|
|
||||||
|
# 并发控制规则
|
||||||
|
# - 最大并发数: 2
|
||||||
|
# - 每分钟最大调用次数: 60
|
||||||
|
concurrency:
|
||||||
|
max_concurrent: 2
|
||||||
|
max_requests_per_minute: 60
|
||||||
|
|
||||||
|
# 串行调用(严禁并发)- 已废弃
|
||||||
|
# 旧规则: 串行调用, ≤30次/分钟
|
||||||
|
# 新规则: 并发2, ≤60次/分钟 (2026-05-16 更新)
|
||||||
@@ -1,85 +1,115 @@
|
|||||||
# 信息源配置(可持续性相关)
|
# 信息源配置(AI与科技人文领域)
|
||||||
|
# 注意:仅保留国内可稳定访问的源,移除被墙/下线的源
|
||||||
|
|
||||||
sustainability_sources:
|
sustainability_sources:
|
||||||
# 中文信息源(国内可持续性实践)优先使用
|
# 中文RSS源(国内媒体,可稳定访问)
|
||||||
chinese:
|
rss:
|
||||||
- name: "新华网-环保频道"
|
- name: "36氪-最新"
|
||||||
type: "rss"
|
type: "rss"
|
||||||
url: "http://www.xinhuanet.com/energy/rss.xml"
|
url: "https://36kr.com/feed"
|
||||||
update_frequency: "daily"
|
update_frequency: "daily"
|
||||||
credibility: "high"
|
credibility: "high"
|
||||||
focus: "国内环保政策"
|
focus: "科技商业、AI行业"
|
||||||
- name: "人民网-生态环境频道"
|
keywords:
|
||||||
|
- "AI"
|
||||||
|
- "人工智能"
|
||||||
|
- "大模型"
|
||||||
|
- "科技"
|
||||||
|
- "数字化"
|
||||||
|
- "创业"
|
||||||
|
- name: "少数派"
|
||||||
type: "rss"
|
type: "rss"
|
||||||
url: "http://env.people.com.cn/rss/150323.xml"
|
url: "https://sspai.com/feed"
|
||||||
|
update_frequency: "daily"
|
||||||
|
credibility: "medium"
|
||||||
|
focus: "科技数码、效率工具"
|
||||||
|
keywords:
|
||||||
|
- "AI"
|
||||||
|
- "效率"
|
||||||
|
- "工具"
|
||||||
|
- "数字"
|
||||||
|
- "智能"
|
||||||
|
- "工作流"
|
||||||
|
- name: "机器之心"
|
||||||
|
type: "rss"
|
||||||
|
url: "https://jiqizhixin.com/rss"
|
||||||
update_frequency: "daily"
|
update_frequency: "daily"
|
||||||
credibility: "high"
|
credibility: "high"
|
||||||
focus: "生态环境新闻"
|
focus: "AI学术前沿、论文解读"
|
||||||
- name: "中国环境新闻"
|
keywords:
|
||||||
type: "web"
|
- "AI"
|
||||||
base_url: "http://www.cenews.com.cn/"
|
- "论文"
|
||||||
update_frequency: "daily"
|
- "大模型"
|
||||||
credibility: "high"
|
- "算法"
|
||||||
focus: "环境新闻"
|
- "研究"
|
||||||
- name: "国家发改委-低碳政策"
|
- "学术"
|
||||||
type: "web"
|
|
||||||
base_url: "https://www.ndrc.gov.cn"
|
|
||||||
credibility: "high"
|
|
||||||
focus: "政策动态"
|
|
||||||
|
|
||||||
# 备用全球信息源(API替代RSS)
|
# 搜索引擎采集(通过Bing中文搜索抓取热点)
|
||||||
english_api:
|
web_search:
|
||||||
- name: "UN Environment Programme"
|
- name: "AI前沿资讯搜索"
|
||||||
type: "api"
|
type: "web_search"
|
||||||
url: "https://www.unep.org/news-and-stories"
|
query: "AI 人工智能 大模型 前沿 突破 2026"
|
||||||
|
update_frequency: "daily"
|
||||||
|
credibility: "medium"
|
||||||
|
focus: "AI行业动态、技术突破"
|
||||||
|
- name: "AI工具搜索"
|
||||||
|
type: "web_search"
|
||||||
|
query: "AI工具 效率提升 AI工作流 实用 2026"
|
||||||
|
update_frequency: "daily"
|
||||||
|
credibility: "medium"
|
||||||
|
focus: "AI工具评测、效率方法"
|
||||||
|
- name: "AI职场搜索"
|
||||||
|
type: "web_search"
|
||||||
|
query: "AI 裁员 职业转型 AI技能 远程工作 2026"
|
||||||
|
update_frequency: "daily"
|
||||||
|
credibility: "medium"
|
||||||
|
focus: "AI对就业影响、职业转型"
|
||||||
|
- name: "AI生活化搜索"
|
||||||
|
type: "web_search"
|
||||||
|
query: "AI陪伴 AI生活助手 AI心理咨询 智能体 2026"
|
||||||
|
update_frequency: "daily"
|
||||||
|
credibility: "medium"
|
||||||
|
focus: "AI人格化、生活场景应用"
|
||||||
|
- name: "科技人文搜索"
|
||||||
|
type: "web_search"
|
||||||
|
query: "AI伦理 数字生活 科技反思 人机关系 2026"
|
||||||
|
update_frequency: "daily"
|
||||||
|
credibility: "medium"
|
||||||
|
focus: "AI伦理、科技人文反思"
|
||||||
|
# ── 差异化源(与通用AI媒体形成区分)──
|
||||||
|
- name: "AI学术论文搜索"
|
||||||
|
type: "web_search"
|
||||||
|
query: "arXiv 论文 AI 最新研究 大模型 2026"
|
||||||
update_frequency: "weekly"
|
update_frequency: "weekly"
|
||||||
credibility: "high"
|
credibility: "high"
|
||||||
focus: "全球环境政策"
|
focus: "AI学术前沿、论文中文解读"
|
||||||
- name: "World Economic Forum Sustainability"
|
- name: "独立开发者搜索"
|
||||||
type: "api"
|
type: "web_search"
|
||||||
url: "https://www.weforum.org/topics/sustainability/"
|
query: "独立开发者 AI产品 一人公司 出海工具 indie hacking 2026"
|
||||||
update_frequency: "weekly"
|
update_frequency: "daily"
|
||||||
|
credibility: "medium"
|
||||||
|
focus: "独立开发者生态、小众AI产品"
|
||||||
|
- name: "行业数据报告搜索"
|
||||||
|
type: "web_search"
|
||||||
|
query: "AI行业报告 数据统计 市场分析 AI应用渗透率 2026"
|
||||||
|
update_frequency: "daily"
|
||||||
credibility: "high"
|
credibility: "high"
|
||||||
focus: "可持续商业"
|
focus: "行业数据、市场报告、AI应用统计"
|
||||||
|
- name: "AI产品动态搜索"
|
||||||
|
type: "web_search"
|
||||||
|
query: "AI产品发布 更新 changelog 新功能 OpenAI Claude 2026"
|
||||||
|
update_frequency: "daily"
|
||||||
|
credibility: "medium"
|
||||||
|
focus: "AI产品迭代、功能更新"
|
||||||
|
|
||||||
# 本地案例库(保底数据源)
|
# 本地案例库(保底数据源)
|
||||||
local:
|
local:
|
||||||
- name: "宇之然本地案例库"
|
- name: "宇之然AI案例库"
|
||||||
type: "local"
|
type: "local"
|
||||||
file: "strategy/全球案例数据库-v1.md"
|
file: "automation/data/ai_cases.json"
|
||||||
update_frequency: "weekly"
|
update_frequency: "weekly"
|
||||||
credibility: "medium"
|
credibility: "medium"
|
||||||
focus: "全球-本土案例"
|
focus: "AI行业案例"
|
||||||
- name: "历史选题库"
|
|
||||||
type: "local"
|
|
||||||
file: "automation/data/sustainability_topics.json"
|
|
||||||
update_frequency: "daily"
|
|
||||||
credibility: "medium"
|
|
||||||
focus: "复用已有选题"
|
|
||||||
|
|
||||||
# 案例验证要求
|
|
||||||
validation:
|
|
||||||
require_at_least_2_sources: true # 至少2个来源交叉验证
|
|
||||||
prefer_official_data: true # 优先政府/官方数据
|
|
||||||
min_data_points: 3 # 最少3个数据点
|
|
||||||
|
|
||||||
# 选题优先级权重
|
|
||||||
topic_priority:
|
|
||||||
audience_match: 0.3 # 受众匹配度(26-35岁城市焦虑青年)
|
|
||||||
data_availability: 0.25 # 数据可得性
|
|
||||||
uniqueness: 0.2 # 独特性(避免同质化)
|
|
||||||
executability: 0.15 # 可执行性(有MVP行动)
|
|
||||||
brand_fit: 0.1 # 品牌契合度(科技向善+回归本真)
|
|
||||||
|
|
||||||
# 可持续性子领域分类
|
|
||||||
sustainability_categories:
|
|
||||||
- "城市农业"
|
|
||||||
- "零浪费生活"
|
|
||||||
- "低碳出行"
|
|
||||||
- "循环消费"
|
|
||||||
- "能源效率"
|
|
||||||
- "可持续饮食"
|
|
||||||
- "环保科技产品"
|
|
||||||
|
|
||||||
# 内容合规检查清单
|
# 内容合规检查清单
|
||||||
compliance:
|
compliance:
|
||||||
@@ -92,5 +122,5 @@ compliance:
|
|||||||
required:
|
required:
|
||||||
- "至少3个可靠引用"
|
- "至少3个可靠引用"
|
||||||
- "数据标注来源"
|
- "数据标注来源"
|
||||||
- "包含MVP行动"
|
- "包含可操作建议"
|
||||||
- "中性客观语气"
|
- "中性客观语气"
|
||||||