social-media-automation について
social-media-automation は、小紅書、Douyin、WeChat Official Accounts、Channels 向けのコンテンツ作成と投稿を扱うスキルです。HAP からアカウントのペルソナやサービス設定を読み取り、情報検索、トレンド発見、制作、投稿の手順を示します。
主な機能
- 01プラットフォーム別のソーシャルコンテンツ生成
- 02HAP からペルソナと API 設定を取得
- 03テーマ資料と日次トレンドの検索
- 04タグ選定とタイトル案の提示
- 05対応プラットフォームの投稿手順
活用シーン
- 01テーマとアカウントペルソナに沿った原稿作成
- 02フォロー中のプラットフォームから日次トピックを発見
- 03小紅書の投稿や WeChat 記事の準備
- 04HAP でコンテンツ情報と投稿状態を整理
MCP 対応
ユーザーが HAP MCP 設定を提供するか、使用する MCP を指定する前提です。接続中の HAP アプリを確認し、固定のワークシート ID に頼らず、ワークシートや設定を動的に読み取ります。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ garfield-bb/ hap-skills-collection --skill social-media-automationインストール後、Claude Code で/social-media-automationを入力して読み込まれたか確認します。
詳細
セルフメディア運営自動化スキル
トリガー条件
ユーザーが以下の内容に言及した場合に自動的にトリガーされます:
- 「小紅書(シャオホンシュ)ノートを生成」
- 「小紅書に投稿」
- 「セルフメディアコンテンツを生成」
- 「抖音(ドゥイン)/公衆号/動画号に投稿」
- 「セルフメディア運営」
- 「ソーシャルメディアコンテンツ生成」
- 「コンテンツを一括生成」
- 「毎日のトレンド推薦」
- 「トレンドコンテンツ推薦」
- 「トレンドに基づいてコンテンツを生成」
MCP 設定の説明
重要な原則
本 Skill は汎用的であり、ハードコードされた MCP 設定やキー情報を一切含みません。
MCP の使用フロー
-
ユーザーが MCP 設定を提供
- ユーザーは HAP アプリの MCP 設定情報を提供します
- MCP 設定形式:
{"hap-mcp-{アプリ名}": {"url": "https://api.mingdao.com/mcp?HAP-Appkey=...&HAP-Sign=..."}} - またはユーザーが使用する MCP を明示的に指定します
-
現在接続されている MCP の確認
- 操作を実行する前に、必ず
mcp_hap-mcp-_get_app_info()を呼び出して、現在接続されている HAP アプリを確認します - ユーザーが MCP 設定を提供した場合、それが一致するか確認する必要があります
- 操作を実行する前に、必ず
-
HAP から動的に設定を読み取る
- すべての API キーと設定は HAP の「APIサービス設定」テーブルに保存されています
- 使用時はテーブルから動的に読み取り、コード内にハードコードしません
get_app_worksheets_list()を通じてワークシート一覧を動的に取得します- 優先的に別名(alias)でワークシートを照合し、別名が存在しない場合は名前(name)で照合します
- 絶対にハードコードされたワークシート ID を使用しないでください
-
ワークシートの動的識別(重要)
- ワークシート ID が固定であると仮定せず、必ず別名または名前で照合してください
get_app_worksheets_list()を通じてワークシート一覧を取得します- 優先的に
aliasフィールドで照合し、存在しない場合はnameフィールドで照合します get_worksheet_structure()を通じてワークシート構造を取得します- フィールド名または別名で必要なフィールドを照合します
MCP 確認フロー
用户请求
↓
1. 识别用户提供的 MCP 配置或指定的 MCP
↓
2. 调用 get_app_info() 确认当前连接的 MCP 应用
↓
3. 对比:当前连接 vs 用户指定的 MCP
↓
4. 如果不匹配 → 与用户确认
↓
5. 确认后执行操作
コア機能
1. コンテンツ生成フロー
完全なワークフロー
用户输入主题
↓
Step 1: 从 HAP "API服务配置" 表动态读取搜索 API 配置(Tavily/Serper)
↓
Step 2: 调用搜索 API 获取主题相关资料(Tavily API)
↓
Step 3: **【强制要求】从 HAP "账号人设" 表读取账号人设配置(必须在生成内容之前执行)**
- **禁止使用本地文件**:绝对不允许使用 `AGENTS.md` 或其他本地文件作为账号人设来源
- **必须调用 HAP MCP**:必须通过 MCP 调用 `get_record_list()` 从 HAP "账号人设" 表读取
- **读取流程**:
1. 确认当前连接的 HAP MCP 应用(通过 `get_app_info()`)
2. 动态获取"账号人设"表的 ID(通过别名 `account_persona` 或名称 `账号人设` 匹配)
3. 根据 `platform_type` 查询对应平台的账号人设(如:小红书)
4. **读取所有必需字段**:
- 账号定位(positioning)
- 目标受众(target_audience)
- 内容方向(content_direction)
- 内容风格(content_style)**【必须严格遵循】**
- 内容原则(content_principles)**【必须严格遵守】**
- 图片生成提示词(image_generation_prompt)
- **验证要求**:如果未找到账号人设配置,必须抛出异常,不允许继续生成内容
↓
Step 4: 根据搜索结果和账号人设撰写内容
- **严格遵循账号人设**:必须严格按照从 HAP 读取的 `content_style` 和 `content_principles` 生成内容
- **禁止使用本地人设**:不允许参考或使用本地 `AGENTS.md` 文件中的内容
- **结合搜索资料**:将搜索到的资料与从 HAP 读取的账号人设结合,生成符合账号定位的内容
- **确保符合人设**:确保内容符合目标受众、内容方向和账号定位
↓
Step 5: 生成封面标题(5-10个备选)
- 根据账号人设的内容风格生成标题
- 符合账号定位和目标受众
↓
Step 6: 选择话题标签(从 HAP 话题库)
- 根据内容主题和账号人设的内容方向选择
↓
Step 7: 生成配图建议
- 结合账号人设的图片生成提示词风格
- 根据内容主题生成配图建议
↓
Step 8: 保存到本地文件(预览,按笔记目录结构组织)
↓
Step 9: 与用户确认内容、标题、图片
↓
Step 10: 用户确认后,从 HAP "账号人设" 表读取图片生成提示词(图片风格)
↓
Step 11: 从 HAP "API服务配置" 表动态读取图片生成功能配置
↓
Step 12: 结合图片风格提示词和配图建议,生成完整提示词
↓
Step 13: 提取密钥,生成图片(可选,使用配置的 API 服务)
↓
Step 14: 与用户确认是否直接发布至小红书
↓
Step 15: 与用户确认是否同步到 HAP,确认后才上传
- **小红书笔记**:只上传图片 URL(封面图和其他配图),不上传 Markdown 文档
- **其他平台**:根据平台需求上传图片和文档
- **关联选题(如果适用)**:
- 如果内容是基于选题库中的选题创作的,在创建内容记录时关联对应的选题(`related_topic` 字段)
- 如果内容不是基于选题创作的,不关联选题
↓
Step 16: 发布到目标平台(使用 Playwright MCP,如用户确认)
毎日のトレンドコンテンツ推薦ワークフロー
用户请求热点内容推荐
↓
Step 1: 从 HAP "热点平台关注表" 读取用户关注的平台(is_followed = 1)
- 按优先级(priority)排序
- 获取平台代码(platform_code)
↓
Step 2: 从 HAP "API服务配置" 表读取热点新闻 API 配置
- 功能名称:热点新闻API
- 服务类型:热点新闻
- Endpoint URL: https://orz.ai/api/v1/dailynews
↓
Step 3: 调用热点新闻 API 获取各平台热点
- 对每个关注的平台调用:GET https://orz.ai/api/v1/dailynews/?platform={platform_code}
- 获取热点标题、URL、评分、描述等信息
- 合并所有平台的热点数据
↓
Step 4: 从 HAP "账号人设" 表读取账号人设配置
- 账号定位(positioning)
- 目标受众(target_audience)
- 内容方向(content_direction)
- 内容风格(content_style)
- 内容原则(content_principles)
↓
Step 5: 基于热点和账号人设分析选题
- 筛选与账号定位和内容方向相关的热点
- 分析每个热点的选题价值(热度、相关性、可创作性)
- 生成 5-10 个选题建议,每个选题包含:
- 选题标题
- 来源平台
- 选题角度(如何结合账号人设)
- 预期内容方向
- 推荐理由
- 相关度评分(1-10分)
- **按相关度评分排序,标注最推荐的选题**
↓
Step 6: 以 Markdown 表格形式展示选题建议,供用户选择
- **必须使用 Markdown 表格格式展示**,更加直观
- **表格结构**:
- 最推荐选题表格(AI 相关或评分 10/10 的选题)
- 其他推荐选题表格(评分 6-9/10 的选题)
- **表格列**:序号、选题标题、来源平台、选题角度、推荐理由、相关度评分
- **明确标注最推荐的选题**(如:⭐ 最推荐选题)
- 展示所有选题建议
- 用户选择一个或多个选题
↓
Step 6.5: 询问用户是否将选题加入选题库
- **询问用户**:是否将推荐的选题加入 HAP "选题库" 表
- **询问方式**:在展示选题建议后,询问"是否将这些选题加入选题库?"
- 如果用户确认,将用户选择的选题保存到 HAP "选题库" 表:
- `topic_title`: 选题标题
- `source_platform`: 来源平台(关联热点平台关注表,使用平台记录的 rowid)
- `topic_angle`: 选题角度
- `recommendation_reason`: 推荐理由
- `relevance_score`: 相关度评分
- `source_url`: 原文链接
- `content_preview`: 内容预览
- `topic_status`: 选题状态(默认:待创作)
- 如果用户不加入,跳过此步骤
- **批量保存**:如果用户选择了多个选题,使用 `batch_create_records` 批量保存
↓
Step 7: 用户选择选题后,深度搜索相关资料
- 从 HAP "API服务配置" 表读取搜索 API 配置(Tavily)
- 基于选题标题和角度,调用搜索 API 获取深度资料
- 结合热点新闻中的原始信息
↓
Step 8: 基于热点信息和搜索资料生成内容
- 结合热点信息(原始标题、描述、URL)
- 结合搜索到的深度资料
- 严格遵循账号人设中的内容风格和内容原则
- 生成符合账号定位的内容
↓
Step 9: 后续流程与标准内容生成流程相同
- 生成封面标题(5-10个备选)
- 选择话题标签(从 HAP 话题库)
- 生成配图建议
- 保存到本地文件(预览)
- 与用户确认内容、标题、图片
- 生成图片(用户确认后)
- 同步到 HAP(用户确认后):
- **如果内容是基于选题库中的选题创作的**:
- 在创建内容记录时,关联对应的选题(`related_topic` 字段)
- 更新选题状态为"创作中"或"已创作"
- 选题库中的 `related_content` 字段会自动关联已创作的内容(双向关联)
- **如果内容不是基于选题创作的**:
- 不关联选题,`related_topic` 字段留空
- 发布到目标平台(用户确认后)
トレンドニュース API の使用説明:
API アドレス: https://orz.ai/api/v1/dailynews
リクエスト方式: GET
パラメータ:
platform:プラットフォームコード(必須)、対応するプラットフォームコードは「トレンドプラットフォームフォローテーブル」の説明を参照
リクエスト例:
GET https://orz.ai/api/v1/dailynews/?platform=baidu
GET https://orz.ai/api/v1/dailynews/?platform=weibo
GET https://orz.ai/api/v1/dailynews/?platform=zhihu
レスポンス形式:
{
"status": "200",
"data": [
{
"title": "热点标题",
"url": "热点链接",
"score": "热度评分",
"desc": "热点描述"
}
],
"msg": "success"
}
設定の説明:
- HAP の「APIサービス設定」テーブルにレコードを追加します:
- 機能名:トレンドニュースAPI(タイトルフィールド)
- サービスプロバイダー:orz.ai
- サービスタイプ:トレンドニュース(ドロップダウンリストから選択)
- Endpoint URL:https://orz.ai/api/v1/dailynews(**必ず入力**)
- 用途説明:各プラットフォームのトレンドニュースデータを取得し、毎日のトレンドコンテンツ推薦をサポートします
- 設定状態:有効
トレンドプラットフォームフォローテーブルの設定:
- ユーザーは HAP の「トレンドプラットフォームフォローテーブル」にフォローするプラットフォームを追加する必要があります
is_followed = 1(チェック)に設定すると、このプラットフォームをフォローしていることを示しますpriority(優先度、1〜10)を設定して取得順序を制御しますplatform_codeはトレンドニュース API がサポートするプラットフォームコードと一致している必要があります
テーマ提案の表示形式(重要):
- テーマ提案は必ず Markdown テーブル形式で表示し、より直感的にします
- テーブル構造の例:
## ⭐ 最推荐选题(AI 相关,强烈推荐) | 序号 | 选题标题 | 来源平台 | 选题角度 | 推荐理由 | |------|---------|---------|---------|---------| | 1 | 选题标题1 | 平台1 | AI 技术科普 | 符合账号定位... | ## 📌 其他推荐选题 | 序号 | 选题标题 | 来源平台 | 选题角度 | 推荐理由 | 相关度 | |------|---------|---------|---------|---------|--------| | 1 | 选题标题2 | 平台2 | 技术趋势解读 | 符合内容方向... | 8/10 | - 最も推薦するテーマを必ず明記します(例:⭐ 最も推薦するテーマ、関連度スコア 10/10)
- 関連度スコア順に並べ、最も推薦するテーマを先頭に配置します
- 各テーマに含めるもの:タイトル、ソースプラットフォーム、テーマの切り口、推薦理由、関連度スコア
- 会話内でファイルを生成せず、会話内で直接 Markdown テーブル形式で表示します
2. プラットフォームサポート
小紅書
コンテンツ形式:
- タイトル:10文字以内、疑問形/数字形/悩み形/反差形
- 本文:300〜400文字、ストーリー仕立ての冒頭、明確な構成
- トピックタグ:5〜8個、HAP のトピックライブラリから選択
- 画像:カバー画像 + 2〜3枚の添付画像
投稿フロー:
https://creator.xiaohongshu.com/publish/publish?type=image_textに移動します- 画像をアップロードします(
setInputFilesを使用) - タイトルを入力します
- 本文を入力します(トピックタグを含む)
- 投稿をクリックします
HAP ワークシート:
- ワークシート名:
内容管理(汎用テーブル、マルチプラットフォーム対応) - フィールド:
platform_type:プラットフォームタイプ(SingleSelect: 小紅書/抖音/WeChat公式アカウント/動画号/その他)content_title:コンテンツタイトル(タイトルフィールド)cover_title:カバータイトルcontent:本文内容tags:トピックタグ(スペース区切り)cover_image:カバー画像(添付ファイル)other_images:その他の添付画像(添付ファイル)markdown_doc:Markdown ドキュメント(添付ファイル)publish_status:投稿ステータス(下書き/投稿待ち/投稿済み/キャンセル済み)publish_time:投稿時間note_url:コンテンツリンク(投稿後に更新、プラットフォームによって呼び方が異なる場合があります)views:閲覧数likes:いいね数collections:お気に入り数comments:コメント数
抖音
コンテンツ形式:
- 動画の長さ:15〜60秒
- 文案:50文字以内
- トピックタグ:3〜5個
投稿フロー:
https://creator.douyin.com/に移動します- 動画をアップロードします
- 文案を入力します
- トピックを追加します
- 投稿をクリックします
WeChat公式アカウント
コンテンツ形式:
- タイトル:64文字以内
- 本文:2000〜5000文字(HTML形式)
- 概要:記事の概要
- カバー:カバー画像
投稿フロー:
https://mp.weixin.qq.com/に移動します- 「新しい記事を書く」をクリックします
- タイトル、本文、概要を入力します
- カバー画像を設定します
- 投稿をクリックします
動画号
コンテンツ形式:
- 動画の長さ:30秒〜30分
- 文案:1000文字以内
- トピック:3〜5個
投稿フロー:
- 動画号管理バックエンドにログインします
- 「動画を投稿」をクリックします
- 動画をアップロードします
- 文案とトピックを入力します
- 投稿をクリックします
3. 資料検索(Tavily API)
Tavily API を使用して関連資料を検索する
API サービス設定管理:
検索 API の設定は HAP の「APIサービス配置」テーブルに統一的に保存され、機能ごとに分類され、各機能につき 1 件のレコードにすべての設定フィールドが含まれます。
重要:設定は動的に取得され、ハードコードされません
設定の読み取りフロー:
- MCP 接続の確認:まず現在接続している HAP アプリの MCP を確認します(
get_app_info()を使用) - 設定のクエリ:HAP の「APIサービス配置」テーブルから検索 API の設定をクエリします
- 設定の照合:
function_name(機能名。例:「Tavily 搜索API」)またはservice_type(サービスタイプ:搜索API)に基づいて設定を照合します - ステータスの検証:
config_status(設定ステータス)が「启用」であることを検証します - 設定の読み取り:その機能のすべての設定フィールド(API Key、Base URL など)を読み取ります
Tavily API 設定例:
# Step 1: 确认当前连接的 MCP 应用
current_app = mcp_hap-mcp-_get_app_info()
current_app_name = current_app['data']['name']
# Step 2: 动态获取工作表列表,通过别名匹配找到"API服务配置"表
# 重要:优先使用别名(alias)匹配,不要使用硬编码的 ID
worksheets = mcp_hap-mcp-_get_app_worksheets_list()
api_config_worksheet_id = None
for ws in worksheets:
# 优先通过别名匹配,如果别名不存在则使用名称匹配
if ws.get('alias') == 'api_service_config' or ws.get('name') == 'API服务配置':
api_config_worksheet_id = ws['id']
break
if not api_config_worksheet_id:
raise Exception(f"在应用「{current_app_name}」中未找到「API服务配置」表(别名:api_service_config)")
# Step 3: 查询 Tavily 搜索 API 配置
configs = mcp_hap-mcp-_get_record_list(
worksheet_id=api_config_worksheet_id,
filter={
"type": "group",
"logic": "AND",
"children": [
{
"type": "condition",
"field": "function_name",
"operator": "contains",
"value": ["Tavily"]
},
{
"type": "condition",
"field": "config_status",
"operator": "eq",
"value": ["启用"]
}
]
}
)
# Step 4: 提取配置并调用 API
if configs and len(configs) > 0:
config = configs[0]
api_key = config.get('api_key') # Tavily API Key(必需)
endpoint_url = config.get('endpoint_url') # Endpoint URL(必需)
# 验证必需字段
if not api_key:
raise Exception("Tavily API Key 未配置,请在 HAP 'API服务配置' 表中填写 api_key 字段")
if not endpoint_url:
raise Exception("Endpoint URL 未配置,请在 HAP 'API服务配置' 表中填写 endpoint_url 字段")
# 调用 Tavily API 搜索
import requests
response = requests.post(
f"{endpoint_url}/search",
headers={"Content-Type": "application/json"},
json={
"api_key": api_key,
"query": topic, # 用户输入的主题
"search_depth": "basic",
"max_results": 5,
"topic": "general",
"include_answer": False,
"include_raw_content": False,
"include_images": False
}
)
search_results = response.json().get('results', [])
# 使用搜索结果生成内容
Tavily API 設定フィールドの説明(必須フィールド):
function_name: 機能名(Text、タイトルフィールド。例:「Tavily 搜索API」)provider: サービスプロバイダー(Text。例:「Tavily」)service_type: サービスタイプ(SingleSelect: 搜索API/图片生成/内容生成/数据分析/其他)api_key: API Key(Text、必須) - Tavily API Key。例:tvly-dev-xxx...- 記入するタイミング:検索 API(Tavily、Serper など)では必ずこのフィールドを記入する必要があります
endpoint_url: Endpoint URL(Text、必須) - API のベースアドレス。例:https://api.tavily.com- 記入するタイミング:すべての API サービスでこのフィールドを記入する必要があり、API のアクセス先アドレスを指定するために使用します
config_status: 設定ステータス(SingleSelect: 启用/禁用)purpose: 用途の説明(Text。例:「用于搜索主题相关资料」)
検索フロー:
- 設定の読み取り:HAP の「APIサービス配置」テーブルから Tavily 検索 API の設定を読み取ります
- API の呼び出し:設定内の API Key を使用して Tavily API を呼び出し、テーマに関連する資料を検索します
- 結果の処理:検索結果から重要な情報(タイトル、内容、URL など)を抽出します
- アカウントペルソナの読み取り(重要:コンテンツを生成する前に必ず行う):HAP の「账号人设」テーブルからアカウントのポジショニング、コンテンツスタイル、コンテンツ原則などを読み取ります
- コンテンツの生成:検索結果とアカウントペルソナを組み合わせ、アカウントペルソナ内のコンテンツスタイルとコンテンツ原則に厳密に従って、高品質なコンテンツを生成します
検索パラメータの説明:
query: 検索テーマ(ユーザー入力)search_depth: 検索の深さ(basic/advanced、basic を推奨)max_results: 最大結果数(5 を推奨)topic: トピックタイプ(general/tech/business など)include_answer: 回答の要約を含めるかどうか(False)include_raw_content: 生のコンテンツを含めるかどうか(False)include_images: 画像を含めるかどうか(False)
機能設定の例(HAP テーブル内):
- 機能名:Tavily 搜索API(タイトルフィールド)
- サービスプロバイダー:Tavily
- サービスタイプ:搜索API(ドロップダウンリストから選択)
- 用途の説明:用于搜索主题相关资料,获取最新信息
- API Key:tvly-dev-xxx...(必ず記入、Tavily API Key)
- Endpoint URL:https://api.tavily.com(**必ず記入**、API のベースアドレス)
- 設定ステータス:启用(ドロップダウンリストから選択)
ホットニュース API の設定例(HAP テーブル内):
- 機能名:热点新闻API(タイトルフィールド)
- サービスプロバイダー:orz.ai
- サービスタイプ:热点新闻(ドロップダウンリストから選択)
- 用途の説明:用于获取各平台的热点新闻数据,支持每日热点内容推荐
- Endpoint URL:https://orz.ai/api/v1/dailynews(**必ず記入**、API のベースアドレス)
- 設定ステータス:启用(ドロップダウンリストから選択)
重要なヒント:
api_keyとendpoint_urlは検索 API の必須フィールドであり、必ず記入する必要がありますapi_keyは API 認証に使用しますendpoint_urlは API のアクセス先アドレスを指定するために使用し、形式はhttps://api.tavily.comのようになります- ホットニュース API には
api_keyは不要で、endpoint_urlのみを記入すればよいです
4. コンテンツ生成の規範
アカウントペルソナ設定(重要:必ず最初に読み取る)
HAP の「账号人设」テーブルからアカウントペルソナ設定を読み取る必要があります:
重要な原則:コンテンツを生成する前に、必ずまず HAP の「账号人设」テーブルからアカウントペルソナ設定を読み取り、アカウントのポジショニングとコンテンツルールに厳密に従ってください。
強制要件:
- ローカルファイルの使用禁止:
AGENTS.mdやその他のローカルファイルをアカウントペルソナのソースとして使用することは絶対に許可されません - 必ず HAP から読み取る:HAP MCP を通じて
get_record_list()を呼び出し、HAP の「账号人设」テーブルから読み取る必要があります - 必ずコンテンツ生成の前に実行する:アカウントペルソナ設定が読み取れなかった場合は、例外をスローし、コンテンツ生成を続行してはなりません
- 必ず厳密に従う:コンテンツを生成する際は、HAP から読み取った
content_styleとcontent_principlesに厳密に従って実行する必要があります
読み取りフロー:
- 現在接続している MCP アプリを確認します
- 「账号人设」テーブルの ID を動的に取得します(エイリアスマッチングによる)
platform_nameまたはplatform_typeに基づいて、対応するプラットフォームのアカウントペルソナをクエリします- すべての必須フィールドを読み取ります:
- アカウントのポジショニング(positioning):アカウントの核心的なポジショニングを理解します
- ターゲットオーディエンス(target_audience):コンテンツが向けられる対象のオーディエンス層を理解します
- コンテンツの方向性(content_direction):コンテンツの主要な方向性を理解します
- コンテンツスタイル(content_style):コンテンツが採用すべきスタイルを理解します(厳密に従う必要があります)
- コンテンツ原則(content_principles):コンテンツ制作の原則と注意事項を理解します(厳守する必要があります)
- 画像生成プロンプト(image_generation_prompt):画像スタイルの要件を理解します
- コンテンツ生成への適用:コンテンツを生成する際、アカウントペルソナ内のコンテンツスタイルとコンテンツ原則に厳密に従います
アカウントペルソナテーブルのフィールド:
platform_name: プラットフォーム名(Text、タイトルフィールド)platform_type: プラットフォームタイプ(SingleSelect: 小红书/抖音/微信公众号/视频号)positioning: アカウントのポジショニング(Text、必須) - アカウントの核心的なポジショニング。コンテンツの方向性を導くために使用しますtarget_audience: ターゲットオーディエンス(Text、必須) - コンテンツが向けられるオーディエンス層。コンテンツのスタイルと深さを調整するために使用しますcontent_direction: コンテンツの方向性(Text、必須) - コンテンツの主要な方向性。コンテンツのテーマと範囲を決定するために使用しますcontent_style: コンテンツスタイル(Text、必須) - コンテンツが採用すべきスタイル。厳密に従う必要があります- 例:专业但不高冷,用通俗易懂的语言解释复杂概念。简单直白,避免专业术语堆砌,必要时用类比和例子说明。
content_principles: コンテンツ原則(Text、必須) - コンテンツ制作の原則と注意事項。厳守する必要があります- 例:✅ 用简单语言解释复杂技术,让非技术人员也能理解;❌ 避免过度使用专业术语
image_generation_prompt: 画像生成プロンプト(Text) - 画像を生成するためのスタイルプロンプト- 用途:画像を生成するためのスタイルプロンプト。画像全体のスタイル、色彩、構図などを設定できます
- 使用方法:画像を生成する際、このプロンプトを具体的な画像内容の説明と組み合わせます
- 例:中文手写信息海报风格插画,纵向构图,奶油系浅色底,可爱治愈、轻松幽默的科普视觉语言
使用例(必ずこのフローに厳密に従って実行してください):
# Step 1: 确认当前连接的 HAP MCP 应用
current_app = mcp_hap-mcp-_get_app_info()
current_app_name = current_app['data']['name']
print(f"当前连接的 HAP 应用:{current_app_name}")
# Step 2: 通过别名匹配找到"账号人设"表(不要使用硬编码 ID)
worksheets = mcp_hap-mcp-_get_app_worksheets_list()
persona_worksheet_id = None
for ws in worksheets:
# 优先通过别名匹配,如果别名不存在则使用名称匹配
if ws.get('alias') == 'account_persona' or ws.get('name') == '账号人设':
persona_worksheet_id = ws['id']
break
if not persona_worksheet_id:
raise Exception(f"在应用「{current_app_name}」中未找到「账号人设」表(别名:account_persona)。请确保 HAP 应用中存在此表。")
# Step 3: 查询小红书账号人设(重要:必须在生成内容之前读取)
personas = mcp_hap-mcp-_get_record_list(
worksheet_id=persona_worksheet_id, # 使用通过别名匹配获取的 ID
filter={
"type": "group",
"logic": "AND",
"children": [
{
"type": "condition",
"field": "platform_type",
"operator": "eq",
"value": ["小红书"]
}
]
}
)
# Step 4: 验证是否读取到账号人设(强制要求)
if not personas or len(personas) == 0:
raise Exception(f"在应用「{current_app_name}」的「账号人设」表中未找到小红书账号人设配置。请先在 HAP 中添加账号人设记录。")
persona = personas[0]
# Step 5: 读取所有账号人设字段(必需)
positioning = persona.get('positioning') # 账号定位
target_audience = persona.get('target_audience') # 目标受众
content_direction = persona.get('content_direction') # 内容方向
content_style = persona.get('content_style') # 内容风格(必须严格遵循)
content_principles = persona.get('content_principles') # 内容原则(必须严格遵守)
image_prompt_base = persona.get('image_generation_prompt', '') # 图片风格基础提示词
# Step 6: 验证必需字段是否存在
if not content_style:
raise Exception(f"账号人设配置中缺少「内容风格」(content_style)字段,无法生成内容。")
if not content_principles:
raise Exception(f"账号人设配置中缺少「内容原则」(content_principles)字段,无法生成内容。")
# Step 7: 打印账号人设信息(用于确认)
print(f"\n✅ 已从 HAP 读取账号人设配置:")
print(f" - 账号定位:{positioning}")
print(f" - 目标受众:{target_audience}")
print(f" - 内容方向:{content_direction}")
print(f" - 内容风格:{content_style[:100]}...")
print(f" - 内容原则:{content_principles[:100]}...")
# Step 8: 根据账号人设和搜索结果生成内容
# **必须严格遵循从 HAP 读取的 content_style 和 content_principles**
# **禁止使用本地 AGENTS.md 文件或其他本地文件**
# 生成内容示例:
# 1. 根据 content_style 确定写作风格(如:通俗易懂、专业但不高冷等)
# 2. 根据 content_principles 确定内容原则(如:用简单语言解释复杂技术、避免专业术语堆砌等)
# 3. 根据 positioning 确定内容定位(如:IT公司产品经理视角)
# 4. 根据 target_audience 调整内容深度和表达方式
# 5. 根据 content_direction 确定内容主题和范围
# 6. 结合搜索结果中的资料,生成符合账号人设的内容
# 生成标题时,也要遵循从 HAP 读取的 content_style 和 positioning
# 生成配图建议时,要结合从 HAP 读取的 image_prompt_base
# 生成图片时,将从 HAP 读取的 image_prompt_base 与具体内容结合
コンテンツ執筆要件(重要:アカウントペルソナに必ず従うこと)
コンテンツ生成フロー:
- まずアカウントペルソナを読み込む:HAP の「アカウントペルソナ」テーブルからアカウントのポジショニング、コンテンツスタイル、コンテンツ原則などを読み込む(必ずコンテンツ生成の前に行う)
- 検索資料と組み合わせる:検索した資料とアカウントペルソナを組み合わせる
- アカウントペルソナに厳格に従う:
- 必ず
content_style(コンテンツスタイル)に従って執筆する - 必ず
content_principles(コンテンツ原則)を守る - コンテンツが
positioning(アカウントポジショニング)に適合することを確認する - コンテンツが
target_audience(ターゲットオーディエンス)に適合することを確認する - コンテンツが
content_direction(コンテンツ方向性)に適合することを確認する
- 必ず
小紅書ノート(300~400字)の共通要件:
- 冒頭で引きつける:ストーリー仕立ての書き出しで、感情的な色彩を帯びさせる(興奮/好奇心/思考)、プロダクトマネージャーの視点で
- 技術解説:簡単な言葉で複雑な概念を説明し、専門用語の羅列を避ける
- プロダクト視点:技術が業界とユーザーに与える影響を分析する
- まとめと昇華:行動提案/思考のヒント
コンテンツ生成フロー(wechat-article-writer スキルを参照):
- Step 1: 資料を検索する(Tavily API)
- Step 2: 記事を執筆する(必ず先にアカウントペルソナを読み込む)
- Step 3: タイトルを生成する(5~10個の候補、小紅書のバズるタイトルスタイルを参考にする)
- Step 4: レイアウト最適化 + 画像提案
WeChat 公式アカウント記事(2000~5000字)の共通要件:
- タイトル:目を引く、64字以内
- 要約:記事の核心的な主張
- 本文:HTML 形式、構造が明確
- はじめに
- 本文コンテンツ(章ごとに分割)
- まとめ
- 画像:カバー画像 + 本文用画像
注意:上記は共通要件であり、実際に執筆する際は必ずアカウントペルソナの content_style と content_principles に厳格に従うこと。
カバータイトル生成(必ずアカウントペルソナに従い、小紅書のバズるタイトルスタイルを参考にする)
5~10個の候補タイトルを生成し、小紅書のバズるタイトルの特徴を参考にする:
タイトルの種類:
- 疑問形:好奇心を引き起こす(「agentic とは?AI がついに自分で仕事をこなせるように」)
- 数字形:具体的な数字はより説得力がある(「3分でわかる agentic AI!」)
- 悩み形:読者の痛みに直接訴える(「まだ手動で操作してる?agentic AI なら一度の指示で全部解決」)
- 対比形:衝突を生み出す(「AI はもう『指示待ち』しない!agentic で AI が主体的に働く」)
- 暴露形:悬念を生み出す(「agentic を暴く:AI が『Q&A マシン』から『インテリジェントアシスタント』への進化」)
- 結果形:先に価値を示す(「AI も自律的に意思決定できるようになった!agentic とは一体何なのか?」)
- 比較形:違いを明確に示す(「従来の AI vs agentic AI:受動的な応答から能動的な実行へ」)
- トレンド形:時代感を強調する(「agentic とは?AI の『デジタル従業員』時代が到来」)
- 身分ラベル形:アカウントペルソナに合致する(「プロダクトマネージャーの視点:agentic AI は私たちの働き方をどう変えるか」)
重要:
- タイトルスタイルは必ずアカウントペルソナの
content_style(コンテンツスタイル)に適合させること - タイトルはアカウントペルソナの
positioning(アカウントポジショニング)とtarget_audience(ターゲットオーディエンス)に適合させること - 小紅書のバズるタイトルの特徴を参考にする:目を引く、好奇心を引き起こす、価値を強調する、学習ハードルを下げる
- 第一候補のタイトルを推薦し、その理由を説明する
トピックタグの選択(必ずアカウントペルソナに適合させること)
HAP のトピックライブラリテーブルから選ぶ:
選択戦略:
- 優先的に高熱度タグを使用する(露出を高める)
- テーマに応じてトピックタイプをマッチングする
- 精密なタグを組み合わせてターゲットユーザーを引きつける
- タグがアカウントペルソナの
content_direction(コンテンツ方向性)とtarget_audience(ターゲットオーディエンス)に適合することを確認する
クエリ方法:
# Step 1: 通过别名匹配找到"话题库"表(不要使用硬编码 ID)
worksheets = mcp_hap-mcp-_get_app_worksheets_list()
topics_worksheet_id = None
for ws in worksheets:
# 优先通过别名匹配,如果别名不存在则使用名称匹配
if ws.get('alias') == 'topic_library' or ws.get('name') == '话题库':
topics_worksheet_id = ws['id']
break
if not topics_worksheet_id:
raise Exception(f"在应用「{current_app_name}」中未找到「话题库」表(别名:topic_library)")
# Step 2: 查询高热度话题
mcp_hap-mcp-_get_record_list(
worksheet_id=topics_worksheet_id, # 使用通过别名匹配获取的 ID
filter={
"type": "group",
"logic": "AND",
"children": [
{
"type": "condition",
"field": "heat_level",
"operator": "eq",
"value": ["高热度"]
}
]
}
)
# 查询特定平台的内容(通过别名匹配获取工作表ID)
# Step 1: 通过别名匹配找到"内容管理"表(不要使用硬编码 ID)
worksheets = mcp_hap-mcp-_get_app_worksheets_list()
content_worksheet_id = None
for ws in worksheets:
# 优先通过别名匹配,如果别名不存在则使用名称匹配
if ws.get('alias') == 'content_management' or ws.get('name') == '内容管理':
content_worksheet_id = ws['id']
break
if not content_worksheet_id:
raise Exception(f"在应用「{current_app_name}」中未找到「内容管理」表(别名:content_management)")
# Step 2: 查询小红书内容
mcp_hap-mcp-_get_record_list(
worksheet_id=content_worksheet_id,
filter={
"type": "group",
"logic": "AND",
"children": [
{
"type": "condition",
"field": "platform_type",
"operator": "eq",
"value": ["小红书"]
}
]
}
)
4. 画像生成
支持多个图片生成 API 配置
API 服务配置管理:
所有 API 服务配置统一存储在 HAP "API服务配置" 表中,按功能分类,每个功能一条记录包含所有配置字段。
重要:配置是动态获取的,不硬编码
多配置选择机制:
- 支持多个图片生成 API 配置:可以在 HAP "API服务配置" 表中配置多个图片生成 API(如 TUZI API、火山引擎即梦 API 等)
- "是否默认"字段控制:通过
is_default(是否默认)字段控制使用哪个配置- 如果存在标记为"默认"的配置,优先使用该配置
- 如果没有默认配置,使用第一个启用的配置
- 配置状态控制:只有
config_status(配置状态)为"启用"的配置才会被使用
配置读取流程:
- 确认 MCP 连接:先确认当前连接的 HAP 应用 MCP(通过
get_app_info()) - 查询配置:从 HAP "API服务配置" 表查询所有图片生成类型的配置(
service_type = 图片生成且config_status = 启用) - 选择配置:
- 优先选择
is_default = 1(是默认)的配置 - 如果没有默认配置,使用第一个启用的配置
- 优先选择
- 读取配置:读取该配置的所有配置字段(API Key、Endpoint URL、Access Key ID 等)
配置选择示例:
# Step 1: 确认当前连接的 MCP 应用
current_app = mcp_hap-mcp-_get_app_info()
current_app_name = current_app['data']['name']
# Step 2: 通过别名匹配找到"API服务配置"表
worksheets = mcp_hap-mcp-_get_app_worksheets_list()
api_config_worksheet_id = None
for ws in worksheets:
if ws.get('alias') == 'api_service_config' or ws.get('name') == 'API服务配置' or ws.get('name') == '密钥管理':
api_config_worksheet_id = ws['id']
break
if not api_config_worksheet_id:
raise Exception(f"在应用「{current_app_name}」中未找到「API服务配置」表(别名:api_service_config)")
# Step 3: 查询所有图片生成 API 配置(启用状态)
configs = mcp_hap-mcp-_get_record_list(
worksheet_id=api_config_worksheet_id,
filter={
"type": "group",
"logic": "AND",
"children": [
{
"type": "condition",
"field": "service_type",
"operator": "eq",
"value": ["图片生成"]
},
{
"type": "condition",
"field": "config_status",
"operator": "eq",
"value": ["启用"]
}
]
}
)
# Step 4: 选择配置(优先使用默认配置)
if configs and len(configs) > 0:
# 优先选择标记为"默认"的配置
default_config = None
for config in configs:
if config.get('is_default') == 1:
default_config = config
break
# 如果没有默认配置,使用第一个启用的配置
if not default_config:
default_config = configs[0]
config = default_config
# 根据服务提供商读取对应的配置字段
provider = config.get('provider', '').upper()
if 'TUZI' in provider:
# TUZI API (OpenAI 兼容接口)
api_key = config.get('api_key') # 必需
endpoint_url = config.get('endpoint_url', 'https://api.tu-zi.com/v1') # 必需
# 使用 OpenAI SDK 调用
elif '火山引擎' in provider or '即梦' in config.get('function_name', ''):
# 火山引擎即梦 API
access_key_id = config.get('access_key_id') # 必需
secret_access_key = config.get('secret_access_key') # 必需
region = config.get('region', 'cn-beijing')
service = config.get('service', 'cv')
api_version = config.get('api_version', 'jimeng_t2i_v31')
sdk_name = config.get('sdk_name', 'volcenginesdkcv20240606')
# 使用火山引擎 SDK 调用
生成流程:
- 确认 MCP:确认当前连接的 HAP 应用 MCP(通过用户提供或指定)
- 读取账号人设:从 HAP "账号人设" 表读取对应平台的账号人设配置
- 获取图片风格:从账号人设中提取
image_generation_prompt(图片生成提示词) - 动态读取配置:从 HAP "API服务配置" 表查询所有图片生成类型的配置
- 选择配置:
- 优先选择
is_default = 1(是默认)的配置 - 如果没有默认配置,使用第一个启用的配置
- 优先选择
- 提取密钥:根据服务提供商提取对应的密钥字段
- TUZI API:
api_key、endpoint_url - 火山引擎即梦:
access_key_id、secret_access_key、region、service等
- TUZI API:
- 生成提示词:将账号人设中的图片风格提示词与具体配图建议结合,生成完整的图片生成提示词
- 格式:
{image_generation_prompt},{具体配图内容描述} - 示例:
手绘风格插画,清新活泼的卡通插画风格,{具体图片内容}
- 格式:
- 调用 API 生成图片:
- TUZI API:使用 OpenAI SDK,支持多个模型(gemini-3-pro-image-preview、dall-e-3、dall-e-2)
- 必须使用
response_format="url"参数:确保 API 返回 URL 格式而非 base64 - 请求参数:
model、prompt、n=1、response_format="url"、size="{width}x{height}"
- 必须使用
- 火山引擎即梦:使用火山引擎 SDK
- 并行生成:使用线程池并行生成多张图片(最多3个并发),大幅提升生成速度
- 自动跳过已存在:检查本地文件是否存在,如果已存在则跳过生成,节省时间和成本
- TUZI API:使用 OpenAI SDK,支持多个模型(gemini-3-pro-image-preview、dall-e-3、dall-e-2)
- 处理 API 响应:
- 优先处理 URL:如果 API 返回 HTTP/HTTPS URL,直接使用
- 处理 base64 数据:如果 API 返回 base64 数据(data URI 或 base64 字符串),自动解码并保存为图片文件
- 错误处理:如果 API 返回无效数据,记录错误并继续生成其他图片
- 保存图片:
- 保存图片 URL:保存图片 URL 到
配图/image_urls.json(只保存 URL,不保存 base64) - 自动下载图片:从 URL 自动下载图片文件到
配图/{图片名称}.png,方便本地查看和展示 - 图片文件命名:封面图.png、对比图.png、流程图.png、应用场景图.png 等
- 下载失败处理:如果下载失败,保留 URL 并记录警告,不影响后续流程
- 保存图片 URL:保存图片 URL 到
- 上传到 HAP:
- 小红书笔记:只上传图片 URL(封面图和其他配图)到 HAP 附件字段,不上传 Markdown 文档
- 其他平台:根据平台需求上传图片和文档
- 上传时使用 URL:上传到 HAP 时使用图片 URL,不需要 base64 数据
图片格式要求(小红书):
- 尺寸:768x1024(小红书 3:4 格式,竖屏)
- 风格:手绘风格插画(清新活泼的卡通插画风格)
- 内容要求:图片内容必须与正文内容强相关,表达核心含义(流程、介绍、对比等)
图片类型(必须遵循账号人设):
- 封面图:结合账号人设的图片风格提示词 + 具体内容描述 + 封面标题文字
- 封面图必须包含封面标题文字,使用粗体装饰性字体,带笔画和渐变效果
- 标题文字要醒目,占据封面重要位置,符合小红书封面图设计规范
- 对比图:结合账号人设的图片风格提示词 + 对比内容描述(与内容强相关)
- 流程图:结合账号人设的图片风格提示词 + 流程内容描述(与内容强相关)
- 应用场景图:结合账号人设的图片风格提示词 + 场景内容描述(与内容强相关)
手绘风格插画特点(参考):
- 整体风格:清新活泼的卡通插画风格,充满正能量和活力
- 线条:粗黑描边,手绘质感,流畅自然
- 色彩:明亮饱和的色彩 - 橙色、黄色、蓝色、绿色、红色等温暖色调,和谐配色
- 渲染:平面风格为主,搭配简单的渐变和高光,增加立体感
- 字体:粗体装饰性字体,带笔画和渐变效果
- 氛围:积极向上、充满活力、科技感、温馨可爱
- 设计哲学:简洁明快、视觉冲击力强、适合数字媒体传播
重要:
- 配图建议必须结合账号人设中的
image_generation_prompt(图片生成提示词)来生成 - 图片内容必须与正文内容强相关,表达核心含义(流程、介绍、对比等)
- 封面图必须包含封面标题文字
- 图片格式必须符合平台要求(小红书:768x1024,3:4格式)
图片提示词生成规则:
- 从 HAP "账号人设" 表读取
image_generation_prompt(图片风格基础提示词) - 将风格提示词与具体图片内容描述结合
- 格式:
{image_generation_prompt},{具体图片内容描述,与内容强相关} - 封面图特殊要求:封面图必须包含封面标题文字
- 格式:
{image_generation_prompt},封面图内容: {具体内容描述},标题文字: "{封面标题}",使用粗体装饰性字体,带笔画和渐变效果
- 格式:
- 示例(封面图):
- 账号人设中的风格:
创建一个手绘风格的插画作品,具有以下特点: 整体风格: 清新活泼的卡通插画风格,充满正能量和活力... - 具体图片内容:
展示"agentic 是什么"的核心概念,中心是一个可爱的大脑图标,大脑周围有多个小机器人或执行箭头,表示自主规划和执行能力 - 封面标题:
3分钟搞懂 agentic AI! - 最终提示词:
{image_generation_prompt},封面图内容: 展示"agentic 是什么"的核心概念,中心是一个可爱的大脑图标,大脑周围有多个小机器人或执行箭头,表示自主规划和执行能力。上方有粗体装饰性标题文字"3分钟搞懂 agentic AI!",使用粗体装饰性字体,带笔画和渐变效果,增强视觉冲击力。标题文字要醒目,占据封面重要位置,符合小红书封面图设计规范。
- 账号人设中的风格:
- 示例(对比图):
- 账号人设中的风格:
创建一个手绘风格的插画作品... - 具体图片内容:
左右分屏对比,左侧展示传统AI - 一个简单的问答机形象,只能被动回答问题,用问号表示。右侧展示agentic AI - 一个智能助手形象,正在自主规划任务、执行操作,用执行箭头和任务卡片表示。中间用粗箭头连接,表示从"被动响应"到"主动执行"的转变。整体清晰易懂,色彩对比鲜明。 - 最终提示词:
{image_generation_prompt},{具体图片内容描述}
- 账号人设中的风格:
5. HAP 数据管理
工作表结构
内容管理表(通用表,支持多平台):
platform_type: 平台类型(SingleSelect: 小红书/抖音/微信公众号/视频号/其他)content_title: 内容标题(Text,标题字段)cover_title: 封面标题(Text)content: 正文内容(Text)tags: 话题标签(Text)cover_image: 封面图(Attachment)other_images: 其他配图(Attachment)markdown_doc: Markdown 文档(Attachment,小红书笔记不使用此字段)related_topic: 关联选题(Relation,关联选题库表,单选,双向关联)publish_status: 发布状态(SingleSelect: 草稿/待发布/已发布/已取消)publish_time: 发布时间(DateTime)note_url: 内容链接(Text,不同平台可能叫法不同)views: 浏览量(Number)likes: 点赞数(Number)collections: 收藏数(Number)comments: 评论数(Number)
重要说明:
- 小红书笔记不同步 Markdown 文档:同步小红书笔记到 HAP 时,只上传图片(封面图和其他配图),不上传 Markdown 文档
markdown_doc字段仅用于其他平台(如微信公众号),小红书笔记不使用此字段- 双向关联选题库:
- 如果内容是基于选题库中的选题创作的,需要在内容记录中关联对应的选题
- 如果内容不是基于选题创作的,可以不关联
- 选题库中的
related_content字段会自动关联已创作的内容
设计说明:
- 使用统一的"内容管理"表管理所有平台的内容
- 通过
platform_type字段区分不同平台 - 不同平台共享通用字段,特殊需求可通过备注或扩展字段处理
话题标签库表:
topic_name: 话题名称(Text)topic_type: 话题类型(SingleSelect)heat_level: 热度等级(SingleSelect: 高热度/中热度/低热度)description: 说明(Text)last_updated: 最后更新(DateTime)
选题库表:
topic_title: 选题标题(Text,标题字段)source_platform: 来源平台(Relation,关联热点平台关注表,单选)topic_angle: 选题角度(Text,如何结合账号人设)recommendation_reason: 推荐理由(Text)relevance_score: 相关度评分(Number,1-10分)source_url: 原文链接(Text)content_preview: 内容预览(Text,多行文本)topic_status: 选题状态(SingleSelect: 待创作/创作中/已创作/已取消)related_content: 关联内容(Relation,关联内容管理表,多选,双向关联)notes: 备注(Text,多行文本)
设计说明:
- 选题库用于存储推荐的选题,方便后续管理和创作
- 关联热点平台关注表,可以追溯选题来源
- 双向关联内容管理表:
- 选题库中的
related_content字段可以关联多个已创作的内容 - 内容管理表中的
related_topic字段可以关联对应的选题 - 如果内容是基于选题创作的,需要在创建内容时关联选题
- 如果内容不是基于选题创作的,可以不关联
- 选题库中的
- 选题状态用于跟踪选题的创作进度
账号人设表:
platform_name: 平台名称(Text,标题字段)platform_type: 平台类型(SingleSelect: 小红书/抖音/微信公众号/视频号)positioning: 账号定位(Text)target_audience: 目标受众(Text)content_direction: 内容方向(Text)content_style: 内容风格(Text)content_principles: 内容原则(Text)image_generation_prompt: 图片生成提示词(Text)- 用途:用于生成图片的风格提示词,可以设置图片的整体风格、色彩、构图等
- 使用方式:生成图片时,将此提示词与具体图片内容描述结合
- 示例:简洁科技风格,蓝紫色渐变背景,现代扁平设计,高质量,专业感
热点平台关注表:
platform_name: 平台名称(Text,标题字段,如:"百度热搜"、"微博热搜")platform_code: 平台代码(Text,如:"baidu"、"weibo",对应热点新闻 API 的平台代码)platform_type: 平台类型(SingleSelect: 综合新闻/科技/社交媒体/财经/技术社区/其他)is_followed: 是否关注(Checkbox)- 用户是否关注此平台的热点priority: 优先级(Number,1-10,数字越大优先级越高)description: 平台说明(Text,描述平台特点和内容类型)last_fetch_time: 最后获取时间(DateTime,记录最后一次获取该平台热点的时间)
支持的平台代码(对应热点新闻 API):
baidu: 百度热搜(社会热点、娱乐、事件)sspai: 少数派(科技、数码、生活方式)weibo: 微博热搜(社交媒体热点、娱乐、事件)zhihu: 知乎热榜(问答、深度内容、社会热点)tskr: 36氪(科技创业、商业资讯)ftpojie: 吾爱破解(技术、软件、安全)bilibili: 哔哩哔哩(视频、动漫、游戏、生活)douban: 豆瓣(书影音、文化、讨论)hupu: 虎扑(体育、游戏、数码)tieba: 百度贴吧(兴趣社区、话题讨论)juejin: 掘金(编程、技术文章)douyin: 抖音(短视频热点、娱乐)vtex: V2EX(技术、编程、创意)jinritoutiao: 今日头条(新闻、热点事件)stackoverflow: Stack Overflow(编程问答、技术讨论)github: GitHub Trending(开源项目、编程语言)hackernews: Hacker News(科技新闻、创业、编程)sina_finance: 新浪财经(财经新闻、股市资讯)eastmoney: 东方财富(财经资讯、投资理财)xueqiu: 雪球(股票投资、财经社区)cls: 财联社(财经快讯、市场动态)tenxunwang: 腾讯网(综合新闻、娱乐、科技)
API服务配置表:
function_name: 功能名称(Text,标题字段,如:"Tavily 搜索API"、"TUZI 图片生成"、"即梦图片生成"、"热点新闻API")provider: 服务提供商(Text,如:"Tavily"、"TUZI"、"火山引擎"、"orz.ai")service_type: 服务类型(SingleSelect: 搜索API/图片生成/内容生成/数据分析/热点新闻/其他)purpose: 用途说明(Text,如:"用于搜索主题相关资料"、"用于生成图片"、"用于获取热点新闻")is_default: 是否默认(Checkbox) - 用于控制使用哪个图片生成 API 配置- 用途:当存在多个图片生成 API 配置时,优先使用标记为"默认"的配置
- 使用方式:勾选表示默认使用此配置,不勾选表示非默认配置
- 选择逻辑:优先选择
is_default = 1(是默认)的配置,如果没有默认配置则使用第一个启用的配置
endpoint_url: Endpoint URL(Text,必需) - API 基础地址- 热点新闻 API:
https://orz.ai/api/v1/dailynews
- 热点新闻 API:
キー項目(ユーザーが入力可能):
api_key: API Key(Text、必須) - API 認証に使用- 入力が必要なタイミング:
- 検索 API(Tavily、Serper など):必ず入力が必要
- OpenAI、Anthropic、Midjourney など API Key 認証を使用するサービス:必ず入力が必要
- 入力が必要なタイミング:
endpoint_url: Endpoint URL(Text、必須) - API のベースアドレス- 入力が必要なタイミング:すべての API サービスで必ず入力が必要、API のアクセス先アドレスを指定するために使用
- 形式の例:
- Tavily:
https://api.tavily.com - OpenAI:
https://api.openai.com/v1 - カスタムプロキシ:
https://proxy.example.com
- Tavily:
access_key_id: Access Key ID(Text)- 入力が必要なタイミング:Volcengine、Alibaba Cloud、Tencent Cloud など Access Key 認証を使用するサービスで入力が必要
secret_access_key: Secret Access Key(Text)- 入力が必要なタイミング:Access Key ID とペアで使用、Volcengine、Alibaba Cloud、Tencent Cloud などで入力が必要
api_secret: API Secret(Text)- 入力が必要なタイミング:API Key とペアで使用、一部のサービスで入力が必要
token: Token(Text)- 入力が必要なタイミング:GitHub、GitLab、JWT Token 認証のサービスで入力が必要
app_id: App ID(Text)- 入力が必要なタイミング:WeChat、WeCom、DingTalk など App ID 認証を使用するサービスで入力が必要
app_secret: App Secret(Text)- 入力が必要なタイミング:App ID とペアで使用、WeChat、WeCom、DingTalk などで入力が必要
設定項目:
endpoint_url: Endpoint URL(Text、必須) - API のベースアドレス- 入力が必要なタイミング:すべての API サービスで必ず入力が必要
- 形式の例:
- Tavily 検索 API:
https://api.tavily.com - OpenAI API:
https://api.openai.com/v1 - Volcengine Jimeng:
https://ark.cn-beijing.volces.com/api/v3 - カスタムプロキシ:
https://proxy.example.com
- Tavily 検索 API:
region: Region(Text)- 入力が必要なタイミング:AWS、Alibaba Cloud、Tencent Cloud、Volcengine などリージョンの指定が必要なサービスで入力が必要(例:cn-beijing、us-east-1)
service: Service(Text)- 入力が必要なタイミング:Volcengine などサービス名の指定が必要な場合に入力が必要(例:cv、ocr)
api_version: API バージョン(Text)- 入力が必要なタイミング:API バージョンの指定が必要なサービスで入力が必要(例:jimeng_t2i_v31、v1、v2)
sdk_name: SDK 名(Text)- 入力が必要なタイミング:Python SDK を使用する場合に SDK パッケージ名を入力(例:volcenginesdkcv20240606、openai)
extra_config: その他の設定(Text)- 入力が必要なタイミング:追加の設定パラメータが必要な場合に入力、JSON 形式(例:{"timeout": 30, "max_retries": 3})
config_status: 設定状態(SingleSelect: 有効/無効)notes: 備考(Text)
使用説明:
- すべての API サービスで
endpoint_url(API のベースアドレス)を必ず入力してください - API サービスの種類に応じて、対応するキー項目を入力します:
- Tavily 検索 API:
api_keyとendpoint_urlを必ず入力 - Volcengine Jimeng:
access_key_id、secret_access_key、endpoint_urlを使用 - OpenAI/Anthropic:
api_keyとendpoint_urlを必ず入力 - WeChat/WeCom:
app_id、app_secret、endpoint_urlを使用
- Tavily 検索 API:
- すべてのキー項目は可視であり、ユーザーは HAP 上で直接入力・編集できます
endpoint_urlの形式:完全な API ベースアドレス(例:https://api.tavily.comまたはhttps://api.openai.com/v1)
機能設定の例:
-
Tavily 検索 API:テーマに関する関連資料の検索に使用
- サービスプロバイダー:Tavily
- サービスタイプ:検索 API(ドロップダウンリストから選択)
- API Key:tvly-dev-xxx...(必ず入力、Tavily API Key)
- Endpoint URL:https://api.tavily.com(**必ず入力**、API のベースアドレス)
- 用途説明:コンテンツ生成前に最新資料を検索し、コンテンツの品質を向上させる
- 設定状態:有効(ドロップダウンリストから選択)
-
TUZI 画像生成:画像生成に使用(OpenAI 互換インターフェース)
- サービスプロバイダー:TUZI
- サービスタイプ:画像生成(ドロップダウンリストから選択)
- API Key:sk-xxx...(必ず入力、TUZI API Key)
- Endpoint URL:https://api.tu-zi.com/v1(**必ず入力**、API のベースアドレス)
- デフォルトかどうか:はい(チェックボックス、チェックを入れるとこの設定をデフォルトで使用することを示す)
- 設定状態:有効(ドロップダウンリストから選択)
- 備考:OpenAI 互換インターフェースを使用し、複数のモデルをサポート(gemini-3-pro-image-preview、dall-e-3、dall-e-2)
-
Jimeng 画像生成:画像生成に使用(テキストから画像 3.1)
- サービスプロバイダー:Volcengine
- サービスタイプ:画像生成(ドロップダウンリストから選択)
- Endpoint URL:https://ark.cn-beijing.volces.com/api/v3(任意、API のベースアドレス)
- Access Key ID:API 認証に使用(ユーザーが入力)
- Secret Access Key:API 署名に使用(ユーザーが入力)
- Region:cn-beijing(ユーザーが入力)
- Service:cv(ユーザーが入力)
- API バージョン:jimeng_t2i_v31(ユーザーが入力)
- SDK 名:volcenginesdkcv20240606(ユーザーが入力)
- デフォルトかどうか:いいえ(チェックボックス、チェックを入れない場合はデフォルト設定ではないことを示す)
- 設定状態:有効(ドロップダウンリストから選択)
重要:
- すべての設定情報はユーザーが HAP の「API サービス設定」テーブルに入力します
- Skill はテーブルからの読み取りのみを担当し、デフォルト値やハードコードされた設定は一切含みません
- ユーザーは実際に使用する API サービスに応じて、対応する設定項目を入力する必要があります
データ同期フロー
1. 搜索资料(Tavily API)→ 获取最新信息
2. 生成内容 → 保存到本地文件(预览,按笔记目录结构:`内容/{平台}/{笔记标题}/{笔记标题}.md`)
3. 与用户确认内容、标题、图片
4. 用户确认后生成图片 → 保存到笔记目录的配图文件夹(`内容/{平台}/{笔记标题}/配图/`)
5. 与用户确认是否发布和同步
6. 用户确认后同步到 HAP:
- **小红书笔记**:只上传图片 URL(封面图和其他配图),不上传 Markdown 文档
- **其他平台**:根据平台需求上传图片和文档
7. 用户确认后发布 → 使用 Playwright 发布到目标平台
8. 发布成功 → 更新发布状态和笔记链接
目录结构说明:
- `内容/`:根目录
- `内容/{平台}/`:平台目录(小红书/抖音/微信公众号/视频号)
- `内容/{平台}/{笔记标题}/`:笔记目录,使用封面标题作为目录名
- `内容/{平台}/{笔记标题}/{笔记标题}.md`:Markdown 文档(仅本地保存,小红书不同步到 HAP)
- `内容/{平台}/{笔记标题}/配图/`:配图文件夹
重要说明:
- **小红书笔记的 Markdown 文档不同步到 HAP**,只同步图片 URL
- Markdown 文档仅保存在本地,用于预览和编辑
- 图片生成后:
1. 保存图片 URL 到 `配图/image_urls.json`
2. **下载图片到本地**:保存图片文件到 `配图/{图片名称}.png`(如:封面图.png、对比图.png),方便本地查看和展示
3. 通过 MCP 上传 URL 到 HAP(上传时使用 URL,不需要 base64)
6. 自動公開
Playwright MCP の使用
公開前の準備:
- ユーザーが対象プラットフォームにログイン済みであることを確認する
- コンテンツの完全性をチェックする(タイトル、本文、画像、タグ)
- HAP データが同期済みであることを確認する
公開フロー(小紅書の例):
// 1. 导航到发布页面
await page.goto('https://creator.xiaohongshu.com/publish/publish?type=image_text');
// 2. 上传图片
const fileInput = await page.locator('input[type="file"]').first();
await fileInput.setInputFiles(imageFiles);
// 3. 填写标题
await page.getByRole('textbox', { name: '填写标题会有更多赞哦~' }).fill(title);
// 4. 填写正文(包含话题标签)
await page.getByRole('textbox').nth(1).fill(content + '\n\n' + tags);
// 5. 点击发布
await page.getByRole('button', { name: '发布' }).click();
// 6. 等待发布成功,获取笔记链接
// 7. 更新 HAP 记录:发布状态、发布时间、笔记链接
公開後の処理:
- 公開に成功したコンテンツのリンクを取得する
- HAP の「コンテンツ管理」テーブルのレコードを更新する:
platform_type: 対象プラットフォーム(小紅書/抖音/WeChat 公式アカウント/視頻号)publish_status: 公開済みpublish_time: 現在時刻note_url: コンテンツリンク
使用例
例 1: 小紅書のノートを生成して公開する
用户:帮我生成一篇关于 "Skills 科普介绍" 的小红书笔记并发布
执行流程:
1. **确认 MCP**:确认当前连接的 HAP 应用 MCP(通过用户提供或指定)
2. **读取搜索配置**:从 HAP "API服务配置" 表读取 Tavily 搜索 API 配置
3. **搜索资料**:调用 Tavily API 搜索主题相关资料(获取最新 5 条结果)
4. **【强制要求】读取账号人设**(必须在生成内容之前执行):从 HAP "账号人设" 表读取账号人设配置
- **禁止使用本地文件**:绝对不允许使用 `AGENTS.md` 或其他本地文件
- **必须调用 HAP MCP**:必须通过 MCP 调用 `get_record_list()` 从 HAP "账号人设" 表读取
- **读取所有必需字段**:
- **账号定位**(positioning):了解账号的核心定位
- **目标受众**(target_audience):了解内容面向的受众群体
- **内容方向**(content_direction):了解内容的主要方向
- **内容风格**(content_style):了解内容应该采用的风格(必须严格遵循)
- **内容原则**(content_principles):了解内容创作的原则和注意事项(必须严格遵守)
- **图片生成提示词**(image_generation_prompt):了解图片风格要求
- **验证要求**:如果未找到账号人设配置,必须抛出异常,不允许继续生成内容
5. **撰写内容**:根据搜索结果和从 HAP 读取的账号人设撰写内容
- **严格遵循账号人设**:必须严格按照从 HAP 读取的 `content_style` 和 `content_principles` 来撰写
- **禁止使用本地人设**:不允许参考或使用本地 `AGENTS.md` 文件中的内容
- **结合搜索资料**:将搜索到的资料与从 HAP 读取的账号人设结合,生成符合定位的内容
- **符合目标受众**:确保内容适合目标受众阅读
6. **生成封面标题**:根据账号人设的内容风格生成 5-10 个封面标题
- 标题风格必须符合账号人设的内容风格
- 标题要符合账号定位和目标受众
7. **选择话题标签**:从 HAP 话题库选择 5-8 个话题标签(动态查询)
- 根据内容主题和账号人设的内容方向选择
8. **生成配图建议**:结合账号人设的图片生成提示词风格,生成配图建议
9. **保存预览**:保存到本地文件(按笔记目录结构:`内容/小红书/{笔记标题}/{笔记标题}.md`)
10. **与用户确认**:与用户确认内容、标题、图片
11. **生成图片**(用户确认后):从 HAP "账号人设" 表读取图片生成提示词,从 HAP "API服务配置" 表读取图片生成配置,生成图片
12. **与用户确认发布**:与用户确认是否直接发布至小红书
13. **与用户确认同步**:与用户确认是否同步到 HAP,确认后才上传
14. **同步 HAP**(用户确认后):同步到 HAP "内容管理" 表(platform_type = 小红书)
- **只上传图片**:上传封面图和其他配图的 URL 到 HAP
- **不上传 Markdown 文档**:小红书笔记的 Markdown 文档不同步到 HAP
15. **发布内容**(用户确认后):使用 Playwright 发布到小红书
16. **更新状态**:更新 HAP 发布状态和内容链接
例 2: コンテンツを一括生成する
用户:帮我生成一周的小红书笔记(7篇),主题如下:
1. Claude Code 新功能
2. AI 工具推荐
3. 大模型应用场景
...
执行流程:
1. **确认 MCP**:确认当前连接的 HAP 应用 MCP
2. **批量生成**:对每个主题重复上述流程
3. **动态读取配置**:每次生成图片时从 HAP "API服务配置" 表动态读取配置
4. **批量保存**:批量生成并保存到 HAP "内容管理" 表(platform_type = 小红书)
例 3: マルチプラットフォームへ公開する
用户:将这篇笔记发布到小红书和微信公众号
执行流程:
1. **确认 MCP**:确认当前连接的 HAP 应用 MCP
2. **读取内容**:从 HAP "内容管理" 表读取内容(platform_type = 小红书)
3. **动态获取工作表**:动态获取"内容管理"表的 ID 和字段结构
4. **适配格式**:适配不同平台的格式要求:
- 小红书:300-400字,5-8个话题标签
- 微信公众号:2000-5000字,HTML格式
5. **发布内容**:分别发布到两个平台
6. **更新 HAP**:在 HAP "内容管理" 表中创建新记录(platform_type = 微信公众号),或更新现有记录的发布状态
技術実装
依存ツール
- Tavily API(設定は HAP に保存): 関連資料を検索し、最新情報を取得する
- wechat-article-writer skill: コンテンツ生成
- HAP MCP(ユーザーが提供): データ管理、コンテンツ、設定、トピックライブラリなどの保存に使用
- Playwright MCP: 各プラットフォームへの自動公開
- サードパーティ API(設定は HAP に保存): 画像生成、コンテンツ生成などの API サービス
MCP 配置要求
用户需要提供:
- HAP 应用的 MCP 配置(包含 Appkey 和 Sign)
- 或明确指定使用哪个已配置的 MCP
Skill 会自动:
- 识别当前连接的 MCP 应用
- 动态获取工作表列表和结构
- 从"API服务配置"表读取密钥和配置
- 根据平台类型筛选内容记录
文件结构
social-media-operation/
├── AGENTS.md # 账号人设配置(可选,本地参考文件)
├── 笔记生成工作流.md # 工作流说明
├── 内容/ # 内容根目录
│ └── 小红书/ # 平台分类(小红书/抖音/微信公众号/视频号)
│ └── {笔记标题}/ # 每个笔记一个目录,使用封面标题作为目录名
│ ├── {笔记标题}.md # Markdown 文档(使用笔记标题命名)
│ └── 配图/ # 配图目录
│ ├── 封面图.png
│ ├── 架构图.png
│ └── 应用场景图.png
├── 话题库/ # 话题标签库(可选,本地参考文件)
│ └── {类型}.md
└── README.md # 项目说明
目录结构说明:
- 内容/:根目录,包含所有平台的内容
- 小红书/:平台目录,展示该平台的所有笔记标题(目录名)
- {笔记标题}/:笔记目录,使用封面标题作为目录名,更清晰直观
- {笔记标题}.md:Markdown 文档,使用笔记标题命名
- 配图/:配图文件夹,包含该笔记的所有配图
示例:
内容/
└── 小红书/
└── MCP 是什么?/ # 笔记标题作为目录名
├── MCP科普介绍.md # Markdown 文档
└── 配图/
├── 封面图.png
├── 架构图.png
└── 应用场景图.png
注意:
- 账号人设和话题库数据统一存储在 HAP 中
- 本地文件仅作为参考,实际使用时从 HAP 表读取
- 内容按笔记目录结构组织,每个笔记包含 md 文档和配图
- 目录名使用笔记标题,更清晰直观
HAP 应用配置
重要:应用名称和 MCP 配置由用户提供,不硬编码
通用工作表结构(用户需要在 HAP 中创建):
- 内容管理(通用表,通过 platform_type 字段区分平台:小红书/抖音/微信公众号/视频号等)
- 话题标签库(存储各平台的话题标签)
- 账号人设(存储不同平台的账号人设配置)
- API服务配置(按功能分类,每个功能一条记录包含所有配置字段,包括密钥)
- 热点平台关注表(存储用户关注的热点平台,用于每日热点内容推荐)
- 选题库(存储推荐的选题,关联热点平台关注表和内容管理表)
- 社交媒体数据(可选,存储运营数据)
工作表创建:
- 用户需要在 HAP 应用中创建上述工作表
- 创建工作表时,建议设置别名(alias),便于后续查询
- 或用户提供已存在的应用 MCP,Skill 会自动识别工作表结构
- Skill 会通过
get_app_worksheets_list()动态获取工作表列表 - 查询时优先通过别名(alias)匹配,如果别名不存在则使用名称(name)匹配
- 绝对不使用硬编码的工作表 ID
注意事项
MCP 和配置管理
-
MCP 配置由用户提供:
- Skill 不包含任何硬编码的 MCP 配置
- 用户需要提供 HAP 应用的 MCP 配置信息
- 或明确指定使用哪个已配置的 MCP
-
MCP 应用确认:
- 执行 HAP 操作前,必须先调用
get_app_info()确认当前连接的 MCP 应用 - 如果用户提供了 MCP 配置,需要对比确认是否匹配
- 不匹配时需要与用户确认
- 执行 HAP 操作前,必须先调用
-
动态读取配置:
- 所有 API 密钥和配置都存储在 HAP "API服务配置" 表中
- 使用时必须从表中动态读取,绝对不要在代码中硬编码
- 通过
get_record_list()查询配置,根据功能名称或服务类型匹配
-
工作表动态识别(重要):
- 通过
get_app_worksheets_list()动态获取工作表列表 - 优先通过别名(alias)匹配工作表,如果别名不存在则使用名称(name)匹配
- 绝对不要使用硬编码的工作表 ID
- 所有查询操作都必须先通过别名或名称匹配获取工作表 ID,然后再使用该 ID 进行查询
- 通过
内容生成
账号人设读取检查清单(必须严格执行):
- ✅ 确认 MCP 连接:执行任何操作前,必须先调用
get_app_info()确认当前连接的 HAP MCP 应用 - ✅ 动态获取工作表:通过
get_app_worksheets_list()动态获取工作表列表,通过别名account_persona或名称账号人设匹配 - ✅ 查询账号人设:使用
get_record_list()根据platform_type查询对应平台的账号人设记录 - ✅ 验证必需字段:检查是否读取到
content_style和content_principles字段,如果缺失则抛出异常 - ✅ 禁止使用本地文件:绝对不允许使用
AGENTS.md或其他本地文件作为账号人设来源 - ✅ 严格遵循人设:生成内容时必须严格按照从 HAP 读取的
content_style和content_principles执行
其他注意事项:
5. 内容预览:生成内容后先保存到本地文件,用户确认后再同步到 HAP
6. 图片生成:图片生成可能失败(SSL 错误),需要重试或手动制作
7. 发布登录:发布前需要用户先登录目标平台
8. 字数控制:不同平台的字数要求不同,需要适配
9. 话题标签:必须从 HAP 话题库中选取,不要自己编造
10. 账号人设:必须从 HAP "账号人设" 表中读取,禁止使用本地文件,包括图片生成提示词
11. 图片风格:生成图片时,将从 HAP 读取的账号人设中的 image_generation_prompt 与具体配图建议结合
最佳实践
通用性设计
-
MCP 配置:
- 永远不硬编码 MCP 配置
- 始终从用户提供的 MCP 或指定的 MCP 读取配置
- 执行操作前先确认当前连接的 MCP 应用
-
配置管理:
- 所有密钥和配置存储在 HAP "API服务配置" 表中
- 使用时动态读取,不假设任何默认值
- 用户需要在 HAP 中填写所有必要的配置信息
-
工作表识别(重要):
- 动态获取工作表列表
- 优先通过别名(alias)匹配工作表,如果别名不存在则使用名称(name)匹配
- 绝对不要使用硬编码的工作表 ID
- 所有查询操作都必须先通过别名或名称匹配获取工作表 ID,然后再使用该 ID 进行查询
- 动态获取字段结构,通过名称或别名匹配字段 ID
内容运营
- 内容质量:确保内容有价值,符合账号定位
- 更新频率:保持稳定的更新频率(建议每周3-5篇)
- 数据追踪:定期查看 HAP 中的数据,分析爆款规律
- 互动管理:及时回复评论,积极与用户互动
- 多平台适配:根据不同平台特点调整内容格式和风格