fix(kb-workflow): 修正路径管理和子技能逻辑

- kb_workflow.py: 修复目录查询命令(--pending, --metadata等)
- bilibili_metadata.py: headless默认True,逻辑保持纯净
- deep_analyzer.py: 添加缺失的pathlib.Path导入
- SKILL.md: 更新步骤说明,明确由workflow提供路径给子技能

fix: 修复Playwright启动失败(NameError)和路径自动获取问题
This commit is contained in:
OpenClaw Agent
2026-02-11 01:35:43 +08:00
parent 4794f3e914
commit 672a811c54
6 changed files with 95 additions and 25 deletions
+9 -6
View File
@@ -67,21 +67,24 @@ python3 /path/to/link-parser.py --url "[URL]"
### 步骤 3: 元数据提取
1. 获取目录路径:
1. 获取元数据目录路径:
```bash
python3 kb_workflow.py --metadata
# 返回: {"path": "/home/admin/work/knowledge-base/metadata"}
```
2. 启动子代理调用对应平台的 metadata 技能:
2. 构建输出文件路径:`${metadata_dir}/${platform}_${id}.meta.json`
3. 启动子代理调用对应平台的 metadata 技能(传入 `--output`):
```bash
# Bilibili
python3 /path/to/bilibili_metadata.py --id "[ID]" --type video
python3 /path/to/bilibili_metadata.py --id "[ID]" --type video --output "${metadata_dir}/bilibili_[ID].meta.json"
# Zhihu
python3 /path/to/zhihu_metadata.py --id "[ID]" --type question
# Zhihu
python3 /path/to/zhihu_metadata.py --id "[ID]" --type question --output "${metadata_dir}/zhihu_[ID].meta.json"
```
3. 解析输出 JSON,提取 filename
4. 解析输出 JSON,提取 filename
### 步骤 4: 内容下载
+30 -4
View File
@@ -258,6 +258,7 @@ def main():
args = parser.parse_args()
base_path = Path(args.base_path) if args.base_path else None
dirs = ensure_directories(base_path)
if args.check and args.url:
result = check_duplicate(base_path, args.url)
@@ -267,11 +268,36 @@ def main():
result = archive_and_git(args.archive_file, base_path)
print(json.dumps(result, ensure_ascii=False, indent=2))
elif args.pending:
print(json.dumps({"path": str(dirs["pending"])}, ensure_ascii=False, indent=2))
elif args.metadata:
print(json.dumps({"path": str(dirs["metadata"])}, ensure_ascii=False, indent=2))
elif args.content:
print(json.dumps({"path": str(dirs["content"])}, ensure_ascii=False, indent=2))
elif args.content_downloads:
print(json.dumps({"path": str(dirs["content_downloads"])}, ensure_ascii=False, indent=2))
elif args.content_subtitles:
print(json.dumps({"path": str(dirs["content_subtitles"])}, ensure_ascii=False, indent=2))
elif args.analyzed:
print(json.dumps({"path": str(dirs["analyzed"])}, ensure_ascii=False, indent=2))
elif args.archive_dir:
path = dirs.get("archive")
if path:
print(json.dumps({"path": str(path)}, ensure_ascii=False, indent=2))
return
print(json.dumps({"path": str(dirs["archive"])}, ensure_ascii=False, indent=2))
elif args.archive_subscriptions:
print(json.dumps({"path": str(dirs["archive_subscriptions"])}, ensure_ascii=False, indent=2))
elif args.extract_platform:
platform = extract_platform(args.extract_platform)
print(json.dumps({"platform": platform}, ensure_ascii=False, indent=2))
elif args.base_path:
print(json.dumps({"path": str(dirs["base"])}, ensure_ascii=False, indent=2))
else:
parser.print_help()