feat(article): 更新文章内容并集成CDN图片上传功能

- 将文章中的本地图片路径替换为CDN链接
- 修改文章引子部分,更新案例描述和内容细节
- 添加即梦AI图片生成命令配置文件
- 添加七牛云OSS上传命令配置文件和上传脚本
- 创建七牛云存储凭证文档
- 更新OpenClaw相关内容和图片引用链接
This commit is contained in:
2026-03-10 18:00:32 +08:00
parent 95e1129fd2
commit fdf5cc278f
5 changed files with 226 additions and 17 deletions
+54
View File
@@ -0,0 +1,54 @@
# 即梦 AI 图片生成
使用即梦 AI(火山引擎)生成图片。
## 使用方式
用户会提供:
1. **prompt**:图片描述(中文)
2. **output_path**:输出路径(可选,默认保存到当前工作目录)
## 执行步骤
1. 激活项目虚拟环境:`source .venv/bin/activate`
2. 调用 `scripts/jimeng_gen.py` 生成图片
3. 即梦 API 仅支持 **1024x1024** 正方形尺寸
4. 如果用户需要 16:9 比例,先生成 1024x1024,再用 Pillow 居中裁剪为 1024x576
5. 展示生成的图片给用户
## 调用示例
```bash
source .venv/bin/activate && python scripts/jimeng_gen.py "图片描述prompt" "输出路径.png"
```
## 16:9 裁剪(如需要)
```bash
source .venv/bin/activate && python -c "
from PIL import Image
img = Image.open('输出路径.png')
w, h = img.size
new_h = int(w * 9 / 16)
top = (h - new_h) // 2
img.crop((0, top, w, top + new_h)).save('输出路径.png')
"
```
## 注意事项
- 即梦 API **仅支持 1024x1024**,其他尺寸会提交成功但生成失败
- 需要非正方形图片时,先生成方形再裁剪
- 提交后需要轮询等待结果,通常 5-10 秒完成
- 脚本位于 `scripts/jimeng_gen.py`,密钥已内置
- 虚拟环境位于 `.venv/`,已安装 `requests` 和 `Pillow`
## API 凭证(已内置于脚本)
- Endpoint: `https://visual.volcengineapi.com`
- Region: `cn-north-1`
- Service: `cv`
- 模型: `jimeng_t2i_v40`(即梦图片生成 4.0)
- 签名: HMAC-SHA256 V4
$ARGUMENTS
+99
View File
@@ -0,0 +1,99 @@
# 七牛云 OSS 上传
将本地文件上传到七牛云 CDN 存储。
## 使用方式
用户会提供:
1. **file_path**:要上传的本地文件路径(支持单个文件或目录)
2. **prefix**:OSS 存储路径前缀(可选,默认 `self-media/`)
## 执行步骤
1. 激活项目虚拟环境:`source .venv/bin/activate`
2. 使用七牛 Python SDK 上传文件
3. 返回 CDN 访问链接
## 单文件上传
```bash
source .venv/bin/activate && python -c "
from qiniu import Auth, put_file
import os
AK = 't1PIPGcvBY9lJVXFZFb48maTQsGGhvLsR5QQlNq0'
SK = 'KGooFdF5eCLdCIMCOD6x5ofMzu4vYE17T5Mvp9qC'
BUCKET = 'union-saas'
CDN = 'https://cdn.union.jxyunge.com'
local_path = '本地文件路径'
key = 'self-media/远程存储路径'
q = Auth(AK, SK)
token = q.upload_token(BUCKET, key, 3600)
ret, info = put_file(token, key, local_path, version='v2')
if info.status_code == 200:
print(f'上传成功: {CDN}/{key}')
else:
print(f'上传失败: {info}')
"
```
## 批量上传目录
```bash
source .venv/bin/activate && python scripts/upload_qiniu.py
```
脚本 `scripts/upload_qiniu.py` 会上传 `articles/001/images/` 下所有 PNG 文件。
## 自定义批量上传
```bash
source .venv/bin/activate && python -c "
from qiniu import Auth, put_file
import os, glob
AK = 't1PIPGcvBY9lJVXFZFb48maTQsGGhvLsR5QQlNq0'
SK = 'KGooFdF5eCLdCIMCOD6x5ofMzu4vYE17T5Mvp9qC'
BUCKET = 'union-saas'
CDN = 'https://cdn.union.jxyunge.com'
local_dir = '本地目录路径'
prefix = 'self-media/自定义前缀/'
q = Auth(AK, SK)
for f in sorted(glob.glob(os.path.join(local_dir, '*'))):
name = os.path.basename(f)
key = prefix + name
token = q.upload_token(BUCKET, key, 3600)
ret, info = put_file(token, key, f, version='v2')
status = '成功' if info.status_code == 200 else '失败'
print(f'[{status}] {name} -> {CDN}/{key}')
"
```
## 在 Markdown 中替换图片链接
上传后,将文章中的本地图片路径替换为 CDN 链接:
- 本地路径格式:`![alt](本地路径/xxx.png)`
- CDN 链接格式:`![alt](https://cdn.union.jxyunge.com/self-media/xxx.png)`
## 七牛凭证
| 配置项 | 值 |
|--------|------|
| 上传地址 | `https://up-z0.qiniup.com` |
| AK | `t1PIPGcvBY9lJVXFZFb48maTQsGGhvLsR5QQlNq0` |
| SK | `KGooFdF5eCLdCIMCOD6x5ofMzu4vYE17T5Mvp9qC` |
| CDN 域名 | `https://cdn.union.jxyunge.com` |
| 空间名 | `union-saas` |
## 注意事项
- 虚拟环境 `.venv/` 已安装 `qiniu` SDK
- 上传同名文件会覆盖
- CDN 链接格式:`https://cdn.union.jxyunge.com/{key}`
$ARGUMENTS