diff --git a/.claudian/sessions/conv-1793925217144-zpzd4w5rp.meta.json b/.claudian/sessions/conv-1793925217144-zpzd4w5rp.meta.json index a574f21..7d209de 100644 --- a/.claudian/sessions/conv-1793925217144-zpzd4w5rp.meta.json +++ b/.claudian/sessions/conv-1793925217144-zpzd4w5rp.meta.json @@ -4,6 +4,20 @@ "title": "Fix garbled text in document display", "titleGenerationStatus": "success", "createdAt": 1793925217144, - "updatedAt": 1793925225872, - "sessionId": null + "updatedAt": 1793928017499, + "lastResponseAt": 1793928017499, + "sessionId": "faab80b4-230c-4c59-9296-ba57e6af8986", + "providerState": { + "providerSessionId": "faab80b4-230c-4c59-9296-ba57e6af8986" + }, + "usage": { + "model": "glm-5", + "inputTokens": 622, + "cacheCreationInputTokens": 0, + "cacheReadInputTokens": 67840, + "contextWindow": 200000, + "contextTokens": 68462, + "percentage": 34, + "contextWindowIsAuthoritative": true + } } \ No newline at end of file diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index ac49373..c650d69 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -13,12 +13,12 @@ "state": { "type": "markdown", "state": { - "file": "百家/野生动物+物理地形.md", + "file": "思睿/身高/第一医院/第一医院检查总结.md", "mode": "source", "source": false }, "icon": "lucide-file", - "title": "野生动物+物理地形" + "title": "第一医院检查总结" } } ] @@ -197,26 +197,28 @@ "realclaudian:Open Claudian": false } }, - "active": "80266ee6e0ac306d", + "active": "fdbcd1b46c89bc2a", "lastOpenFiles": [ + "妹妹/妹妹身高.md", "思睿/身高/综合健康复诊分析.md", "思睿/身高/综合健康评估总结.md", - "generate_docs.py", + "思睿/身高/综合健康评估总结.md.tmp.19184.eef11a9104a9", + "思睿/哥哥身高.md", + "妹妹/妹妹身高.md.corrupt-20260916", + "思睿/哥哥身高.md.corrupt-20260916", + "思睿/身高/综合健康评估总结.md.corrupt-20260916", + "思睿/身高/综合健康复诊分析.md.corrupt-20260916", + "百家/analyze_baijiahao.py", + "思睿/身高/第一医院/病例/2026-10-19.pdf", + "思睿/身高/第一医院/病例/2026-03-07.pdf", + "思睿/身高/第一医院/病例/2026-07-18.pdf", + "思睿/身高/第一医院/病例/2026-07-11.pdf", "百家/野生动物+物理地形.md", "百家/code_artifact.md", - "百家", - "新建文件夹", - "temp_test_zip2.py", - "temp_test_zip.py", - "temp_check_zip.py", - "temp_check_zst.py", "思睿/思睿资料核对与待办清单.md", - "思睿/哥哥身高.md", "思睿/初中/观音山音乐学校分析.md", "思睿/身高/第一医院/第一医院检查总结.md", - "思睿/七年级/作文/照顾妹妹的一天-作文批改打印版.pdf", "思睿/七年级/作文/照顾妹妹的一天--原文.md", - "妹妹/妹妹身高.md", "思睿/身高/第一医院/报告/20261019报告/extracted_images/血常规 20261019_p1_img2.png", "思睿/身高/第一医院/报告/20261019报告/extracted_images/血常规 20261019_p1_img1.png", "思睿/身高/第一医院/报告/20261019报告/extracted_images/胰岛素测定 20261019_p1_img2.png", @@ -227,8 +229,6 @@ "思睿/身高/第一医院/报告/20261019报告/extracted_images/常规生化全套检查 20261019_p2_img1.png", "思睿/身高/第一医院/报告/20261019报告/extracted_images/常规生化全套检查 20261019_p1_img2.png", "思睿/身高/第一医院/报告/20261019报告/extracted_images/常规生化全套检查 20261019_p1_img1.png", - "思睿/身高/第一医院/报告/20261019报告/extracted_images", - "test.txt", "思睿/身高/第一医院/temp_zip_check/第一医院检查总结.md", "小鱼/闲鱼数据分析_2026-11-03.md", "小鱼/闲鱼选品与运营指导_2026-11-03.md", diff --git a/妹妹/妹妹身高.md b/妹妹/妹妹身高.md index 2b5aefd..90d5049 100644 Binary files a/妹妹/妹妹身高.md and b/妹妹/妹妹身高.md differ diff --git a/妹妹/妹妹身高.md.corrupt-20260916 b/妹妹/妹妹身高.md.corrupt-20260916 new file mode 100644 index 0000000..2b5aefd Binary files /dev/null and b/妹妹/妹妹身高.md.corrupt-20260916 differ diff --git a/思睿/哥哥身高.md b/思睿/哥哥身高.md index 38381bb..46132fb 100644 Binary files a/思睿/哥哥身高.md and b/思睿/哥哥身高.md differ diff --git a/思睿/哥哥身高.md.corrupt-20260916 b/思睿/哥哥身高.md.corrupt-20260916 new file mode 100644 index 0000000..38381bb Binary files /dev/null and b/思睿/哥哥身高.md.corrupt-20260916 differ diff --git a/思睿/身高/综合健康复诊分析.md b/思睿/身高/综合健康复诊分析.md index 9e0de88..a565a3d 100644 Binary files a/思睿/身高/综合健康复诊分析.md and b/思睿/身高/综合健康复诊分析.md differ diff --git a/思睿/身高/综合健康复诊分析.md.corrupt-20260916 b/思睿/身高/综合健康复诊分析.md.corrupt-20260916 new file mode 100644 index 0000000..9e0de88 Binary files /dev/null and b/思睿/身高/综合健康复诊分析.md.corrupt-20260916 differ diff --git a/思睿/身高/综合健康评估总结.md b/思睿/身高/综合健康评估总结.md index 3990b5f..9ac13fe 100644 Binary files a/思睿/身高/综合健康评估总结.md and b/思睿/身高/综合健康评估总结.md differ diff --git a/思睿/身高/综合健康评估总结.md.corrupt-20260916 b/思睿/身高/综合健康评估总结.md.corrupt-20260916 new file mode 100644 index 0000000..3990b5f Binary files /dev/null and b/思睿/身高/综合健康评估总结.md.corrupt-20260916 differ diff --git a/百家/analyze_baijiahao.py b/百家/analyze_baijiahao.py new file mode 100644 index 0000000..c04ee6a --- /dev/null +++ b/百家/analyze_baijiahao.py @@ -0,0 +1,75 @@ +# -*- coding: utf-8 -*- +# 百家号 39 条视频数据归因分析:按题材分类汇总 + 互动率/点击率 + 输出 Excel 归因表 +import sys +import pandas as pd +import openpyxl + +sys.stdout.reconfigure(encoding="utf-8") + +df = pd.read_excel(r"E:\Download\单篇数据.xlsx", sheet_name="data") +df.columns = [str(c).strip() for c in df.columns] + +# 题材人工归类(基于标题与策略文档对照) +CAT = { + "大角羊IP(悬崖物理反杀)": ["悬崖冰桥上的极限遭遇战", "大角羊被狼群逼入绝境,竟靠这一招", + "大角羊卡住悬崖窄道", "悬崖之巅的生死角逐", "罕见野外抓拍:大角羊", + "绝地反击!大角羊引发落石"], + "农家院保卫战(护崽情感)": ["千万别惹看家大鹅", "迷你黄鼠狼进院偷小鸡", "黄鼠狼进院偷袭小鸡"], + "绝对防御(连XX都不敢惹)": ["为什么连鳄鱼都不敢惹河马", "为什么连狮子都忌惮非洲水牛", + "连狮子都咬不穿的防御", "穿山甲偶遇小花豹", "连狮子都扎嘴的豪猪", + "为什么说一猪二熊三老虎", "水牛轰然倒地"], + "高山其他蹄类(物理系)": ["物理学不存在了", "盘羊高处蹬落碎冰", "雪羊占据陡坡高地", + "绝壁上的", "野狼仰攻野牦牛", "大自然的天然溜冰场", "雪地追击变成花样滑冰"], + "雪兔压强": ["受力面积的降维打击", "为什么雪兔在厚雪地里跑不陷脚"], + "北极狐走位": ["饥饿北极熊雪地狂追北极狐", "急眼了!北极熊狂追小狐狸"], + "水下题材": ["原来真有动物会用工具", "千万别和企鹅比灵活", "千万别惹"], + "萌宠表情/搞笑": ["高空猛禽突然掠过,兔狲", "谁能拒绝一只戴着派对帽的小猫咪", "水豚被大鸟"], + "其他(掠食视角/整蛊)": ["当北极熊在碎冰区发起冲锋", "大自然的", "雪原上的三方博弈"], +} + +def cat_of(title): + for c, keys in CAT.items(): + if any(k in title for k in keys): + return c + return "未分类" + +df["题材"] = df["标题"].apply(cat_of) +df["点击转化率"] = (df["阅读量"] / df["推荐量"]).round(3) +df["点赞率%"] = (df["点赞量"] / df["阅读量"].clip(lower=1) * 100).round(2) + +g = df.groupby("题材").agg( + 条数=("标题", "count"), + 总阅读=("阅读量", "sum"), + 平均阅读=("阅读量", "mean"), + 最好成绩=("阅读量", "max"), + 总推荐=("推荐量", "sum"), + 点击转化率=("点击转化率", "mean"), + 总点赞=("点赞量", "sum"), + 总评论=("评论量", "sum"), +).round(1).sort_values("总阅读", ascending=False) + +print("=" * 88) +print(g.to_string()) +print("=" * 88) + +top5 = df.nlargest(5, "阅读量")[["标题", "发布时间", "阅读量", "推荐量", "点赞量", "题材"]] +print("\nTOP5 爆款:") +print(top5.to_string(index=False)) + +bottom5 = df.nsmallest(5, "阅读量")[["标题", "发布时间", "阅读量", "推荐量", "题材"]] +print("\nBOTTOM5 扑街:") +print(bottom5.to_string(index=False)) + +# 违规词扫描(文档明令禁止) +banned = ["实拍", "抓拍", "监控拍", "彻底绝望", "陷入绝望", "最高境界"] +hits = df[df["标题"].str.contains("|".join(banned))][["标题", "阅读量"]] +print("\n违规词命中(文档红线,需改标题):") +print(hits.to_string(index=False) if len(hits) else "无") + +# 输出归因表 Excel +out = r"F:\AI\Obsidian Home\百家\单篇数据归因分析.xlsx" +with pd.ExcelWriter(out, engine="xlsxwriter") as w: + df.to_excel(w, sheet_name="逐条明细", index=False) + g.reset_index().to_excel(w, sheet_name="题材汇总", index=False) + top5.to_excel(w, sheet_name="TOP5爆款", index=False) +print(f"\nsaved: {out}") diff --git a/百家/read_baijiahao_xlsx.py b/百家/read_baijiahao_xlsx.py new file mode 100644 index 0000000..9052592 --- /dev/null +++ b/百家/read_baijiahao_xlsx.py @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- +# 读取百家号后台导出的《单篇数据.xlsx》:打印所有 sheet、表头与数据行 +import sys +import openpyxl + +sys.stdout.reconfigure(encoding="utf-8") +path = r"E:\Download\单篇数据.xlsx" + +wb = openpyxl.load_workbook(path, data_only=True, read_only=True) +print(f"file: {path}") +print(f"sheets: {wb.sheetnames}") + +for ws in wb.worksheets: + print(f"\n=== SHEET: {ws.title} dims={ws.max_row} rows x {ws.max_column} cols ===") + empty_streak = 0 + for i, row in enumerate(ws.iter_rows(values_only=True), 1): + vals = ["" if v is None else str(v).replace("\n", "\\n") for v in row] + if not any(vals): + empty_streak += 1 + if empty_streak > 3: + continue + else: + empty_streak = 0 + print(f"[{i}] " + " | ".join(vals)) + if i >= 80: + print("...(over 80 rows, truncated for inspection)") + break +wb.close()