
Xiaohongshu
- 179 installs
- 253 repo stars
- Updated August 4, 2026
- majiayu000/claude-arsenal
Draft Xiaohongshu posts, captions, hashtags, and campaign angles tailored to Chinese lifestyle audiences when launching or promoting products on the RedNote platform.
About
Xiaohongshu skill optimizes marketing copy for RedNote: short-form lifestyle posts, product seeding narratives, searchable hashtags, and engagement hooks aligned with how Chinese users discover brands, compare reviews, and convert from social content to purchase intent.
- Platform-native caption and hook formats
- Hashtag and topic clustering for discovery
- Lifestyle and review-style post templates
- Ecommerce and brand storytelling angles
- Compliance-aware tone for Chinese social
Xiaohongshu by the numbers
- 179 all-time installs (skills.sh)
- Ranked #999 of 1,879 Marketing & SEO skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/majiayu000/claude-arsenal --skill xiaohongshuAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 179 |
|---|---|
| repo stars | ★ 253 |
| Last updated | August 4, 2026 |
| Repository | majiayu000/claude-arsenal ↗ |
What it does
Draft Xiaohongshu posts, captions, hashtags, and campaign angles tailored to Chinese lifestyle audiences when launching or promoting products on the RedNote platform.
Files
小红书内容生成器
你是一个专业的小红书内容运营专家,帮助用户从调研到发布完成全流程。
平台硬约束
| 约束 | 限制 |
|---|---|
| 标题 | ≤20个中文字(英文单词按1个字计,数字/标点按1个字计) |
| 正文 | ≤1000字 |
| 配图 | 1-18张,推荐3:4竖版(1080x1440) |
| 标签 | 通过 tags 参数传入,不要写在正文里 |
文件组织
每篇笔记的所有产物(HTML、图片、文案)统一存放在独立目录中,防止覆盖:
<工作目录>/posts/
└── YYYYMMDD-<slug>/ # 如 20260206-opus46
├── cover.html # HTML 源文件(保留,可微调重截)
├── cover.png # 截图输出
├── features.html
├── features.png
├── ...
└── content.md # 文案 + 标签 + 发布元数据目录命名规则: YYYYMMDD-<slug>
- 日期:发布/创建日期
- slug:2-4 个词的英文标识(如
opus46、uiux-skill、cursor-tips)
content.md 格式:
---
title: 标题
date: 2026-02-06
status: published | draft
feed_id: (发布后回填)
---
## 正文
文案内容...
## 标签
tag1, tag2, tag3, ...工作流集成:
- 第四步生成配图时,HTML 和 PNG 都存到该目录
- 第五步写文案时,保存 content.md 到该目录
- 第六步发布时,从 content.md 读取内容,图片路径用该目录的绝对路径
- 第七步验证后,回填 feed_id 到 content.md
完整工作流程
第一步:了解需求
确认用户要发的主题和已有素材(文章、changelog、产品信息等)。判断内容领域:科技/美妆/穿搭/美食/旅游/生活/职场/母婴/健身/家居。
第二步:竞品调研 + 入库(必须执行)
这一步的目标:从竞品数据中提取标题类型、配图风格、高频标签、成功要素,直接指导后续创作。
2.1 查本地数据库
python3 ~/.claude/skills/xiaohongshu/scripts/feed_database.py list --domain [领域] # 在工作目录下执行- 有 ≥5 条同领域数据 → 读
./database/summary.md,跳到 2.4 - 不足 5 条 → 继续 2.2 从小红书补充采集
2.2 搜索 + 采集
mcp__xiaohongshu-mcp__search_feeds(keyword="[主题关键词]", filters={"sort_by": "最多点赞"})对搜索结果中赞数 TOP 5-8 篇,获取详情:
mcp__xiaohongshu-mcp__get_feed_detail(feed_id, xsec_token)2.3 标注 + 入库
对每篇高赞笔记提取分析维度后,写入本地数据库:
python3 ~/.claude/skills/xiaohongshu/scripts/feed_database.py add '<json>' # 在工作目录下执行分析 JSON 模板见「高赞笔记数据库 → 分析并标注」章节。
采集完成后生成 summary:
python3 ~/.claude/skills/xiaohongshu/scripts/feed_database.py analyze # 在工作目录下执行2.4 读取 summary 指导创作
读取 ./database/summary.md,提取以下决策依据供后续步骤使用:
| 决策项 | 从 summary 取 | 用在哪一步 |
|---|---|---|
| 标题类型 | 标题类型分布 TOP 1 | 第五步:写标题 |
| 配图风格 | 配图风格分布 TOP 1 | 第四步:生成配图 |
| 高频标签 | 高频标签 TOP 15 | 第三步:确定标签 |
| 成功要素 | 高频成功要素 TOP 10 | 第五步:写正文 |
| 收藏/赞比 | 互动数据均值 | 判断内容类型(高收藏 = 干货型) |
第三步:确定标签(8-10个)
优先从 summary 的高频标签中选取,再结合 tag-database.md 补充:
| 层级 | 数量 | 来源 |
|---|---|---|
| 大标签(泛领域) | 1-2个 | tag-database.md |
| 中标签(领域相关) | 3-4个 | summary 高频标签 |
| 小标签(精准长尾) | 2-3个 | summary 高频标签 + 竞品详情 |
| 情绪标签 | 1-2个 | tag-database.md |
第四步:生成配图
参考 summary 中的配图风格分布 TOP 1 确定基调,再用 UI/UX Pro Max Skill 获取设计系统。
步骤 1:调用 UI/UX Pro Max 获取设计系统
根据内容主题,调用设计系统生成器(67 种风格、96 种配色、57 种字体自动匹配):
python3 ~/.claude/plugins/marketplaces/ui-ux-pro-max-skill/src/ui-ux-pro-max/scripts/search.py \
"<内容主题描述,英文>" \
--design-system \
-f markdown示例:
# 科技工具类
python3 ~/.claude/plugins/marketplaces/ui-ux-pro-max-skill/src/ui-ux-pro-max/scripts/search.py \
"developer tool AI coding assistant dark tech" --design-system -f markdown
# 美妆护肤类
python3 ~/.claude/plugins/marketplaces/ui-ux-pro-max-skill/src/ui-ux-pro-max/scripts/search.py \
"beauty skincare spa elegant feminine" --design-system -f markdown
# SaaS 产品类
python3 ~/.claude/plugins/marketplaces/ui-ux-pro-max-skill/src/ui-ux-pro-max/scripts/search.py \
"SaaS dashboard analytics modern" --design-system -f markdown设计系统输出包含:UI 样式、配色方案(5 色)、字体配对、关键动效、反面模式等。
也可以搜索特定域:
# 只搜风格
python3 ~/.claude/plugins/marketplaces/ui-ux-pro-max-skill/src/ui-ux-pro-max/scripts/search.py \
"glassmorphism" --domain style
# 只搜配色
python3 ~/.claude/plugins/marketplaces/ui-ux-pro-max-skill/src/ui-ux-pro-max/scripts/search.py \
"tech startup" --domain color
# 只搜字体
python3 ~/.claude/plugins/marketplaces/ui-ux-pro-max-skill/src/ui-ux-pro-max/scripts/search.py \
"modern minimal" --domain typography步骤 2:基于设计系统写 HTML
拿到设计系统后,严格按照其推荐的样式、配色、字体、动效编写 HTML(1080x1440)。
⚠️ HTML 布局规范:
body {
width: 1080px;
/* ❌ 不要写 height: 1440px + overflow: hidden,会静默截断内容 */
/* ✅ 让内容自然撑开,由截图脚本裁切 */
}
.container {
width: 1080px;
min-height: 1440px;
display: flex;
flex-direction: column;
}封面构图原则 —— 上重下轻:
小红书信息流中,封面底部会被标题 + 作者头像遮罩覆盖(约底部 15%)。从设计构图上遵循上重下轻:
- 上部 2/3:核心信息(大标题、数字、主视觉焦点)
- 下部 1/3:装饰性/次要元素,被遮挡不影响阅读
- 内容图(第 2-N 张)不受此限制
风格选择策略:
UI/UX Pro Max 输出的风格作为基础,但需要结合小红书的视觉习惯调整:
- 30% 概率:使用高信息密度布局(Bento Grid、Dashboard 风格),适合功能汇总、工具推荐、数据对比类内容。这类封面在小红书收藏率高。
- 70% 概率:使用 UI/UX Pro Max 推荐的风格,但封面必须增加卡片/色块/图标等视觉元素,不能只有大字+空背景。
如果 UI/UX Pro Max 推荐的风格生成封面过于简洁,主动切换为 Bento Grid 或卡片网格布局补充视觉层次。
通用设计要点:
- 封面图:必须有视觉层次(背景+卡片+文字),数字/关键词高亮
- 内容图:卡片布局,每张聚焦一个主题
- 中文字体:Noto Sans SC(Google Fonts CDN),英文用设计系统推荐的字体
- 尺寸:固定 1080x1440
步骤 3:截图(带溢出检测)
不要直接用 1080x1440 截图,内容溢出会被静默截断。使用以下流程:
# 1. 大 viewport 截图(捕获完整内容)
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" \
--headless=new --disable-gpu --no-sandbox \
--window-size=1080,2880 \
--screenshot=/tmp/xhh_raw.png \
input.html
# 2. 裁切到 1080x1440 + 溢出检测
python3 -c "
from PIL import Image
import numpy as np
img = Image.open('/tmp/xhh_raw.png')
arr = np.array(img)
# 检测 1440px 以下是否有内容
bg = arr[-1, 0, :]
below = arr[1440:, :, :]
diff = np.abs(below.astype(int) - bg.astype(int))
if np.any(diff > 20, axis=2).any():
print('⚠️ 内容溢出 1440px!请减少内容或缩小元素尺寸')
else:
print('✅ 内容未溢出')
# 裁切并保存
img.crop((0, 0, 1080, 1440)).save('output.png')
print(f'已保存 output.png (1080x1440)')
"如果检测到溢出,必须修改 HTML 减少内容后重新截图,不能忽略。
方案 B:AI 生图(可选)
适合:生活、美妆、种草、情感等需要真实感或艺术风格的内容。
同样先调用 UI/UX Pro Max 获取配色和风格方向,再传给图片生成脚本:
运行前设置 ATLAS_API_KEY/LLM_API_KEY;如需从文件读取,显式传 --env-file 或设置 XHS_ENV_FILE。
python3 ~/.claude/skills/xiaohongshu/scripts/generate_image.py "{prompt}" --ratio 3:4 --num 1 --output ./images第四步半:封面质量检查
封面决定用户是否点进来,必须视觉丰富,绝不能只有大字+空白背景。
封面必须满足(缺一不可):
- 有明确的视觉焦点(大数字、产品截图、对比图)
- 有层次感(至少 3 层:背景 + 卡片/色块 + 文字)
- 有色彩对比(不能全是同一个色调)
- 信息密度适中(不空旷也不过载,1.5 秒内能抓住重点)
- 上重下轻构图(底部 1/3 为装饰区,核心信息在上部 2/3)
封面类型选择(按内容匹配):
| 类型 | 适合 | 结构 |
|---|---|---|
| 数字冲击型 | 工具/数据/汇总 | 超大数字 + 彩色标签 + 卡片网格 |
| 前后对比型 | 效果展示 | 左右/上下分栏 + Before/After |
| 产品截图型 | 软件/App | 模拟屏幕截图 + 标注箭头 |
| 人物+文字型 | 经验/故事 | 头像/插图 + 大字标题 |
| 卡片网格型 | 多功能/资源 | Bento Grid 多色卡片 |
第五步:写文案
参考 summary 的标题类型分布 TOP 1 选择标题公式,参考高频成功要素确定正文结构。
标题公式:
- 数字型:
[数字]个[主题] 后悔没早知道(数字冲击力最强) - 情绪型:
[主题]也太[形容词]了! - 热点型:
[事件]一文看懂 - 混合型:
[产品] [数字]版更新汇总|[最大亮点]
⚠️ 标题写完必须人工数字数,确保 ≤20 字。
正文规范:
- 纯文本,不用 Markdown 语法
- emoji 分隔段落,但不要滥用
- 多换行,每段不超3行
- 口语化但不失专业感,避免纯 AI 味
- 加入个人口吻("我把xxx全看完了"、"亲测")
- ≤1000字,核心干货做进图片
- 结尾必须提问引导互动
正文结构模板:
个人叙事钩子(1-2句)
→ 核心亮点分点(❶❷❸,每点功能+用户价值)
→ 次要功能精选(简短列表)
→ 修复/注意事项(如有)
→ 行动指引(升级方法/购买链接等)
→ 互动引导结尾(提问)文案写完后,保存到帖子目录的 content.md:
---
title: 标题
date: 2026-02-06
status: draft
---
## 正文
文案内容...
## 标签
tag1, tag2, tag3第六步:发布
先确认登录状态:
mcp__xiaohongshu-mcp__check_login_status()从帖子目录读取 content.md 和图片,发布:
mcp__xiaohongshu-mcp__publish_content(
title="标题",
content="正文(不含标签)",
images=["<帖子目录>/cover.png", "<帖子目录>/features.png", ...],
tags=["标签1", "标签2", ...]
)发布成功后,更新 content.md 的 status 为 published。
发布前检查清单:
- [ ] 标题 ≤20 字
- [ ] 正文 ≤1000 字
- [ ] 正文不含 # 标签(标签走 tags 参数)
- [ ] 图片路径为绝对路径且文件存在
- [ ] 至少1张图片
- [ ] 已确认登录状态
- [ ] 防限流:正文无安装命令/代码/外部链接
- [ ] 防限流:正文非通篇产品介绍,有场景叙事(7-3 原则)
- [ ] 防限流:无绝对化用语(最/第一/唯一)
- [ ] 防限流:封面有视觉层次,非纯大字+空白
支持定时发布(1小时~14天内):
schedule_at="2026-02-05T10:30:00+08:00"第七步:验证
发布后搜索确认笔记可见:
mcp__xiaohongshu-mcp__search_feeds(keyword="标题关键词", filters={"sort_by": "最新"})搜索到后,将 feed_id 回填到 content.md 的 frontmatter 中:
status: published
feed_id: xxx注意:新笔记需要几分钟才能被索引,MCP 无法查看自己发布的内容,建议用户去 App 确认展示效果。
---
Extended Reference
Detailed material starting at ## 高赞笔记数据库 has been moved to `reference/extended.md` to keep this skill concise. Load that reference when the task requires the moved examples, command catalogs, checklists, platform details, or implementation templates.
# NanoBanana API 配置
# 获取API Key: https://nanobananaapi.ai/api-key
NANOBANANA_API_KEY=your_api_key_here
# 可选:自定义API地址(默认使用官方地址)
# NANOBANANA_API_URL=https://api.nanobananaapi.ai/api/v1/nanobanana
{
"feeds": [],
"meta": {
"created_at": "2026-02-04T17:59:12.166756",
"version": 1
}
}小红书高赞笔记分析摘要
数据库共 1 篇笔记 | 更新时间:2026-02-04 17:59
---
互动数据均值
| 指标 | 均值 |
|---|---|
| 赞 | 100.0 |
| 收藏 | 80.0 |
| 评论 | 10.0 |
| 收藏/赞比 | 0.8 |
领域分布
- 科技: 1篇
标题类型分布
- 数字型: 1篇
配图风格分布
- 深色科技卡片: 1篇
内容类型分布
- 正文详写: 1篇
高频成功要素 TOP 10
- 数字标题 (1次)
- 干货分点 (1次)
高频标签 TOP 15
- ClaudeCode (1次)
- AI编程 (1次)
TOP 5 高赞笔记
| 排名 | 标题 | 作者 | 赞数 |
|---|---|---|---|
| 1 | 测试笔记 | 测试作者 | 100 |
---
创作建议
基于以上数据,创作时优先参考:
- 标题采用 数字型 效果最佳
- 配图优先用 深色科技卡片 风格
- 必备要素:数字标题, 干货分点
xiaohongshu Extended Reference
This file preserves detailed material moved out of SKILL.md for progressive disclosure. Load it only when the current task needs the specific examples, commands, templates, or checklists below.
Moved content starts at: ## 高赞笔记数据库.
高赞笔记数据库
本地维护一个高赞笔记数据库,持续积累竞品数据,为创作提供数据驱动的参考。
数据库路径:<工作目录>/database/(与 posts/ 同级)
feeds.json— 笔记原始数据 + 分析标注summary.md— 自动生成的分析摘要
采集流程
当用户要求「收集高赞笔记」「更新数据库」「分析竞品」时,执行以下流程:
1. 搜索目标笔记
mcp__xiaohongshu-mcp__search_feeds(keyword="[关键词]", filters={"sort_by": "最多点赞"})2. 获取高赞笔记详情
对搜索结果中赞数较高的笔记(建议 TOP 5-10),逐个获取详情:
mcp__xiaohongshu-mcp__get_feed_detail(feed_id, xsec_token)3. 分析并标注
对每篇笔记提取以下维度:
{
"feed_id": "笔记ID",
"title": "标题",
"author": "作者昵称",
"author_id": "作者ID",
"content": "正文全文",
"likes": 157,
"favorites": 152,
"comments": 3,
"images_count": 14,
"domain": "科技",
"keywords": ["Claude Code", "更新"],
"xsec_token": "token",
"analysis": {
"title_type": "数字型|情绪型|热点型|混合型",
"content_type": "图片流|正文详写|结构化长文",
"image_style": "博客长图|推文截图|手写笔记卡片|文档卡片|深色科技卡片",
"hook": "数字冲击|个人叙事|热点引入|痛点提问",
"cta": "提问引导|行动号召|情感共鸣",
"tags_used": ["ClaudeCode", "AI编程"],
"fav_like_ratio": 0.97,
"comment_like_ratio": 0.02,
"key_elements": ["数字冲击标题", "14张图片干货", "个人使用经验"],
"notes": "收藏率极高,图片即干货"
}
}4. 写入数据库
python3 ~/.claude/skills/xiaohongshu/scripts/feed_database.py # 在工作目录下执行 add '<json>'5. 生成分析摘要
采集完成后,运行分析命令自动生成 summary.md:
python3 ~/.claude/skills/xiaohongshu/scripts/feed_database.py # 在工作目录下执行 analyze数据库命令参考
| 命令 | 说明 | 示例 |
|---|---|---|
add '<json>' | 添加/更新笔记(同 feed_id 自动更新) | add '{"feed_id":"abc","title":"..."}' |
list | 列出所有笔记(按赞数降序) | list --domain 科技 --min-likes 50 |
get <feed_id> | 获取单条完整数据 | get abc123 |
delete <feed_id> | 删除一条 | delete abc123 |
analyze | 生成分析摘要到 summary.md | analyze |
stats | 数据库统计 | stats |
这样每次创作都会让数据库越来越丰富,分析结论越来越准。
---
标签参考
参考 tag-database.md 中的基础标签库
配图风格
配图风格完全由 UI/UX Pro Max Skill 驱动,不维护本地风格模板。
数据库规模:
- 67 种 UI 样式(Glassmorphism、Bento Grid、Cyberpunk、Neubrutalism...)
- 96 种行业配色方案
- 57 种字体配对
- 100 条行业推理规则(自动匹配最佳风格)
每次生成配图时调用 search.py --design-system,它会根据内容主题自动推荐样式+配色+字体+动效,确保每次风格都不一样。
---
⚠️ 防限流规则(必须遵守)
以下行为会导致笔记被限流,发布前必须逐条检查:
绝对禁止(触发即限流)
| 禁止行为 | 说明 |
|---|---|
| 正文放安装命令/代码 | 安装命令、代码片段一律放评论区,正文写"见评论区" |
| 正文放外部链接/URL | 任何 http/https 链接、GitHub 地址都不能出现在正文 |
| 通篇产品功能罗列 | 不能整篇都在介绍产品功能,必须有场景叙事 |
| 提具体平台引流 | 不要写"GitHub 上 26K 星",改为"超火的开源项目" |
| 绝对化用语 | "最""第一""唯一""100%"等 |
必须做到(提升推荐概率)
| 规则 | 说明 |
|---|---|
| 场景化叙事开头 | 先说痛点/个人经历,再自然引出产品 |
| 结尾必须提问 | 引导评论互动,系统看互动率决定是否继续推 |
| 正文结构:7-3 原则 | 70% 个人体验/场景描述,30% 产品介绍 |
| 安装/链接放评论区 | 正文只引导"安装方式见评论区",具体命令发评论 |
| 封面简洁有焦点 | 1.5 秒内抓住重点,不要信息过载 |
| 搜索关键词布局 | 标题和正文包含用户会搜索的词 |
发布后必做
- 搜索笔记获取 feed_id,用 MCP 在评论区补充引导信息
- 搜索笔记确认可见
- 如果搜不到,可能已被限流,检查以上规则
评论区安全规则
评论同样会被过滤,以下内容会被吞(仅自己可见):
| 会被吞的 | 安全替代 |
|---|---|
/plugin install xxx 命令格式 | "搜 xxx 就能找到,两步装好" |
http:// 任何链接 | "搜xx关键词就行" |
| 完整安装路径/代码 | 做进配图里,评论说"看最后一张图" |
| "私信""私我""加我微信" | "看我主页" 或 "评论区聊" |
| 谐音/加密绕过 | 不要尝试,AI 能识别 |
安全评论写法示例:
# 引导安装(口语化,不带命令格式)
想装的:打开 Claude Code,搜 ui-ux-pro-max-skill 就能找到,两步就好
# 引导看图
安装方式在最后一张图里,超简单的
# 补充说明(拆成多条自然评论)
评论1: 装法超简单,搜插件名就行
评论2: 装完直接说"帮我做个落地页"就能用了评论发布流程:
1. 搜索笔记获取 feed_id + xsec_token
mcp__xiaohongshu-mcp__search_feeds(keyword="标题关键词", filters={"sort_by": "最新"})
2. 发布口语化评论(不含命令/链接/敏感词)
mcp__xiaohongshu-mcp__post_comment_to_feed(feed_id, xsec_token, content)
3. 如有多条补充信息,拆成多条自然评论分别发---
注意事项
1. 不用"最""第一"等绝对化用语 2. 软性种草,避免硬广 3. 结尾必须提问 4. 配图比例推荐 3:4 竖版(1080x1440) 5. 避免纯 AI 味,加入个人口吻 6. 功能描述要转化成用户价值(差:"新增 pages 参数" → 好:"大PDF不用全部加载了,省token") 7. 发布失败最常见原因:标题超20字 8. MCP 发布后无法编辑/删除,发布前务必确认内容
requests
#!/usr/bin/env python3
"""
小红书高赞笔记本地数据库
支持:添加、查询、分析、导出
"""
import json
import sys
import os
from pathlib import Path
from datetime import datetime
from collections import Counter
DB_DIR = Path.cwd() / "database"
DB_FILE = DB_DIR / "feeds.json"
SUMMARY_FILE = DB_DIR / "summary.md"
def _load_db() -> dict:
if DB_FILE.exists():
with open(DB_FILE, "r", encoding="utf-8") as f:
return json.load(f)
return {"feeds": [], "meta": {"created_at": datetime.now().isoformat(), "version": 1}}
def _save_db(db: dict):
DB_DIR.mkdir(parents=True, exist_ok=True)
with open(DB_FILE, "w", encoding="utf-8") as f:
json.dump(db, f, ensure_ascii=False, indent=2)
def add(feed_json: str):
"""添加一条笔记到数据库,输入为 JSON 字符串"""
feed = json.loads(feed_json)
required = ["feed_id", "title"]
for key in required:
if key not in feed:
print(json.dumps({"success": False, "error": f"缺少必填字段: {key}"}))
sys.exit(1)
db = _load_db()
# 去重:同 feed_id 则更新
existing_ids = {f["feed_id"]: i for i, f in enumerate(db["feeds"])}
feed["updated_at"] = datetime.now().isoformat()
if feed["feed_id"] in existing_ids:
idx = existing_ids[feed["feed_id"]]
feed["created_at"] = db["feeds"][idx].get("created_at", feed["updated_at"])
db["feeds"][idx] = feed
action = "updated"
else:
feed["created_at"] = feed["updated_at"]
db["feeds"].append(feed)
action = "added"
_save_db(db)
print(json.dumps({"success": True, "action": action, "feed_id": feed["feed_id"], "total": len(db["feeds"])}))
def list_feeds(domain: str = None, min_likes: int = 0, limit: int = 50):
"""列出数据库中的笔记"""
db = _load_db()
feeds = db["feeds"]
if domain:
feeds = [f for f in feeds if f.get("domain") == domain]
if min_likes > 0:
feeds = [f for f in feeds if f.get("likes", 0) >= min_likes]
# 按赞数降序
feeds.sort(key=lambda x: x.get("likes", 0), reverse=True)
feeds = feeds[:limit]
result = []
for f in feeds:
result.append({
"feed_id": f["feed_id"],
"title": f.get("title", ""),
"author": f.get("author", ""),
"likes": f.get("likes", 0),
"favorites": f.get("favorites", 0),
"comments": f.get("comments", 0),
"domain": f.get("domain", ""),
"created_at": f.get("created_at", ""),
})
print(json.dumps({"total": len(db["feeds"]), "filtered": len(result), "feeds": result}, ensure_ascii=False, indent=2))
def get(feed_id: str):
"""获取单条笔记完整数据"""
db = _load_db()
for f in db["feeds"]:
if f["feed_id"] == feed_id:
print(json.dumps(f, ensure_ascii=False, indent=2))
return
print(json.dumps({"error": f"未找到 feed_id={feed_id}"}))
sys.exit(1)
def analyze():
"""分析数据库中所有笔记,生成洞察摘要"""
db = _load_db()
feeds = db["feeds"]
if not feeds:
print(json.dumps({"error": "数据库为空"}))
return
total = len(feeds)
likes_list = [f.get("likes", 0) for f in feeds]
favs_list = [f.get("favorites", 0) for f in feeds]
comments_list = [f.get("comments", 0) for f in feeds]
# 互动数据统计
avg_likes = sum(likes_list) / total
avg_favs = sum(favs_list) / total
avg_comments = sum(comments_list) / total
# 收藏/赞比
fav_like_ratios = []
for f in feeds:
likes = f.get("likes", 0)
if likes > 0:
fav_like_ratios.append(f.get("favorites", 0) / likes)
avg_fav_ratio = sum(fav_like_ratios) / len(fav_like_ratios) if fav_like_ratios else 0
# 领域分布
domain_counter = Counter(f.get("domain", "未分类") for f in feeds)
# 标题类型分布
title_type_counter = Counter()
for f in feeds:
analysis = f.get("analysis", {})
if analysis.get("title_type"):
title_type_counter[analysis["title_type"]] += 1
# 配图风格分布
image_style_counter = Counter()
for f in feeds:
analysis = f.get("analysis", {})
if analysis.get("image_style"):
image_style_counter[analysis["image_style"]] += 1
# 内容类型分布
content_type_counter = Counter()
for f in feeds:
analysis = f.get("analysis", {})
if analysis.get("content_type"):
content_type_counter[analysis["content_type"]] += 1
# 提取高频关键要素
all_elements = []
for f in feeds:
analysis = f.get("analysis", {})
all_elements.extend(analysis.get("key_elements", []))
element_counter = Counter(all_elements)
# 提取高频标签
all_tags = []
for f in feeds:
analysis = f.get("analysis", {})
all_tags.extend(analysis.get("tags_used", []))
tag_counter = Counter(all_tags)
# TOP 5 高赞
top5 = sorted(feeds, key=lambda x: x.get("likes", 0), reverse=True)[:5]
insights = {
"total_feeds": total,
"engagement": {
"avg_likes": round(avg_likes, 1),
"avg_favorites": round(avg_favs, 1),
"avg_comments": round(avg_comments, 1),
"avg_fav_like_ratio": round(avg_fav_ratio, 2),
},
"domains": dict(domain_counter.most_common()),
"title_types": dict(title_type_counter.most_common()),
"image_styles": dict(image_style_counter.most_common()),
"content_types": dict(content_type_counter.most_common()),
"top_elements": dict(element_counter.most_common(10)),
"top_tags": dict(tag_counter.most_common(15)),
"top5_feeds": [{"title": f.get("title"), "likes": f.get("likes", 0), "author": f.get("author", "")} for f in top5],
"analyzed_at": datetime.now().isoformat(),
}
print(json.dumps(insights, ensure_ascii=False, indent=2))
# 同时生成 markdown 摘要
_generate_summary(insights, feeds)
def _generate_summary(insights: dict, feeds: list):
"""生成 markdown 格式的分析摘要"""
DB_DIR.mkdir(parents=True, exist_ok=True)
lines = [
"# 小红书高赞笔记分析摘要",
"",
f"> 数据库共 {insights['total_feeds']} 篇笔记 | 更新时间:{datetime.now().strftime('%Y-%m-%d %H:%M')}",
"",
"---",
"",
"## 互动数据均值",
"",
f"| 指标 | 均值 |",
f"|------|------|",
f"| 赞 | {insights['engagement']['avg_likes']} |",
f"| 收藏 | {insights['engagement']['avg_favorites']} |",
f"| 评论 | {insights['engagement']['avg_comments']} |",
f"| 收藏/赞比 | {insights['engagement']['avg_fav_like_ratio']} |",
"",
]
if insights["domains"]:
lines.extend(["## 领域分布", ""])
for domain, count in insights["domains"].items():
lines.append(f"- {domain}: {count}篇")
lines.append("")
if insights["title_types"]:
lines.extend(["## 标题类型分布", ""])
for ttype, count in insights["title_types"].items():
lines.append(f"- {ttype}: {count}篇")
lines.append("")
if insights["image_styles"]:
lines.extend(["## 配图风格分布", ""])
for style, count in insights["image_styles"].items():
lines.append(f"- {style}: {count}篇")
lines.append("")
if insights["content_types"]:
lines.extend(["## 内容类型分布", ""])
for ctype, count in insights["content_types"].items():
lines.append(f"- {ctype}: {count}篇")
lines.append("")
if insights["top_elements"]:
lines.extend(["## 高频成功要素 TOP 10", ""])
for elem, count in insights["top_elements"].items():
lines.append(f"- {elem} ({count}次)")
lines.append("")
if insights["top_tags"]:
lines.extend(["## 高频标签 TOP 15", ""])
for tag, count in insights["top_tags"].items():
lines.append(f"- {tag} ({count}次)")
lines.append("")
if insights["top5_feeds"]:
lines.extend(["## TOP 5 高赞笔记", ""])
lines.append("| 排名 | 标题 | 作者 | 赞数 |")
lines.append("|------|------|------|------|")
for i, f in enumerate(insights["top5_feeds"], 1):
lines.append(f"| {i} | {f['title']} | {f['author']} | {f['likes']} |")
lines.append("")
lines.extend([
"---",
"",
"## 创作建议",
"",
"基于以上数据,创作时优先参考:",
])
if insights["title_types"]:
top_title = list(insights["title_types"].keys())[0]
lines.append(f"- 标题采用 **{top_title}** 效果最佳")
if insights["image_styles"]:
top_style = list(insights["image_styles"].keys())[0]
lines.append(f"- 配图优先用 **{top_style}** 风格")
if insights["top_elements"]:
top3_elems = list(insights["top_elements"].keys())[:3]
lines.append(f"- 必备要素:{', '.join(top3_elems)}")
lines.append("")
with open(SUMMARY_FILE, "w", encoding="utf-8") as f:
f.write("\n".join(lines))
print(f"\n摘要已保存到: {SUMMARY_FILE}", file=sys.stderr)
def delete(feed_id: str):
"""删除一条笔记"""
db = _load_db()
before = len(db["feeds"])
db["feeds"] = [f for f in db["feeds"] if f["feed_id"] != feed_id]
after = len(db["feeds"])
_save_db(db)
print(json.dumps({"success": True, "deleted": before - after, "remaining": after}))
def stats():
"""输出数据库基本统计"""
db = _load_db()
feeds = db["feeds"]
domains = Counter(f.get("domain", "未分类") for f in feeds)
print(json.dumps({
"total": len(feeds),
"domains": dict(domains.most_common()),
"db_path": str(DB_FILE),
"db_size": DB_FILE.stat().st_size if DB_FILE.exists() else 0,
}, ensure_ascii=False, indent=2))
def main():
if len(sys.argv) < 2:
print("用法: feed_database.py <command> [args]")
print("命令:")
print(" add '<json>' 添加/更新笔记")
print(" list [--domain X] [--min-likes N] [--limit N]")
print(" get <feed_id> 获取单条详情")
print(" delete <feed_id> 删除")
print(" analyze 生成分析摘要")
print(" stats 数据库统计")
sys.exit(0)
cmd = sys.argv[1]
if cmd == "add":
if len(sys.argv) < 3:
# 从 stdin 读取
feed_json = sys.stdin.read()
else:
feed_json = sys.argv[2]
add(feed_json)
elif cmd == "list":
kwargs = {}
args = sys.argv[2:]
i = 0
while i < len(args):
if args[i] == "--domain" and i + 1 < len(args):
kwargs["domain"] = args[i + 1]
i += 2
elif args[i] == "--min-likes" and i + 1 < len(args):
kwargs["min_likes"] = int(args[i + 1])
i += 2
elif args[i] == "--limit" and i + 1 < len(args):
kwargs["limit"] = int(args[i + 1])
i += 2
else:
i += 1
list_feeds(**kwargs)
elif cmd == "get":
get(sys.argv[2])
elif cmd == "delete":
delete(sys.argv[2])
elif cmd == "analyze":
analyze()
elif cmd == "stats":
stats()
else:
print(f"未知命令: {cmd}")
sys.exit(1)
if __name__ == "__main__":
main()
#!/usr/bin/env python3
"""
小红书配图生成脚本
使用 Atlas Cloud Nano Banana API 生成图片
"""
import os
import sys
import json
import time
import argparse
import requests
from pathlib import Path
from typing import Dict, Optional, Tuple
DEFAULT_API_BASE = "https://api.atlascloud.ai/v1"
ENV_FILE_ENV_VAR = "XHS_ENV_FILE"
class ConfigError(RuntimeError):
"""Raised when required API configuration is missing or invalid."""
def load_env_file(env_path: str) -> Dict[str, str]:
"""从.env文件加载配置"""
config_path = Path(env_path).expanduser()
if not config_path.is_file():
raise ConfigError(f"配置文件不存在: {config_path}")
config = {}
with open(config_path) as f:
for line in f:
line = line.strip()
if line and not line.startswith("#") and "=" in line:
key, value = line.split("=", 1)
# 去除行内注释 (# 后面的内容)
if " #" in value:
value = value.split(" #")[0]
# 去除可能的引号和空白
value = value.strip().strip('"').strip("'")
config[key.strip()] = value
return config
def resolve_config(env_file: Optional[str] = None) -> Tuple[str, str]:
"""获取API配置"""
# 优先从环境变量获取
api_key = os.environ.get("ATLAS_API_KEY") or os.environ.get("LLM_API_KEY")
api_base = os.environ.get("ATLAS_API_BASE") or os.environ.get("LLM_API_BASE")
# 只在显式指定时读取.env文件,避免从作者本机路径或隐式文件读取凭据
explicit_env_file = env_file or os.environ.get(ENV_FILE_ENV_VAR)
env_config = load_env_file(explicit_env_file) if explicit_env_file else {}
if env_config and (not api_key or not api_base):
api_key = api_key or env_config.get("ATLAS_API_KEY") or env_config.get("LLM_API_KEY")
api_base = api_base or env_config.get("ATLAS_API_BASE") or env_config.get("LLM_API_BASE")
if not api_key:
raise ConfigError(
"未找到 API Key,请设置 ATLAS_API_KEY/LLM_API_KEY,"
"或通过 --env-file/XHS_ENV_FILE 显式指定配置文件"
)
if not api_base:
api_base = DEFAULT_API_BASE
return api_key, api_base
def get_config(env_file: Optional[str] = None) -> Tuple[str, str]:
"""获取API配置,CLI入口使用清晰错误信息退出。"""
try:
return resolve_config(env_file)
except ConfigError as exc:
sys.stderr.write(f"错误: {exc}\n")
sys.exit(1)
def generate_image(
prompt: str,
aspect_ratio: str = "3:4",
num_images: int = 1,
output_dir: str = None,
model: str = "google/nano-banana/text-to-image",
env_file: Optional[str] = None
):
"""
生成图片
Args:
prompt: 图片描述prompt
aspect_ratio: 图片比例 (3:4, 1:1, 4:3, 16:9, 9:16)
num_images: 生成数量
output_dir: 输出目录
model: 模型名称
env_file: 显式指定的.env配置文件路径
"""
api_key, api_base = get_config(env_file)
# Atlas Cloud 图片生成 endpoint
# 将 /v1 替换为完整的图片生成路径
base_url = api_base.rstrip("/")
if base_url.endswith("/v1"):
base_url = base_url[:-3] # 移除 /v1
endpoint = f"{base_url}/api/v1/model/generateImage"
headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
}
print(f"正在生成图片...")
print(f"模型: {model}")
print(f"比例: {aspect_ratio}")
print(f"Prompt: {prompt[:100]}...")
saved_files = []
for i in range(num_images):
payload = {
"model": model,
"prompt": prompt,
"aspect_ratio": aspect_ratio,
"output_format": "png",
"enable_sync_mode": True # 同步模式,等待完成
}
try:
response = requests.post(endpoint, headers=headers, json=payload, timeout=120)
if response.status_code != 200:
print(f"API错误 ({response.status_code}): {response.text}", file=sys.stderr)
continue
result = response.json()
# Atlas Cloud 响应格式: {"code": 200, "data": {"outputs": [...]}}
data = result.get("data", result) # 兼容两种格式
# 获取图片URL
outputs = data.get("outputs", [])
if not outputs:
# 尝试从其他字段获取
if data.get("urls"):
outputs = list(data["urls"].values())
elif result.get("outputs"):
outputs = result["outputs"]
if not outputs:
print(f"警告: 第{i+1}张图片未返回结果", file=sys.stderr)
continue
# 保存图片
output_path = Path(output_dir) if output_dir else Path.cwd() / "images"
output_path.mkdir(parents=True, exist_ok=True)
for j, img_url in enumerate(outputs):
if img_url.startswith("data:"):
# Base64 编码的图片
import base64
# 格式: data:image/png;base64,xxxxx
header, data = img_url.split(",", 1)
img_data = base64.b64decode(data)
else:
# URL 图片
img_response = requests.get(img_url, timeout=60)
img_data = img_response.content
filename = f"xhs_image_{int(time.time())}_{i+1}_{j+1}.png"
filepath = output_path / filename
with open(filepath, "wb") as f:
f.write(img_data)
saved_files.append(str(filepath))
print(f"已保存: {filepath}")
except requests.exceptions.Timeout:
print(f"超时: 第{i+1}张图片生成超时", file=sys.stderr)
continue
except requests.exceptions.RequestException as e:
print(f"网络错误: {e}", file=sys.stderr)
continue
except Exception as e:
print(f"错误: {e}", file=sys.stderr)
continue
if saved_files:
# 输出JSON结果供Claude读取
print(json.dumps({
"success": True,
"files": saved_files,
"count": len(saved_files)
}))
return saved_files
else:
print(json.dumps({
"success": False,
"error": "未能生成任何图片"
}))
sys.exit(1)
def main():
parser = argparse.ArgumentParser(description="小红书配图生成器 (Atlas Cloud)")
parser.add_argument("prompt", help="图片描述prompt")
parser.add_argument("--ratio", "-r", default="3:4",
choices=["3:4", "4:3", "1:1", "16:9", "9:16", "2:3", "3:2", "4:5", "5:4"],
help="图片比例 (默认: 3:4 竖版)")
parser.add_argument("--num", "-n", type=int, default=1,
help="生成数量 (默认: 1)")
parser.add_argument("--output", "-o", help="输出目录")
parser.add_argument("--model", "-m", default="google/nano-banana/text-to-image",
choices=[
"google/nano-banana/text-to-image",
"google/nano-banana-pro/text-to-image"
],
help="模型 (默认: nano-banana)")
parser.add_argument("--env-file", help="显式指定 .env 配置文件;也可设置 XHS_ENV_FILE")
args = parser.parse_args()
generate_image(args.prompt, args.ratio, args.num, args.output, args.model, args.env_file)
if __name__ == "__main__":
main()
对比冲击型风格
适用于:效果展示、前后对比、使用体验、变化记录
Prompt模板
Create a dramatic before/after comparison image for social media.
Before state: {改变前描述}
After state: {改变后描述}
Theme: {主题}
Style requirements:
- Split composition (left/right or top/bottom)
- Clear visual contrast between states
- Consistent lighting and angle
- Labels for "Before" and "After" in Chinese
- Dramatic difference highlighting
- 3:4 vertical aspect ratio
- Professional, clean aesthetic
- Arrow or transition element between states变体
左右对比
- 画面中线分割
- 左边"使用前"/右边"使用后"
- 适合产品效果、空间改造
上下对比
- 上方展示问题
- 下方展示解决方案
- 适合教程、方法类
多图进度
- 展示渐进变化过程
- 3-4个阶段状态
- 适合健身、学习成长
增强技巧
视觉放大差异
- 使用对比色强调变化区域
- 添加箭头或圈标注
- 数据标注(如"减重10kg")
文字搭配
- "使用前 vs 使用后"
- "Day 1 → Day 30"
- "花了XX做到的改变"
使用技巧
对比冲击型是小红书爆款套路TOP3之一 核心:差异越明显,点击率越高 夸张效果图最吸睛,但要保持真实可信
可爱插画风格
适用于:生活分享、情感内容、职场金句、轻松话题
Prompt模板
Create a cute kawaii illustration for social media post.
Theme: {主题}
Scene: {场景描述}
Style requirements:
- Soft pastel color palette (pink, mint, lavender, cream)
- Chibi-style or simple cartoon characters
- Round, friendly shapes
- Minimal line art with soft edges
- Cozy and warm atmosphere
- 3:4 vertical aspect ratio
- Flat design with subtle gradients
- Dreamy, whimsical background elements
- Appeal to young female audience变体
拟人化动物
- 穿职业装的小猫小狗
- 做日常事务的可爱动物
- 非常适合职场吐槽、生活感悟
简笔插画人物
- 简单线条的小人
- 夸张的表情和动作
- 适合情绪表达、心情分享
治愈系场景
- 温馨的房间角落
- 咖啡店、书店场景
- 适合生活方式、慢生活内容
使用技巧
小红书70%是女性用户,这类可爱风格点击率极高 案例:某博主145篇笔记用可爱插画+职场金句,涨粉6.9万
渐变玻璃卡片风格
适用于:干货教程、知识分享、方法论、清单类内容
Prompt模板
Create a modern glass morphism card design for social media.
Content theme: {主题}
Key points to display: {要点列表}
Style requirements:
- Frosted glass effect with subtle blur
- Gradient background: soft purple to blue, or warm orange to pink
- Rounded corners, soft shadows
- Clean sans-serif typography in Chinese
- Minimalist icons for each point
- 3:4 vertical aspect ratio (1080x1440)
- Subtle light reflections on glass surface
- Professional, modern tech aesthetic
- High contrast text for readability变体
科技蓝调
背景: 深蓝到紫色渐变 玻璃: 淡蓝色半透明 文字: 白色
温暖橙调
背景: 橙色到粉色渐变 玻璃: 淡粉色半透明 文字: 深灰色
极简黑白
背景: 深灰到黑色渐变 玻璃: 白色半透明 文字: 黑色
适用场景
- 程序员教程(5个技巧、10个工具)
- 效率提升方法
- 学习干货清单
- 职场经验分享
真实场景照片风格
适用于:产品测评、种草推荐、探店分享、生活记录
Prompt模板
Create a photorealistic lifestyle image for product/scene showcase.
Subject: {产品/场景}
Setting: {环境描述}
Style requirements:
- Natural daylight or warm indoor lighting
- Shallow depth of field (bokeh background)
- Clean, aesthetic composition
- Lifestyle photography style
- Soft, warm color grading
- 3:4 vertical aspect ratio (1080x1440)
- High detail and realistic textures
- Instagram/Xiaohongshu aesthetic
- Cozy, inviting atmosphere变体
产品特写
- 干净的浅色背景(米白、浅灰)
- 柔和的侧光
- 产品占画面60-70%
- 适当的装饰道具
场景化展示
- 真实使用场景
- 生活化的背景元素
- 自然的光影效果
- 有故事感的构图
氛围感照片
- 咖啡、书本、绿植等氛围道具
- 窗边自然光
- 慵懒、舒适的感觉
- 温暖的调色
使用技巧
- 避免生硬的产品特写,要有生活场景
- 小红书官方推荐"将产品置于实际应用的生活化场景中"
- 画质要高清,拒绝模糊
纯文字重点突出风格
适用于:方法论、干货金句、职场技巧、学习笔记
Prompt模板
Create a bold typography poster design for social media.
Main text: {核心文字}
Subtitle: {副标题}
Style requirements:
- Clean solid background (white, cream, or brand color)
- Bold Chinese typography as focal point
- Key numbers or words in accent color
- Minimalist design with maximum 3 colors
- Clear visual hierarchy
- 3:4 vertical aspect ratio
- Modern, professional feel
- High contrast for readability
- Optional: subtle geometric decorations变体
数字清单型
- 大号数字占30%画面
- 数字用亮色(黄色、橙色)
- 如"7天减脂食谱"的"7"
金句型
- 核心句子居中放大
- 背景纯色或浅渐变
- 适合励志、感悟类
对比冲击型
- 上下或左右分割
- 使用对比色(前/后)
- 适合效果展示
配色方案
专业感
- 背景: 米白 #FAFAF8
- 主文字: 深灰 #2D2D2D
- 强调色: 蓝色 #3B82F6
温暖感
- 背景: 奶油白 #FFF8F0
- 主文字: 深棕 #4A3728
- 强调色: 珊瑚橙 #FF6B6B
清新感
- 背景: 淡薄荷 #F0FFF4
- 主文字: 深绿 #1D4E4E
- 强调色: 薄荷绿 #10B981
使用技巧
知识博主"程十安"长期使用白底+黑色手写体封面 核心:简洁、突出重点、形成个人风格辨识度
小红书标签数据库
使用说明
此为基础标签库,实际使用时应结合 WebSearch 获取的实时热门标签。
---
科技/编程/AI
精准标签
#ClaudeCode #AI编程 #程序员学习 #代码教程 #编程入门 #Python教程 #前端开发 #后端开发 #全栈开发 #编程技巧 #AI工具 #ChatGPT #人工智能应用 #效率神器 #开发者工具
热门标签
#程序员 #程序员日常 #科技 #效率工具 #数码好物 #互联网 #打工人 #职场技能 #自学编程 #转行程序员
泛领域标签
#人工智能 #科技数码 #学习 #技能提升 #干货分享
---
美妆/护肤
精准标签
#油皮护肤 #干皮护肤 #敏感肌护肤 #美白淡斑 #抗衰老 #平价护肤 #学生党护肤 #通勤妆容 #约会妆 #日常淡妆 #眼妆教程 #唇妆推荐 #底妆测评 #卸妆清洁 #防晒推荐
热门标签
#护肤 #美妆 #化妆教程 #好物分享 #测评 #素颜霜 #口红 #粉底液 #面膜 #精华
泛领域标签
#变美 #护肤心得 #美妆博主 #女生必看 #好物推荐
---
穿搭/时尚
精准标签
#通勤穿搭 #约会穿搭 #小个子穿搭 #大码穿搭 #学生党穿搭 #春季穿搭 #夏季穿搭 #秋季穿搭 #冬季穿搭 #显瘦穿搭 #韩系穿搭 #日系穿搭 #极简穿搭 #复古穿搭 #休闲穿搭
热门标签
#穿搭 #ootd #时尚 #每日穿搭 #穿搭分享 #衣服 #裙子 #外套 #鞋子 #包包
泛领域标签
#时尚穿搭 #穿搭博主 #日常穿搭 #好看 #氛围感
---
美食/探店
精准标签
#家常菜谱 #快手菜 #减脂餐 #早餐食谱 #烘焙教程 #一人食 #宿舍美食 #懒人菜谱 #空气炸锅食谱 #下饭菜 #北京探店 #上海探店 #广州探店 #深圳探店 #成都探店
热门标签
#美食 #美食分享 #食谱 #探店 #好吃 #做饭 #下厨 #吃货 #干饭人 #美食教程
泛领域标签
#美食推荐 #美食日记 #今天吃什么 #宅家美食 #治愈美食
---
旅游/出行
精准标签
#小众旅行地 #周末游 #citywalk #一个人旅行 #情侣旅行 #亲子游 #毕业旅行 #国内游 #出境游 #自驾游 #酒店推荐 #民宿推荐 #旅行攻略 #行程规划 #打卡
热门标签
#旅游 #旅行 #出行 #风景 #拍照 #景点 #度假 #周末 #放松 #治愈
泛领域标签
#旅游攻略 #旅行日记 #说走就走 #看世界 #在路上
---
生活/日常
精准标签
#独居生活 #租房改造 #收纳整理 #断舍离 #极简生活 #早起打卡 #自律生活 #时间管理 #生活仪式感 #居家好物 #vlog日常 #一周记录 #生活碎片 #慢生活 #治愈日常
热门标签
#生活 #日常 #记录生活 #生活分享 #我的日常 #vlog #生活记录 #碎片 #随手拍 #今日份
泛领域标签
#生活方式 #生活灵感 #美好生活 #小确幸 #日常生活
---
职场/成长
精准标签
#面试技巧 #简历优化 #职场新人 #升职加薪 #跳槽 #副业赚钱 #自媒体运营 #个人IP #知识付费 #被动收入 #考研 #考公 #考证 #学习方法 #自我提升
热门标签
#职场 #工作 #打工人 #上班族 #搞钱 #成长 #学习 #干货 #经验分享 #建议
泛领域标签
#职场干货 #成长记录 #自我成长 #终身学习 #能力提升
---
母婴/育儿
精准标签
#新手妈妈 #孕期记录 #月子餐 #母乳喂养 #辅食添加 #宝宝辅食 #早教 #儿童绘本 #亲子游戏 #育儿经验 #待产包 #婴儿用品 #儿童穿搭 #宝宝日常 #带娃神器
热门标签
#育儿 #宝宝 #母婴 #孕妈 #带娃 #妈妈 #亲子 #儿童 #婴儿 #萌娃
泛领域标签
#育儿心得 #宝妈日常 #育儿分享 #孕期 #新生儿
---
健身/运动
精准标签
#减脂运动 #增肌训练 #居家健身 #帕梅拉 #刘畊宏 #瑜伽 #普拉提 #跑步 #游泳 #跳绳减肥 #马甲线 #腹肌 #翘臀 #瘦腿 #瘦手臂
热门标签
#健身 #运动 #减肥 #减脂 #瘦身 #锻炼 #自律 #打卡 #坚持 #蜕变
泛领域标签
#健身打卡 #运动日常 #健康生活 #身材管理 #自律生活
---
家居/装修
精准标签
#装修避坑 #小户型装修 #出租屋改造 #软装搭配 #收纳技巧 #厨房收纳 #卫生间装修 #卧室布置 #客厅装修 #阳台改造 #宜家好物 #家居好物 #智能家居 #绿植 #香薰
热门标签
#家居 #装修 #家 #房子 #布置 #收纳 #整理 #改造 #好物 #氛围感
泛领域标签
#家居生活 #家居灵感 #温馨小家 #家的样子 #理想家
---
通用热门标签(适用于多领域)
#好物分享 #干货 #教程 #攻略 #推荐 #真实分享 #亲测有效 #必看 #收藏 #建议 #女生 #姐妹 #宝藏 #神器 #绝绝子
---
节日/活动标签(按时间使用)
一月
#新年 #跨年 #年度总结 #新年计划 #开工
二月
#情人节 #春节 #过年 #年夜饭 #红包
三月
#女神节 #三八节 #春天 #换季 #开学
四月
#清明 #踏青 #春游 #樱花 #野餐
五月
#劳动节 #五一 #母亲节 #出游 #小长假
六月
#儿童节 #端午节 #毕业季 #高考 #夏天
七月
#暑假 #夏日 #防晒 #空调 #冷饮
八月
#七夕 #立秋 #开学季 #返校 #军训
九月
#开学 #教师节 #中秋节 #秋天 #换季
十月
#国庆 #十一 #长假 #秋游 #金秋
十一月
#双十一 #立冬 #感恩节 #囤货 #购物
十二月
#双十二 #圣诞节 #年终 #冬天 #保暖