{"version":"1.0.0","project":"datamerge01","updated":"2026-07-24","agent_entry":{"mcp_server":"datamerge-portal","manifest_path":"portal/manifest.json","knowhow":"cursor_project_rules/","skills_dir":".cursor/skills/"},"web_apps":[{"id":"portal-hub","name":"Datamerge Portal","description":"Unified H5 hub — this page. Lists all apps, scripts, skills, and data paths.","type":"hub","url":"http://localhost:8090/","port":8090,"entry":"portal/server.py","start":"python3 portal/server.py"},{"id":"ppt-extractor","name":"PPT Extractor (Route A)","description":"LibreOffice + Poppler slide extraction, JSON metadata, combined HTML report, ZIP download.","type":"fastapi","url":"http://localhost:8000/","port":8000,"path":"ppt_extractor_webapp/","entry":"ppt_extractor_webapp/app/main.py","start":"cd ppt_extractor_webapp && .venv/bin/uvicorn app.main:app --host 127.0.0.1 --port 8000","env":["PPTEX_ALLOWED_ROOT","PPTEX_DATA_DIR","PPTEX_AUTH_PASSWORD"],"routes":["/","/app","/app/extract","/api/jobs/from-folder","/api/jobs/from-zip"],"knowhow":"cursor_project_rules/README.md"},{"id":"card-manager","name":"Card Manager Pro","description":"Static H5 business-card batch editor (CN/EN, PDF/PNG export).","type":"static","url":"http://localhost:8090/apps/card-manager/","path":"card-manager/","entry":"card-manager/index.html","note":"Also at card-manager-export/ (duplicate export copy; not deleted)."},{"id":"pdf-destructure","name":"PDF 无损解构监控","description":"逐页 Docling/OCR 提取 + 内容地图；实时进度、日志、任务启动。","type":"static","url":"http://localhost:8090/apps/pdf-destructure/","map_url":"http://localhost:8090/apps/pdf-destructure/map.html","path":"portal/apps/pdf-destructure/","entry":"portal/apps/pdf-destructure/index.html","api":["/api/pdf-destructure/jobs","/api/pdf-destructure/start"],"workflow":"2process/pdf_destructure/","start":"python -m 2process.pdf_destructure.run_workflow --pdf <path>"},{"id":"image-ocr","name":"Image OCR Review","description":"图片/批量图片上传，自动检测 OCR 区域，按可信度排序提示人工核验。","type":"static","url":"/apps/image-ocr/","path":"portal/apps/image-ocr/","entry":"portal/apps/image-ocr/index.html","api":["/api/pdf-destructure/upload","/api/pdf-destructure/upload/batch","/api/pdf-destructure/jobs/{job_id}/pages/1/layout"],"workflow":"2process/pdf_destructure/"},{"id":"md-preview","name":"Branded Markdown & Table Conversion","description":"高性能 Markdown/文本预览、品牌化 DOCX/Excel/HTML/MD/TXT/ZIP 转换、表格检测与 agent 可发现 API。","type":"static","url":"http://localhost:8090/apps/md-preview/","path":"portal/apps/md-preview/","entry":"portal/apps/md-preview/index.html","api":["/api/md-preview/config","/api/md-preview/convert","/api/conversion/capabilities","/api/conversion/templates","/api/conversion/validate","/api/conversion/convert","/api/conversion/workflows","/api/conversion/judge","/api/conversion/agent-run","/api/conversion/docforge/inspect","/api/conversion/docforge/run","/api/conversion/jobs"],"agent_guidance":{"quick_mode":"Use /api/conversion/convert for deterministic DOCX/XLSX/HTML/MD/TXT/ZIP when Markdown or tables are clean.","assisted_mode":"Use /api/conversion/judge; if warnings show unclear structure, the agent may plan repair/split work before deterministic conversion.","agent_mode":"Use /api/conversion/workflows to discover available workflows, /api/conversion/judge to choose one, and /api/conversion/agent-run to execute safe deterministic outputs.","verified_docx":"Use /api/conversion/docforge/inspect for immutable block and IR preflight, then /api/conversion/docforge/run for fail-closed DOCX delivery with manifest, decision log, and verification report.","brands":["default","table-ai","kind"],"storage":"Local response download now; deployment target is COS/CDN for durable generated files."}},{"id":"webpage-to-social-images","name":"Webpage H5 to Social Images","description":"将任意公网 H5/网页转为经过 QA 的完整长图、微信公众号连续切图和小红书分卷图片包。","type":"fastapi-worker","url":"https://datame.opcglobal.cn/api/web-capture/capabilities","path":"portal/web_capture.py","entry":"portal/capture_worker.py","api":["/api/web-capture/capabilities","/api/web-capture/jobs","/api/web-capture/jobs/{job_id}","/api/web-capture/jobs/{job_id}/retry","/api/web-capture/jobs/{job_id}/artifacts/{path}"],"defaults":{"viewport":"390x844 CSS px at DPR 3","output_width":1080,"slice_height":1440,"xiaohongshu_max_images_per_volume":18},"deployment":{"domain":"datame.opcglobal.cn","region":"ap-nanjing","storage":"private COS with 24-hour signed downloads"}},{"id":"docling-gui","name":"Docling Batch (desktop)","description":"Tk GUI or CLI: PPTX → Markdown via Docling.","type":"desktop","entry":"docling_batch_gui.py","start":"python3 docling_batch_gui.py --convert-all","default_in":"2process/ppt/","default_out":"2process/docling_out/"},{"id":"workflow-blueprint","name":"工作流蓝图","description":"PDF 解构流水线可视化 + Prompt/Taxonomy/Agent 系统文档","type":"static","url":"http://localhost:8090/apps/workflows/","path":"portal/apps/workflows/","entry":"portal/apps/workflows/index.html"},{"id":"legacy-next","name":"Next.js blog (legacy)","description":"Archived blog app under old/my-app/.","type":"nextjs","url":"http://localhost:3000/","port":3000,"path":"old/my-app/","status":"legacy"}],"skills":[{"id":"paper-acquisition","name":"paper-acquisition","path":".cursor/skills/paper-acquisition/SKILL.md","description":"Agent entry for PDFs and AOA collection; routes to manifest and know-how.","triggers":["paper","PDF","DOI","abstract","literature"]},{"id":"paper-fetch","name":"paper-fetch","path":".cursor/skills/paper-fetch/SKILL.md","script":".cursor/skills/paper-fetch/scripts/fetch.py","description":"Download PDF by DOI/title; OA chain + Sci-Hub fallback.","triggers":["fetch","download","Sci-Hub","Unpaywall"]},{"id":"webpage-to-social-images","name":"webpage-to-social-images","path":".cursor/skills/webpage-to-social-images/SKILL.md","script":".cursor/skills/webpage-to-social-images/scripts/capture.py","description":"Preview, capture, validate, slice, name, upload, and return verified social-image packages for public H5 pages.","triggers":["网页转长图","H5 截图","公众号切图","小红书长图","URL 转图片"]}],"optional_skills":[{"id":"paper-lookup","source":"K-Dense scientific-skills/paper-lookup","description":"Search PubMed/Crossref/OpenAlex for DOI — install per paper-acquisition-knowhow.md"},{"id":"semanticscholar-skill","source":"Agents365-ai/semanticscholar-skill","description":"Metadata search before fetch"}],"mcp":{"project_server":{"id":"datamerge-portal","config":".cursor/mcp.json","server_script":"portal/mcp_server.py","tools":["get_manifest","list_capabilities","paper_collection_status","get_skill","get_knowhow","pdf_destructure_status","web_capture_capabilities","web_capture_job_status","web_capture_submit","web_capture_retry"]},"workspace_servers":[{"id":"user-context7","use":"Library/API documentation (Crossref, FastAPI, Docling syntax) — not PDF download"},{"id":"cursor-ide-browser","use":"Paywalled publisher pages when user is logged in"},{"id":"cursor-app-control","use":"Cursor IDE workspace control"}]},"scripts":{"docling":[{"id":"pdf-destructure","path":"2process/pdf_destructure/run_workflow.py","description":"PDF 逐页解构 → 内容地图（Docling+OCR+VLM）"},{"id":"pdf-destructure-sh","path":"2process/pdf_destructure/run_pdf_destructure.sh","description":"Shell wrapper for pdf_destructure workflow"},{"id":"docling-batch","path":"docling_batch_gui.py","description":"Batch convert PPTX → MD"},{"id":"merge-docling-md","path":"merge_docling_markdown.py","description":"Merge docling_out/*.md → 全部文档合并.md"}],"ppt":[{"id":"ppt-to-excel","path":"ppt_to_excel.py","description":"PPTX → Excel via python-pptx"}],"papers":[{"id":"paper-run-download","path":"papers/aoa-ionophore/run_download.py","description":"OA/title batch download"},{"id":"paper-scihub","path":"papers/aoa-ionophore/download_scihub.py","description":"Paywalled DOIs via Sci-Hub (Referer fix)"},{"id":"paper-fetch-missing","path":"papers/aoa-ionophore/fetch_missing_fulltext.py","description":"Abstracts + PDF retry for gaps (refs 6, 18, 31)"},{"id":"paper-rename","path":"papers/aoa-ionophore/rename_pdfs_inplace.py","description":"Prefix PDFs 01_…32_"},{"id":"paper-number","path":"papers/aoa-ionophore/number_references.py","description":"Copy to pdfs/numbered/RefNN_…"}],"dev":[{"id":"dev-up","path":"scripts/dev-up.sh","description":"Start portal :8090 + PPT extractor :8000"}]},"alimail":{"root":"alimail/","collections":[{"id":"lantu","path":"alimail/lantu/","description":"岚图 (Voyah) related mail — raw .eml, attachments, index.jsonl","download_script":"alimail/download_lantu.py"}]},"data_stores":[{"id":"ppt-jobs","type":"filesystem","path":"ppt_extractor_webapp/data/jobs/","description":"Per-job extraction output (in-memory job store; JSON artifacts per job)"},{"id":"pdf-destructure-jobs","type":"filesystem","path":"2process/pdf_destructure/jobs/","description":"PDF destructure job output (pages, content_map, cache)"},{"id":"docling-output","type":"filesystem","path":"2process/docling_out/","description":"Docling Markdown output"},{"id":"docling-source","type":"filesystem","path":"2process/ppt/","description":"Source PPTX for Docling batch"},{"id":"aoa-papers","type":"filesystem","path":"papers/aoa-ionophore/pdfs/","description":"AOA ionophore reference PDFs/abstracts (01_–32_)","index":"papers/aoa-ionophore/REFERENCE_INDEX.md"},{"id":"casino-dataset","type":"csv","path":"data-set/","description":"Macau casino normalized CSV/XLSX (not linked to PPT/papers pipeline)"},{"id":"web-capture-jobs","type":"sqlite+cos","path":"/data/web-capture/jobs.sqlite3","description":"Capture job state locally; verified artifacts in private COS under web-captures/YYYY/MM/DD/{job_id}/"}],"knowhow":[{"id":"project-rules","path":"cursor_project_rules/README.md","topic":"PPT extractor Route A contract"},{"id":"paper-acquisition","path":"cursor_project_rules/paper-acquisition-knowhow.md","topic":"Paper download skills, Sci-Hub, MCP usage"},{"id":"portal","path":"cursor_project_rules/portal.md","topic":"This portal — agents and humans"},{"id":"pdf-destructure","path":"2process/pdf_destructure/SYSTEM.md","topic":"PDF destructure workflow — architecture, prompts, reuse"},{"id":"implementation-plan","path":"implementation-plan.mdc","topic":"Feature implementation log"}],"live":{"paper_collection":{"collection":"papers/aoa-ionophore","pdf_dir":"papers/aoa-ionophore/pdfs","summary":{"pdf":0,"abstract_only":0,"missing":32,"total":32},"references":[{"ref":1,"status":"missing","file":null,"size_bytes":0},{"ref":2,"status":"missing","file":null,"size_bytes":0},{"ref":3,"status":"missing","file":null,"size_bytes":0},{"ref":4,"status":"missing","file":null,"size_bytes":0},{"ref":5,"status":"missing","file":null,"size_bytes":0},{"ref":6,"status":"missing","file":null,"size_bytes":0},{"ref":7,"status":"missing","file":null,"size_bytes":0},{"ref":8,"status":"missing","file":null,"size_bytes":0},{"ref":9,"status":"missing","file":null,"size_bytes":0},{"ref":10,"status":"missing","file":null,"size_bytes":0},{"ref":11,"status":"missing","file":null,"size_bytes":0},{"ref":12,"status":"missing","file":null,"size_bytes":0},{"ref":13,"status":"missing","file":null,"size_bytes":0},{"ref":14,"status":"missing","file":null,"size_bytes":0},{"ref":15,"status":"missing","file":null,"size_bytes":0},{"ref":16,"status":"missing","file":null,"size_bytes":0},{"ref":17,"status":"missing","file":null,"size_bytes":0},{"ref":18,"status":"missing","file":null,"size_bytes":0},{"ref":19,"status":"missing","file":null,"size_bytes":0},{"ref":20,"status":"missing","file":null,"size_bytes":0},{"ref":21,"status":"missing","file":null,"size_bytes":0},{"ref":22,"status":"missing","file":null,"size_bytes":0},{"ref":23,"status":"missing","file":null,"size_bytes":0},{"ref":24,"status":"missing","file":null,"size_bytes":0},{"ref":25,"status":"missing","file":null,"size_bytes":0},{"ref":26,"status":"missing","file":null,"size_bytes":0},{"ref":27,"status":"missing","file":null,"size_bytes":0},{"ref":28,"status":"missing","file":null,"size_bytes":0},{"ref":29,"status":"missing","file":null,"size_bytes":0},{"ref":30,"status":"missing","file":null,"size_bytes":0},{"ref":31,"status":"missing","file":null,"size_bytes":0},{"ref":32,"status":"missing","file":null,"size_bytes":0}]},"pdf_destructure":{"jobs_root":"2process/pdf_destructure/jobs","db":{"db_path":"/app/2process/pdf_destructure/jobs/_registry/jobs.sqlite","jobs":0,"pages":0,"events":0,"complete":0},"summary":{"total":0,"running":0,"complete":0},"jobs":[]}}}