🔍 Conversion Funnel Intelligence

SKILL研究检索
研究检索 未标注权限 许可证不明确
安装这个技能

| 转化漏斗智能分析

一句话选型结论

按资料字段整理

🔍 Conversion Funnel Intelligence是研究检索类的 Agent Skill,安装方式未标注,权限级别未标注,许可证不明确,有可直接复制的安装命令。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

分类研究检索 安装方式未标注 权限级别未标注权限 许可证许可证不明确
累计安装 未标注 本周 未标注
GitHub 星标 未标注 仓库 未标注
下载量 未标注 技能市场下载数
权限级别 未标注权限 安装前请确认风险范围
许可证 许可证不明确 未说明

安装

未标注
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
skillhub install user_ede7f505/product-b-funnel
  1. 1
    确认客户端支持

    确认你的客户端支持 Skills(Claude、Codex、Cursor 等),并升级到较新的版本。

  2. 2
    拿到技能文件

    执行上面的命令安装;也可以把仓库里的 SKILL.md 手动放进客户端的 skills 目录。

  3. 3
    刷新技能列表

    重新打开客户端,或刷新技能列表,让新放进来的技能被加载。

  4. 4
    验证是否生效

    问一句「你有哪些技能」,确认列表里出现它,再拿一个小任务试跑。

技能档案

研究检索
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方user_ede7f505仓库 未标注 · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式未标注安装包 community
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验未标注上游最后核验时间 · 数据更新 1791706306
正文体量16.6 KBSKILL.md 原文大小,越大说明说明书写得越细

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
查资料并整理出处

让模型按主题查资料,并把引用来源整理成清单。

网页与文献要点提炼

把长文、论文、网页压成能直接看的要点。

竞品与行业汇总

按关键词汇总竞品动态与行业信息。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有标注权限级别,实际能做什么要装好后确认。
  • 许可证不明确,商用或二次分发前先到仓库确认条款。
  • 没有做站内核验,内容以作者仓库为准。
  • 技能只是说明书,实际效果取决于模型与客户端,装完先用小任务试一遍。

更适合

  • 需要在研究检索场景里给模型补一套做法的人。
  • 愿意先读一遍 SKILL.md、确认它会让模型做什么的人。

不太适合

  • 对许可证要求很严、必须明确可商用的人。
  • 只想装完就自动变强、不打算看说明书的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
🔍 Conversion Funnel Intelligence当前 未标注权限 未标注 未标注 未标注 有
寻找技能 浏览器控制 GitHub 仓库 3120.0 万 Codex、Claude、Cursor 有
自我改进 Agent 接触敏感数据 ClawHub 市场 1646.4 万 OpenClaw 有
灵魂追踪 联网访问 GitHub 仓库 758.9 万 Codex、Claude、Cursor 有
自我完善 联网访问 ClawHub 市场 682.9 万 OpenClaw 有
微软代工厂 调用外部服务 GitHub 仓库 661.4 万 Codex、Claude、Cursor 有

SKILL.md 全文

16.6 KB
模型实际读到的说明书原文,来自技能仓库

product-b-funnel

Conversion Funnel Intelligence — Product_B 营销转化漏斗分析与预算规划工具。

适用于每月 Product_B 渠道预算分配决策,核心输出:各渠道 AF CAP 建议值 + 渠道保留策略(低有效性渠道只降 CAP,不暂停)。


适用场景

  • 每月 Product_B 渠道预算分配,需计算各渠道有效性并推荐 AF CAP
  • 需要合并 AppsFlyer 事件数据与 CRM 实际转化数据做漏斗分析
  • 评估哪些渠道值得增加投放,哪些需要控制
  • 重要原则:保留全量渠道数据,不因低有效性暂停渠道(仅调整 CAP)

核心指标

指标 计算公式 说明
AF 事件数 COUNT(af_events) AppsFlyer 记录的目标事件数
CRM 转化数 COUNT(crm_users) CRM 系统中实际完成注册的用户数
有效性 CRM转化数 / AF事件数 × 100% 渠道质量核心指标
AF CAP AF事件数 × Factor 建议的下月 CAP 上限
预计 CRM AF_CAP × 有效性% 按新 CAP 预期的 CRM 产出

核心事件

AppsFlyer 关键事件:product_b_core_event
含义:核心转化事件(Product_B 关键指标)

有效性分类与调整策略

分类 有效性范围 Factor Action
高有效性 ≥30% 1.2 增加投放(提高CAP)
中有效性 20%-30% 1.0 维持不变
低有效性 <20% 0.5 降低CAP(但不暂停)

重要原则:低有效性渠道降低 CAP 但不暂停,保留优化空间(Fintech 流量质量波动大)。


完整执行脚本

> 保存为 product_b_funnel.py,与 AF CSV 和 CRM xlsx 放在同一目录运行。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
&quot;&quot;&quot;
product_b_funnel.py
Conversion Funnel Intelligence — Product_B 漏斗分析完整脚本

功能:
1. 加载 AppsFlyer 事件数据(过滤目标事件)
2. 按 AppsFlyer ID 去重(每设备取最早事件)
3. 加载 CRM 转化数据(source_bank + user_count)
4. 按渠道合并,计算有效性(CRM转化数 / AF事件数)
5. 根据有效性分类,计算 Factor 和 AF CAP 建议
6. 输出带颜色标注的 Excel 报告(绿/黄/红)

用法:
    python3 product_b_funnel.py \
        --af product_b_in-app-events_*.csv \
        --crm crm_data.xlsx \
        --output product_b_funnel_result.xlsx
&quot;&quot;&quot;

import argparse
import pandas as pd
import sys
from openpyxl import Workbook
from openpyxl.styles import PatternFill, Font, Alignment
from openpyxl.utils.dataframe import dataframe_to_rows
from openpyxl.utils import get_column_letter

# ── 配置区 ─────────────────────────────────────────────
TARGET_EVENT = &#x27;product_b_core_event&#x27;  # Product_B 核心转化事件
VALIDITY_HIGH = 30   # % 以上 → 高有效性
VALIDITY_MID = 20    # % 以上 → 中有效性,以下 → 低有效性


def classify_validity(pct: float) -&gt; str:
    if pct &gt;= VALIDITY_HIGH:
        return &#x27;高有效性&#x27;
    elif pct &gt;= VALIDITY_MID:
        return &#x27;中有效性&#x27;
    else:
        return &#x27;低有效性&#x27;


def get_factor(pct: float) -&gt; float:
    if pct &gt;= VALIDITY_HIGH:
        return 1.2
    elif pct &gt;= VALIDITY_MID:
        return 1.0
    else:
        return 0.5


def get_action(pct: float) -&gt; str:
    if pct &gt;= VALIDITY_HIGH:
        return &#x27;增加投放(提高CAP)&#x27;
    elif pct &gt;= VALIDITY_MID:
        return &#x27;维持不变&#x27;
    else:
        return &#x27;降低CAP(但不暂停)&#x27;


def find_column(df: pd.DataFrame, candidates: list) -&gt; str | None:
    &quot;&quot;&quot;在 DataFrame 列名中查找第一个匹配的列(忽略大小写)&quot;&quot;&quot;
    df_cols_lower = {c.lower(): c for c in df.columns}
    for c in candidates:
        if c in df.columns:
            return c
        if c.lower() in df_cols_lower:
            return df_cols_lower[c.lower()]
    return None


def main():
    parser = argparse.ArgumentParser(
        description=&#x27;Conversion Funnel Intelligence — Product_B 漏斗分析工具&#x27;
    )
    parser.add_argument(&#x27;--af&#x27;, required=True, help=&#x27;AppsFlyer 事件 CSV 文件路径&#x27;)
    parser.add_argument(&#x27;--crm&#x27;, required=True, help=&#x27;CRM xlsx 文件路径&#x27;)
    parser.add_argument(&#x27;--output&#x27;, default=&#x27;product_b_funnel_result.xlsx&#x27;, help=&#x27;输出 Excel 路径&#x27;)
    parser.add_argument(&#x27;--target-event&#x27;, default=TARGET_EVENT,
                        help=f&#x27;目标事件名(默认 {TARGET_EVENT})&#x27;)
    args = parser.parse_args()

    target_event = args.target_event

    # ── Step 1:加载 AppsFlyer 数据 ──────────────────
    print(f&#x27;[Step 1] 加载 AppsFlyer 数据:{args.af}&#x27;)
    try:
        af = pd.read_csv(args.af, low_memory=False)
    except Exception as e:
        print(f&#x27;ERROR: 无法读取 AF CSV 文件:{e}&#x27;)
        sys.exit(1)

    print(f&#x27;  AF 数据总行数:{len(af)}&#x27;)

    id_col = find_column(af, [&#x27;AppsFlyer ID&#x27;, &#x27;v_appsflyer_id&#x27;])
    event_col = find_column(af, [&#x27;Event Name&#x27;, &#x27;event_name&#x27;])
    time_col = find_column(af, [&#x27;Event Time&#x27;, &#x27;event_time&#x27;])
    channel_col = find_column(af, [&#x27;Channel&#x27;, &#x27;channel&#x27;])
    media_source_col = find_column(af, [&#x27;Media Source&#x27;, &#x27;media_source&#x27;])
    primary_col = find_column(af, [&#x27;Is Primary Attribution&#x27;, &#x27;is_primary_attribution&#x27;])

    if not id_col or not event_col:
        print(f&#x27;ERROR: AF 数据缺少必要字段(需要 AppsFlyer ID + Event Name)&#x27;)
        print(f&#x27;  可用字段:{list(af.columns)}&#x27;)
        sys.exit(1)

    print(f&#x27;  字段映射:ID={id_col}, Event={event_col}, Time={time_col}&#x27;)
    print(f&#x27;  Channel={channel_col}, Primary={primary_col}&#x27;)

    # ── Step 2:过滤目标事件 + 主归因 ─────────────────
    print(f&#x27;[Step 2] 过滤目标事件:{target_event}&#x27;)
    before = len(af)
    af = af[af[event_col] == target_event]
    after_event = len(af)
    print(f&#x27;  按事件名过滤:{before} → {after_event} 行&#x27;)

    if primary_col:
        before_p = len(af)
        af[primary_col] = af[primary_col].astype(str).str.lower().isin([&#x27;true&#x27;, &#x27;1&#x27;, &#x27;yes&#x27;])
        af = af[af[primary_col] == True]
        after_p = len(af)
        print(f&#x27;  保留主归因({primary_col}=True):{before_p} → {after_p} 行&#x27;)
    else:
        print(&#x27;  ⚠ 未找到 Is Primary Attribution 字段,跳过主归因过滤&#x27;)

    # ── Step 3:按 AppsFlyer ID 去重(取最早事件)───
    print(f&#x27;[Step 3] 按 {id_col} 去重(保留最早事件)...&#x27;)
    af[time_col] = pd.to_datetime(af[time_col], errors=&#x27;coerce&#x27;)
    af_dedup = (af
        .sort_values(time_col)
        .groupby(id_col)
        .first()
        .reset_index())
    print(f&#x27;  去重后行数:{len(af_dedup)}(移除 {len(af) - len(af_dedup)} 条重复)&#x27;)

    # ── Step 4:按渠道汇总 AF 事件数 ──────────────────
    print(&#x27;[Step 4] 按渠道汇总 AF 事件数...&#x27;)
    group_col = channel_col if channel_col else media_source_col
    if not group_col:
        print(&#x27;ERROR: 找不到 Channel 或 Media Source 字段,无法按渠道汇总&#x27;)
        sys.exit(1)

    af_by_channel = (af_dedup
        .groupby(group_col)
        .size()
        .reset_index(name=&#x27;af_events&#x27;))
    print(f&#x27;  渠道数:{len(af_by_channel)}&#x27;)
    print(f&#x27;  AF 事件数 Top5:&#x27;)
    for row in af_by_channel.nlargest(5, &#x27;af_events&#x27;).itertuples(index=False):
        ch = getattr(row, group_col)
        cnt = row.af_events
        print(f&#x27;    {ch}: {cnt:,}&#x27;)

    # ── Step 5:加载 CRM 数据 ───────────────
    print(f&#x27;[Step 5] 加载 CRM 数据:{args.crm}&#x27;)
    try:
        crm = pd.read_excel(args.crm)
    except Exception as e:
        print(f&#x27;ERROR: 无法读取 CRM xlsx 文件:{e}&#x27;)
        sys.exit(1)

    print(f&#x27;  CRM 数据行数:{len(crm)}&#x27;)

    crm_channel_col = find_column(crm, [&#x27;source_bank&#x27;, &#x27;source&#x27;, &#x27;channel&#x27;, &#x27;Channel&#x27;])
    crm_count_col = find_column(crm, [&#x27;user_count&#x27;, &#x27;conversions&#x27;, &#x27;users&#x27;, &#x27;count&#x27;])

    if not crm_channel_col or not crm_count_col:
        print(f&#x27;ERROR: CRM 数据缺少必要字段(需要渠道名列 + 用户数列)&#x27;)
        print(f&#x27;  可用字段:{list(crm.columns)}&#x27;)
        sys.exit(1)

    print(f&#x27;  CRM 字段映射:Channel={crm_channel_col}, Count={crm_count_col}&#x27;)

    crm_by_channel = (crm
        .groupby(crm_channel_col)[crm_count_col]
        .sum()
        .reset_index(name=&#x27;crm_conversions&#x27;))
    print(f&#x27;  CRM 渠道数:{len(crm_by_channel)}&#x27;)

    # ── Step 6:合并 AF + CRM,计算有效性 ───────────
    print(&#x27;[Step 6] 合并 AF + CRM,计算有效性...&#x27;)
    result = af_by_channel.merge(crm_by_channel, left_on=group_col, right_on=crm_channel_col, how=&#x27;left&#x27;)
    result[&#x27;crm_conversions&#x27;] = result[&#x27;crm_conversions&#x27;].fillna(0).astype(int)

    # 计算有效性(避免除零)
    result[&#x27;validity_pct&#x27;] = result.apply(
        lambda row: round(row[&#x27;crm_conversions&#x27;] / row[&#x27;af_events&#x27;] * 100, 2)
        if row[&#x27;af_events&#x27;] &gt; 0 else 0,
        axis=1
    )

    # 分类 + Factor + Action
    result[&#x27;classification&#x27;] = result[&#x27;validity_pct&#x27;].apply(classify_validity)
    result[&#x27;factor&#x27;] = result[&#x27;validity_pct&#x27;].apply(get_factor)
    result[&#x27;af_cap&#x27;] = (result[&#x27;af_events&#x27;] * result[&#x27;factor&#x27;]).astype(int)
    result[&#x27;est_crm&#x27;] = (result[&#x27;af_cap&#x27;] * result[&#x27;validity_pct&#x27;] / 100).astype(int)
    result[&#x27;action&#x27;] = result[&#x27;validity_pct&#x27;].apply(get_action)

    # 整理输出列顺序
    out_cols = [group_col, &#x27;af_events&#x27;, &#x27;crm_conversions&#x27;, &#x27;validity_pct&#x27;,
                &#x27;classification&#x27;, &#x27;factor&#x27;, &#x27;af_cap&#x27;, &#x27;est_crm&#x27;, &#x27;action&#x27;]
    out_cols = [c for c in out_cols if c in result.columns]
    result_out = result[out_cols].sort_values(&#x27;af_events&#x27;, ascending=False)

    print(f&#x27;  合并后渠道数:{len(result_out)}&#x27;)
    print(f&#x27;  平均有效性:{result_out[&quot;validity_pct&quot;].mean():.2f}%&#x27;)
    print(f&#x27;  高有效性(≥{VALIDITY_HIGH}%)渠道数:{(result_out[&quot;classification&quot;] == &quot;高有效性&quot;).sum()}&#x27;)
    print(f&#x27;  中有效性({VALIDITY_MID}-{VALIDITY_HIGH}%)渠道数:{(result_out[&quot;classification&quot;] == &quot;中有效性&quot;).sum()}&#x27;)
    print(f&#x27;  低有效性(&lt;{VALIDITY_MID}%)渠道数:{(result_out[&quot;classification&quot;] == &quot;低有效性&quot;).sum()}&#x27;)

    # ── Step 7:输出 Excel 报告(带颜色标注)────────
    print(f&#x27;[Step 7] 输出 Excel 报告:{args.output}&#x27;)
    wb = Workbook()
    ws = wb.active
    ws.title = &#x27;Product_B Funnel Analysis&#x27;

    # 标题行样式
    header_fill = PatternFill(fill_type=&#x27;solid&#x27;, fgColor=&#x27;1F4E79&#x27;)  # 深蓝
    header_font = Font(color=&#x27;FFFFFF&#x27;, bold=True, size=11)
    high_fill = PatternFill(fill_type=&#x27;solid&#x27;, fgColor=&#x27;C6EFCE&#x27;)   # 绿
    mid_fill = PatternFill(fill_type=&#x27;solid&#x27;, fgColor=&#x27;FFEB9C&#x27;)    # 黄
    low_fill = PatternFill(fill_type=&#x27;solid&#x27;, fgColor=&#x27;FFC7CE&#x27;)    # 红

    # 写入表头
    for col_idx, col_name in enumerate(out_cols, 1):
        cell = ws.cell(row=1, column=col_idx, value=col_name)
        cell.fill = header_fill
        cell.font = header_font
        cell.alignment = Alignment(horizontal=&#x27;center&#x27;)

    # 写入数据行
    for row_idx, row in enumerate(result_out.itertuples(index=False), 2):
        for col_idx, col_name in enumerate(out_cols, 1):
            val = getattr(row, col_name)
            cell = ws.cell(row=row_idx, column=col_idx, value=val)
            cell.alignment = Alignment(horizontal=&#x27;center&#x27;)

        # 按有效性分类上色
        pct = row.validity_pct
        if pct &gt;= VALIDITY_HIGH:
            fill = high_fill
        elif pct &gt;= VALIDITY_MID:
            fill = mid_fill
        else:
            fill = low_fill
        for col_idx in range(1, len(out_cols) + 1):
            ws.cell(row=row_idx, column=col_idx).fill = fill

    # 自动调整列宽
    for col_idx, col_name in enumerate(out_cols, 1):
        max_len = max(
            len(str(col_name)),
            result_out[col_name].astype(str).map(len).max() if len(result_out) &gt; 0 else 0
        )
        ws.column_dimensions[get_column_letter(col_idx)].width = min(max_len + 2, 30)

    wb.save(args.output)
    print(f&#x27;  ✅ Excel 报告已保存:{args.output}&#x27;)
    print(f&#x27;  颜色标注:绿色=高有效性 ≥{VALIDITY_HIGH}%,黄色=中有效性 {VALIDITY_MID}-{VALIDITY_HIGH}%,红色=低有效性 &lt;{VALIDITY_MID}%&#x27;)

    # ── Step 8:打印汇总 ──────────────────────────────
    print(&#x27;\n═══ 汇总结果 ═══&#x27;)
    print(result_out.to_string(index=False))
    print(&#x27;\n═══ 预算建议(按 AF CAP 排序)═══&#x27;)
    budget_view = result_out[[&#x27;af_cap&#x27;, &#x27;est_crm&#x27;, &#x27;action&#x27;]].sort_values(&#x27;af_cap&#x27;, ascending=False)
    print(budget_view.to_string(index=False))
    print(f&#x27;\n总建议 AF CAP:{result_out[&quot;af_cap&quot;].sum():,}&#x27;)
    print(f&#x27;预计总 CRM 产出:{result_out[&quot;est_crm&quot;].sum():,}&#x27;)


if __name__ == &#x27;__main__&#x27;:
    main()

脚本使用方法

安装依赖

pip install pandas openpyxl

准备输入文件

文件1:AppsFlyer 事件 CSV
- 从 AF 后台导出 in-app-events CSV
- 包含目标转化事件
- 必要字段:AppsFlyer ID(或 v_appsflyer_id)、Event Name、Event Time

文件2:CRM xlsx
- 财务/结算系统导出的转化数据
- 必要字段:source_bank(渠道名)、user_count(转化用户数)

运行

python3 product_b_funnel.py \
    --af product_b_in-app-events_20260501_20260531.csv \
    --crm crm_data.xlsx \
    --output product_b_funnel_result.xlsx

输出文件

product_b_funnel_result.xlsx(带颜色标注)

Channel AF Events CRM Conversions Validity% Classification Factor AF_CAP Est.CRM Action
channel_a 15000 5200 34.67 高有效性 1.2 18000 6238 增加投放
channel_b 8000 2000 25.00 中有效性 1.0 8000 2000 维持不变
channel_c 5000 400 8.00 低有效性 0.5 2500 200 降低CAP

颜色标注:
- 🟢 绿色行:高有效性(≥30%)→ 增加 CAP
- 🟡 黄色行:中有效性(20-30%)→ 维持不变
- 🔴 红色行:低有效性(<20%)→ 降低 CAP(不暂停)


漏斗可视化

总 AF 事件(目标事件)
    ↓ 去重(每设备1次)
有效 AF 事件
    ↓ × 有效性%
实际 CRM 转化
    ↓ × Factor
建议 AF CAP(下月目标)
    ↓ × 有效性%
预计 CRM 产出

业务背景

  • Product_B 是某地区主流小额信贷应用,核心转化为账户创建
  • 约 20-30 个渠道并行投放,有效性差异显著(5%-60%+)
  • 低有效性渠道(<20%)通常是流量质量差或存在刷量,但保留观察不立即暂停
  • 每月结算前需根据实际转化率调整下月预算分配

与其他 Skill 的关系

AppsFlyer 事件 CSV
    ↓  product-b-funnel(本 Skill)
渠道 AF CAP 建议 + 有效性分类
    ↓
├── campaign-budget-analysis(整合多 App 预算分配)
└── pa-export-channel-report-v2(导出 PA 数据时参考 CAP)

触发词

  • "Product_B 预算"、"Product_B 分析"、"Product_B 渠道"
  • "CRM 数据"、"转化漏斗"
  • "渠道有效性分析"、"UA 预算分配"
  • "Conversion Funnel Intelligence"
  • "Product_B CAP 建议"

版本:v1.2.0 | 更新:2026-05-13 | 脱敏优化版本

Scripts

The following bundled scripts support this skill:

Script Purpose
funnel_intelligence.py Executable script

常见问题

5 问
答案由本站依据条目字段整理
🔍 Conversion Funnel Intelligence怎么安装?

在支持 Skills 的客户端里执行:skillhub install user_ede7f505/product-b-funnel。安装方式为未标注。装完刷新技能列表或重开客户端。

🔍 Conversion Funnel Intelligence支持哪些客户端?

资料没有标注宿主客户端,但只要客户端支持 Skills(Claude、Codex、Cursor 等),一般都能加载。

🔍 Conversion Funnel Intelligence权限高吗,安全吗?

权限级别为未标注权限。安装前先看它会读取或写入哪些内容。

🔍 Conversion Funnel Intelligence收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于技能本身和所用的模型或客户端,正式使用前按作者说明确认。

🔍 Conversion Funnel Intelligence用什么许可证?

许可证标注为 未说明(许可证不明确)。商用或二次分发前请到仓库确认条款原文。

热门专题

按场景挑技能
全部专题 →

技能内容以作者仓库为准;分类、权限级别与许可证状态的中文说明为中文整理,最近核验 未标注。