当前位置:网站首页 >  教程

用Notion搭建可存可查可筛用户库+Python轻量脚本落地日常分层运营管理

时间:2026年06月12日 10:38:08 来源:易频IT社区

前置准备:快速拿到可用环境

无需复杂开发环境,全是免费轻量工具:

  • Notion个人免费版:直接访问 https://www.notion.so/ 注册,新用户送无限个人页面、5MB/附件的免费空间
  • Notion内部集成API密钥:无需第三方授权,自己生成即可
  • Python 3.8+:直接访问 https://www.python.org/downloads/ 下载对应系统安装包,安装时务必勾选「Add Python to PATH」
  • Notion官方Python SDK:安装完Python后,打开终端(Windows用cmd/PowerShell,Mac/Linux用Terminal),输入以下命令:
    pip install notion-client

第一步:在Notion中搭建分层运营专属用户库

1.1 创建基础数据库模板

注册Notion后,点击「New Page」,选择「Database」-「Table」,重命名页面为「日常分层运营用户库」

1.2 配置分层运营核心字段

默认的「Name」字段直接改为「用户ID/手机号」(唯一标识,必填),点击表头右侧的「+」,依次添加以下字段并严格配置类型:

  • 注册时间:类型选「Date」,勾选「Include time」(可选但分析更细)
  • 累计消费金额:类型选「Number」,格式选「Currency」,符号选对应国家货币(如¥),小数位设为2
  • 最近活跃日期:类型选「Date」,默认值设为「Today」(首次录入必填)
  • 累计下单次数:类型选「Number」,格式选「Number」,小数位设为0
  • 自动分层标签:类型选「Select」,手动添加以下4个固定选项:
    • 高价值活跃(紫色)
    • 高价值沉睡(黄色)
    • 低价值活跃(蓝色)
    • 低价值流失(灰色)

1.3 获取数据库ID和集成权限

这是连接Python的核心,步骤不能错:

  1. 获取数据库ID:打开刚创建的用户库页面,复制浏览器地址栏中「notion.so/」到「?v=」之间的32位字符(如果地址栏没?v=,复制到最后即可)
  2. 生成内部API密钥:访问 https://www.notion.so/my-integrations,点击「New integration」,名称填「Python分层脚本」,Associated workspace选你的免费个人空间,Capabilities默认全选(Content capabilities选Read content、Update content、Insert content;User capabilities选No user information;Comment capabilities选No comments),点击「Submit」,复制生成的「Internal Integration Token」(格式是secret_开头的一串字符)
  3. 给API密钥授权:回到用户库页面,点击右上角的「Share」,点击「Invite」旁边的「...」,选择「Add connections」,搜索刚创建的「Python分层脚本」,点击「Confirm」

第二步:编写可直接运行的Python自动分层脚本

2.1 创建脚本文件

用Notion搭建可存可查可筛用户库+Python轻量脚本落地日常分层运营管理

在电脑桌面新建一个txt文件,重命名为「user_segmentation.py」,务必确保后缀名是.py(Windows需先开启显示文件扩展名)

2.2 复制完整可执行代码

将以下代码完整复制到「user_segmentation.py」中,只修改最上方的3个配置项:

from notion_client import Client
from datetime import datetime, timedelta
-- 仅需修改此处3个配置项 --
NOTION_TOKEN = "secret_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"   替换为你的Internal Integration Token
DATABASE_ID = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"             替换为你的32位数据库ID
分层规则(可根据业务调整天数和金额阈值)
RULES = {
"high_value_threshold": 1000,   高价值最低累计消费
"active_days": 7,               活跃判定:最近7天内有活跃
"sleep_days": 30,               沉睡判定:最近30天内无活跃但超7天
"churn_days": 90                流失判定:最近90天内无活跃
}
初始化Notion客户端
notion = Client(auth=NOTION_TOKEN)
获取当前时间(UTC+8,适配国内业务)
now = datetime.utcnow() + timedelta(hours=8)
def get_all_users():
"""获取数据库所有用户"""
users = []
has_more = True
start_cursor = None
while has_more:
response = notion.databases.query(
database_id=DATABASE_ID,
start_cursor=start_cursor
)
users.extend(response["results"])
has_more = response["has_more"]
start_cursor = response["next_cursor"]
return users
def calculate_segment(user):
"""根据字段计算分层标签"""
提取必要字段,处理空值
try:
total_spent = float(user["properties"]["累计消费金额"]["number"] or 0)
except (KeyError, TypeError):
total_spent = 0
try:
last_active_str = user["properties"]["最近活跃日期"]["date"]["start"]
last_active = datetime.fromisoformat(last_active_str.replace("Z", "+00:00")) + timedelta(hours=8)
except (KeyError, TypeError, ValueError):
return "低价值流失"   无活跃时间直接归为流失
计算活跃天数差
days_since_active = (now - last_active).days
按规则判断
if total_spent >= RULES["high_value_threshold"]:
if days_since_active <= RULES["active_days"]:
return "高价值活跃"
elif days_since_active <= RULES["sleep_days"]:
return "高价值沉睡"
else:
return "低价值流失"
else:
if days_since_active <= RULES["active_days"]:
return "低价值活跃"
else:
return "低价值流失"
def update_user_segment(page_id, segment):
"""更新用户的自动分层标签"""
notion.pages.update(
page_id=page_id,
properties={
"自动分层标签": {
"select": {
"name": segment
}
}
}
)
if __name__ == "__main__":
print(f"开始执行分层任务,当前时间:{now.strftime('%Y-%m-%d %H:%M:%S')}")
all_users = get_all_users()
print(f"共获取到 {len(all_users)} 条用户数据")
updated_count = 0
for user in all_users:
current_segment = None
获取当前标签(如果有)
try:
current_segment = user["properties"]["自动分层标签"]["select"]["name"]
except (KeyError, TypeError):
pass
计算新标签
new_segment = calculate_segment(user)
只有标签变化时才更新,节省API调用次数
if new_segment != current_segment:
update_user_segment(user["id"], new_segment)
updated_count += 1
user_id = user["properties"]["用户ID/手机号"]["title"][0]["text"]["content"]
print(f"已更新用户 {user_id} 的标签:{current_segment or '无'} → {new_segment}")
print(f"分层任务完成,共更新 {updated_count} 条用户数据")

第三步:手动测试+设置自动化定时运行

3.1 手动测试脚本

  1. 在Notion用户库中手动添加3-5条测试数据,覆盖不同消费金额、活跃时间
  2. 打开终端,输入「cd Desktop」(Mac/Linux如果桌面路径不同自行调整),回车进入桌面目录
  3. 输入「python user_segmentation.py」(Windows如果安装了多个Python,用「python3 user_segmentation.py」),回车运行
  4. 查看终端输出和Notion用户库的「自动分层标签」是否正确更新

3.2 Windows设置每日定时运行

无需云服务器,本地Windows即可免费定时:

  1. 搜索「任务计划程序」并打开
  2. 点击右侧「创建基本任务」,名称填「每日用户分层」,描述可选,点击「下一步」
  3. 触发器选「每天」,设置你想要的运行时间(比如凌晨1点),点击「下一步」
  4. 操作选「启动程序」,点击「下一步」
  5. 「程序或脚本」填Python的完整路径(比如「C:\Users\你的用户名\AppData\Local\Programs\Python\Python311\python.exe」,可以在终端输入「where python」获取),「添加参数」填脚本的完整路径(比如「C:\Users\你的用户名\Desktop\user_segmentation.py」),「起始于」留空,点击「下一步」
  6. 勾选「当点击完成时,打开此任务属性的对话框」,点击「完成」
  7. 在属性对话框的「常规」选项卡中,勾选「不管用户是否登录都要运行」(确保关机重启后也能定时),点击「确定」

3.3 Mac/Linux设置每日定时运行

用系统自带的crontab即可:

  1. 打开终端,输入「crontab -e」,回车进入编辑界面
  2. 按「i」键进入插入模式,添加以下一行(设置凌晨1点运行,Python路径用「which python3」获取):
    0 1    /usr/local/bin/python3 /Users/你的用户名/Desktop/user_segmentation.py >> /Users/你的用户名/Desktop/segmentation_log.txt 2>&1
  3. 按「Esc」键退出插入模式,输入「:wq」,回车保存退出

日志会自动保存到桌面的「segmentation_log.txt」中,方便查看运行情况

标签 运营管理

相关推荐

最新

热门

推荐

精选

标签

易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。

Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图