南美空运价格提取

SKILL效率
效率 未标注权限 许可证不明确
安装这个技能

NANMEI_001 南美空运价格提取规则。当用户提供南美价格 Excel 文件(usd.xlsx,Hoja1 Sheet)时使用。触发词:南美、nanmei、usd.xlsx、nanmei_001、南美运价。

一句话选型结论

按资料字段整理

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

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

安装

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

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

  2. 2
    拿到技能文件

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

  3. 3
    刷新技能列表

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

  4. 4
    验证是否生效

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

技能档案

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

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
整理待办与日程

把零散任务收进清单,排出优先级。

批量处理重复任务

把固定动作做成模板,重复执行。

把流程写成清单

把口头流程整理成可复用的步骤。

选择建议

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

值得选的地方

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

先想清楚的地方

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

更适合

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

不太适合

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

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
南美空运价格提取当前 未标注权限 未标注 未标注 未标注 有
Nano PDF 文档 联网访问 ClawHub 市场 424.9 万 OpenClaw 有
自动更新程序 浏览器控制 ClawHub 市场 296.4 万 OpenClaw 有
Gemini 助手 联网访问 ClawHub 市场 254.7 万 OpenClaw 有
word DOCX 文档 联网访问 ClawHub 市场 239.6 万 OpenClaw 有
Excel XLSX 前端 联网访问 ClawHub 市场 227.0 万 OpenClaw 有

SKILL.md 全文

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

NANMEI_001 价格提取 Skill

提取 NANMEI(usd.xlsx)南美空运运价表 → 24列标准输出 → 上传 WPS。

⚠️ 铁律:仅提取用户最新提交文件,禁止复制历史数据

  • 禁止查看/引用/复制任何历史脚本中的 price/data 数组
  • 禁止从历史输出文件直接读取数据
  • 禁止硬编码历史文件路径作为源文件
  • 每次提取必须从用户当前提交文件全新读取
  • 有就是有,没有就是没有:不得用历史数据填补缺失值

一、核心参数

参数 值
源文件 用户提交(通常为 usd.xlsx)
Sheet Hoja1
起始港 PVG(从路由提取,默认 PVG)
价格编号 nanmei_001
来源 nanmei
生效日期 动态 datetime.now().strftime()(0601改为动态,不再硬编码)
45KG 始终为空(南美文件无 45KG 列)
引擎 openpyxl(.xlsx)

全局规则

  • 频次为空时默认填"Daily":频次列如果为空则填入 Daily(0727全局规则)
  • 分泡列不提取:分泡列始终留空,不提取任何分泡数据(0720全局规则)

二、强制流程

1. 确认用户提交的源文件路径
2. openpyxl 加载 Hoja1
3. 第一遍扫描:收集原始数据(行级状态追踪)
4. 第二遍处理:按数据块链式比重推导
5. 生成 DataFrame → 24列输出
6. 保存 → 自动上传 WPS → 删除本地临时文件

三、Excel 列映射(openpyxl col 索引)

col 字段 作用
1 AOD(目的地) 目的地三字码,空时从路由提取
2 Carrier / Ratio 航司代码 OR 比重货型(KGS/CBM>XXX)
3 100KG 价格
4 300KG 价格
5 500KG 价格
6 1000KG 价格
7 Frequency 航班频次
8 Routing 路由信息(PVG-XXX-YYY-ZZZ)
9 Flight details 航班详情
10 Remark 备注
11 - 附加信息

四、两遍处理架构

4.1 第一遍:收集原始数据

逐行扫描,维护行级状态:

状态变量 更新时机
current_dest col1 有值 OR col8 路由提取
current_carrier col2 被识别为航司代码
current_routing col8 有值
current_origin 从路由第一部分提取
current_transfer 从路由中间段提取
current_freq col7 有值
current_remark col10 有值
block_key (目的港, 航司, 路由) 三元组

数据行分类:
- col2 是航司代码 → 「航司行」(货型=1:1,价格从 col3-6)
- col2 是比重格式 KGS/CBM>XXX → 「比重行」(价格从 col3-6)
- col2 为空或非以上两者 → 跳过

# 只有两种情况才入 raw_data:
if is_carrier:
    raw_data.append({...ratio_type: None, raw_ratio: '1:1', ...})
elif ratio_type and (w100 or w300 or w500 or w1000):
    raw_data.append({...ratio_type: 'gt/lt', ...})

4.2 第二遍:链式比重推导

按 block_key 分组,每组内调用 chain_ratio_derivation():

GT档:按阈值升序,start=阈值,end=下档start,末档=9999
LT档:按阈值升序,start=上档end(首档=0),end=阈值
1:1档:start=0,end=首LT档阈值 或 首GT档阈值 或 9999

五、航司识别(is_carrier_code)

通过条件

  • 2-4位字母数字(AA, DL, CK, 5Y, K4, D0)
  • 多航司 / 分隔(AF/KL, CA/MU, UX/AD → 每个段 2-4 位)

排除条件

条件 示例 原因
含 KGS / CBM KGS/CBM>300 货型格式
含 LOOSE / PALLET 2C loose 货型标识
空格分隔 AA UC 非有效格式
段长 >4 或 <2 XXXXX 超出航司代码长度

航司原样保留

# AF/KL → 保留 &quot;AF/KL&quot;(不拆分)
parse_carrier_codes(val) → [val]  # 含/直接整体返回

六、比重类型解析(parse_ratio_type)

KGS/CBM&gt;300 → ratio_type=&#x27;gt&#x27;, threshold=300, cargo_type=&#x27;&gt;300&#x27;
KGS/CBM&lt;140 → ratio_type=&#x27;lt&#x27;, threshold=140, cargo_type=&#x27;&lt;140&#x27;
其他        → None, None, None

七、路由提取(extract_routing_info)

输入: &quot;PVG-NRT-LAX-MEX-GUA&quot;
输出: origin=&quot;PVG&quot;, transfers=[&quot;NRT&quot;,&quot;LAX&quot;,&quot;MEX&quot;], dest=&quot;GUA&quot;

目的港优先级

  1. col1(AOD)有值且不含 / → 直接使用
  2. col1 为空或含 / → 从 col8 路由提取最终段

多目的地路由

&quot;PEK-AMS/CDG-PTY&quot;
→ origin=&quot;PEK&quot;, transfers=[&quot;AMS/CDG&quot;], dest=&quot;PTY&quot;
→ 取 / 后部分作为目的地

跳转点输出

&quot;跳转点&quot;: &quot;/&quot;.join(transfers)  # &quot;NRT/LAX/MEX&quot;

八、散托类型判断(parse_remark_for_san)

从备注(col10)判断,优先级:

备注关键词 散托类型 说明
LOOSE CARTON ONLY 散货 明确散货
LOOSE + PALLET 同时出现 散货/托盘 混合
PALLET 或 SKID 托盘 纯托盘
LOOSE(无 PALLET) 散货 纯散货
无以上关键词 散货/托盘 默认

散托增量

# 从备注提取托盘加价
USD X.XX/KG → usd_increment = X.XX

九、价格解析(get_price)

  • #N/A / - / N/A / nan / 空 → None
  • float ≤ 0 → None
  • 其他 → float(保留小数)

十、完整数据结构

{
    &quot;起始港&quot;: origin,        # PVG(默认)
    &quot;目的港&quot;: dest,          # 三字码
    &quot;航司&quot;: carrier,         # 原样(含/)
    &quot;开始比重&quot;: start_ratio, # 链式推导结果
    &quot;结束比重&quot;: end_ratio,   # 链式推导结果
    &quot;货型&quot;: raw_ratio,      # 1:1 / &gt;300 / &lt;140
    &quot;45KG&quot;: &quot;&quot;,             # ⚠️ 始终为空
    &quot;100KG&quot;: w100,
    &quot;300KG&quot;: w300,
    &quot;500KG&quot;: w500,
    &quot;1000KG&quot;: w1000,
    &quot;散托类型&quot;: san_type,    # 散货/托盘/散货/托盘
    &quot;开始生效日期&quot;: EFF_DATE,
    &quot;分泡&quot;: &quot;&quot;,
    &quot;频次&quot;: freq,
    &quot;Remark&quot;: &quot;&quot;,
    &quot;跳转点&quot;: &quot;/&quot;.join(transfers),  # ⚠️ 跳转点放这里
    &quot;转运点&quot;: &quot;&quot;,
    &quot;转运费增量值(RMB/KG)&quot;: &quot;&quot;,
    &quot;转运费最低收费(/票)&quot;: &quot;&quot;,
    &quot;备注&quot;: remark,
    &quot;来源&quot;: &quot;nanmei&quot;,
    &quot;价格编号&quot;: &quot;nanmei_001&quot;,
    &quot;散托增量&quot;: usd_increment,
}

十一、常见坑和修复记录

坑1:链式比重 GT/LT 混排

正确做法:先收集 GT 和 LT,分别排序推导,1:1 档取交汇点。

坑2:多航司 AF/KL 误拆分

应原样保留 AF/KL,不拆成两行。

坑3:col1 为空时目的港丢失

必须从 col8 路由提取最终段作为目的地。

坑4:KGS/CBM 格式误识别为航司

必须在 is_carrier_code 中排除含 KGS/CBM 的内容。

坑5:2C loose/pallet 特殊处理(⚠️ 0601修正)

2C loose/2C pallet 含 LOOSE/PALLET 会被 is_carrier_code 排除,但它是有效价格行(carrier=2C)。
✅ 正确做法:新增 parse_carrier_2c() 专门匹配 2C\s+(loose|pallet) 格式:
- 2C loose → carrier=2C, san_type=散货
- 2C pallet → carrier=2C, san_type=托盘

坑6:AFKL 未归一化为 AF/KL

源文件中偶有 AFKL(无斜杠)写法,需在 carrier 识别后归一化为 AF/KL:

if col2_str == &#x27;AFKL&#x27;:
    col2_str = &#x27;AF/KL&#x27;

坑7:无价格航司行不应提取

部分航司行(MU/CM/BA/CV/Y8/5Y/AD)col3-6 全空,但 is_carrier_code 仍返回 True。
✅ 正确做法:航司行入 raw_data 前检查 if not (w100 or w300 or w500 or w1000): continue

坑8:MEX/NLU 双目的地 col1

col1 为 MEX/NLU 时需要拆分为 MEX, NLU(英文逗号+空格):

def clean_dest(dest_str):
    if &#x27;/&#x27; in dest_str:
        return &#x27;, &#x27;.join([p.strip() for p in dest_str.split(&#x27;/&#x27;)])
    return dest_str

坑9:第二个表头段

0601 文件 Row 272 有重复表头 AOD|Carrier|100|300|...,下方 MAD/BCN 价格需正常提取。
✅ 现有逻辑跳过 col1==&quot;AOD&quot; and col2==&quot;Carrier&quot; 已覆盖。

坑10:生效日期硬编码

Skill 写死 2026-04-20 00:00:00,0601 改为动态:

from datetime import datetime
EFF_DATE = datetime.now().strftime(&quot;%Y-%m-%d %H:%M:%S&quot;)

十二、脚本模板

脚本模板:/Users/hantao/WorkBuddy/oone/extract_nanmei.py
源文件:用户提交
输出:NANMEI---标准化价格表.xlsx(临时,上传后删除)

新批次时需更新:
1. file_path 指向新文件
2. EFF_DATE 为动态日期(不再硬编码)
3. 运行 → 验证 → 上传 WPS

十三、版本更新记录

  • 0601: 新增 parse_carrier_2c() 处理 2C loose/pallet;跳过无价格航司行;AFKL→AF/KL 归一化;clean_dest() MEX/NLU;动态日期;新增 MAD/BCN/MVD/ASU/GYE/UIO/VVI 目的地

常见问题

5 问
答案由本站依据条目字段整理
南美空运价格提取怎么安装?

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

南美空运价格提取支持哪些客户端?

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

南美空运价格提取权限高吗,安全吗?

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

南美空运价格提取收费吗?

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

南美空运价格提取用什么许可证?

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

热门专题

按场景挑技能
全部专题 →

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