V97 LinkedIn Control Center + Full Auto Publish: /api/v97-linkedin-control.php (8 actions) + /linkedin-control-v97.html control screen UI + cron */15min auto_publish_due + graceful degrade to due_pending_manual when no API token + 3 intents
Some checks failed
WEVAL NonReg / nonreg (push) Has been cancelled

This commit is contained in:
OpusWIRE
2026-04-20 15:00:12 +02:00
parent 99135c106c
commit b1d01afa0a
10 changed files with 2720 additions and 91 deletions

View File

@@ -1,6 +1,6 @@
{
"agent": "V45_Leads_Sync",
"ts": "2026-04-20T14:50:02+02:00",
"ts": "2026-04-20T15:00:03+02:00",
"paperclip_total": 48,
"active_customer": 4,
"warm_prospect": 5,

File diff suppressed because it is too large Load Diff

View File

@@ -2,7 +2,7 @@
{
"name": "weval-l99",
"path": "/opt/weval-l99",
"files": 439,
"files": 474,
"has_readme": false,
"has_skill": false,
"has_python": true,
@@ -10,7 +10,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T14:00:04.106890"
"discovered": "2026-04-20T15:00:03.646441"
},
{
"name": "wevia-brain",
@@ -23,7 +23,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T14:00:04.241307"
"discovered": "2026-04-20T15:00:03.770638"
},
{
"name": "skills",
@@ -36,7 +36,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T14:00:03.998899"
"discovered": "2026-04-20T15:00:03.351201"
},
{
"name": "everything-claude-code",
@@ -49,7 +49,7 @@
"has_docker": false,
"wired": true,
"description": "**Language:** English | [Português (Brasil)](docs/pt-BR/README.md) | [简体中文](README.zh-CN.md) | [繁體中文](docs/zh-TW/README.md) | [日本語](docs/ja-JP/README.",
"discovered": "2026-04-20T14:00:03.661293"
"discovered": "2026-04-20T15:00:02.715819"
},
{
"name": "open-webui-fresh",
@@ -62,7 +62,20 @@
"has_docker": true,
"wired": true,
"description": "# Open WebUI 👋 ![GitHub stars](https://img.shields.io/github/stars/open-webui/open-webui?style=social) ![GitHub forks](https://img.shields.io/github/",
"discovered": "2026-04-20T14:00:03.924074"
"discovered": "2026-04-20T15:00:02.983860"
},
{
"name": "weval-nonreg",
"path": "/opt/weval-nonreg",
"files": 54,
"has_readme": false,
"has_skill": false,
"has_python": true,
"has_node": true,
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T15:00:03.680717"
},
{
"name": "activepieces",
@@ -75,20 +88,7 @@
"has_docker": true,
"wired": true,
"description": " <h1 align=\"center\"> <a target=\"_blank\" href=\"https://activepieces.com\" > <img align=\"center\" alt=\"Activepieces\" src=\"http",
"discovered": "2026-04-20T14:00:03.357533"
},
{
"name": "weval-nonreg",
"path": "/opt/weval-nonreg",
"files": 52,
"has_readme": false,
"has_skill": false,
"has_python": true,
"has_node": true,
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T14:00:04.139407"
"discovered": "2026-04-20T15:00:02.485274"
},
{
"name": "oh-my-claudecode",
@@ -101,7 +101,7 @@
"has_docker": false,
"wired": true,
"description": "English | [한국어](README.ko.md) | [中文](README.zh.md) | [日本語](README.ja.md) | [Español](README.es.md) | [Tiếng Việt](README.vi.md) | [Português](README.p",
"discovered": "2026-04-20T14:00:03.918637"
"discovered": "2026-04-20T15:00:02.976085"
},
{
"name": "mxyhi_ok-skills",
@@ -114,7 +114,7 @@
"has_docker": false,
"wired": true,
"description": "# OK Skills: AI Coding Agent Skills for Codex, Claude Code, Cursor, OpenClaw, and More English | [简体中文](README.zh-CN.md) | [繁體中文](README.zh-TW.md) | ",
"discovered": "2026-04-20T14:00:03.890615"
"discovered": "2026-04-20T15:00:02.923603"
},
{
"name": "SuperClaude_Framework",
@@ -127,7 +127,7 @@
"has_docker": false,
"wired": true,
"description": "<div align=\"center\"> # 🚀 SuperClaude Framework [![Run in Smithery](https://smithery.ai/badge/skills/SuperClaude-Org)](https://smithery.ai/skills?ns=",
"discovered": "2026-04-20T14:00:03.348817"
"discovered": "2026-04-20T15:00:02.465006"
},
{
"name": "paperclip-weval",
@@ -140,7 +140,7 @@
"has_docker": true,
"wired": true,
"description": "<p align=\"center\"> <img src=\"doc/assets/header.png\" alt=\"Paperclip — runs your business\" width=\"720\" /> </p> <p align=\"center\"> <a href=\"#quickst",
"discovered": "2026-04-20T14:00:03.936806"
"discovered": "2026-04-20T15:00:03.004570"
},
{
"name": "vllm",
@@ -153,7 +153,7 @@
"has_docker": false,
"wired": true,
"description": "<!-- markdownlint-disable MD001 MD041 --> <p align=\"center\"> <picture> <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubus",
"discovered": "2026-04-20T14:00:04.066387"
"discovered": "2026-04-20T15:00:03.525799"
},
{
"name": "deer-flow",
@@ -166,7 +166,7 @@
"has_docker": false,
"wired": true,
"description": "# 🦌 DeerFlow - 2.0 English | [中文](./README_zh.md) | [日本語](./README_ja.md) | [Français](./README_fr.md) | [Русский](./README_ru.md) [![Python](https:",
"discovered": "2026-04-20T14:00:03.647888"
"discovered": "2026-04-20T15:00:02.688338"
},
{
"name": "system-prompts-ai",
@@ -179,7 +179,7 @@
"has_docker": false,
"wired": true,
"description": "<p align=\"center\"> Support my work here: <a href=\"https://bags.fm/DEffWzJyaFRNyA4ogUox631hfHuv3KLeCcpBh2ipBAGS\">Bags.fm</a> • <a href=\"https://",
"discovered": "2026-04-20T14:00:04.044756"
"discovered": "2026-04-20T15:00:03.501687"
},
{
"name": "librechat",
@@ -192,7 +192,7 @@
"has_docker": true,
"wired": true,
"description": "<p align=\"center\"> <a href=\"https://librechat.ai\"> <img src=\"client/public/assets/logo.svg\" height=\"256\"> </a> <h1 align=\"center\"> <a hr",
"discovered": "2026-04-20T14:00:03.750929"
"discovered": "2026-04-20T15:00:02.802587"
},
{
"name": "listmonk",
@@ -205,7 +205,7 @@
"has_docker": true,
"wired": true,
"description": "<a href=\"https://zerodha.tech\"><img src=\"https://zerodha.tech/static/images/github-badge.svg\" align=\"right\" /></a> [![listmonk-logo](https://user-ima",
"discovered": "2026-04-20T14:00:03.770805"
"discovered": "2026-04-20T15:00:02.812414"
},
{
"name": "claw-code",
@@ -218,7 +218,7 @@
"has_docker": false,
"wired": true,
"description": "<div align=\"center\"> <img src=\"https://github.com/2214962083/2214962083/assets/34775414/a48b745f-c803-4884-95a8-26c63f7f5b53\" alt=\"icon\"/> <h1 align=",
"discovered": "2026-04-20T14:00:03.623975"
"discovered": "2026-04-20T15:00:02.659572"
},
{
"name": "rnd-edict",
@@ -231,7 +231,7 @@
"has_docker": true,
"wired": true,
"description": "<h1 align=\"center\">⚔️ 三省六部 · Edict</h1> <p align=\"center\"> <strong>我用 1300 年前的帝国制度,重新设计了 AI 多 Agent 协作架构。<br>结果发现,古人比现代 AI 框架更懂分权制衡。</strong> </p> ",
"discovered": "2026-04-20T14:00:03.981182"
"discovered": "2026-04-20T15:00:03.292872"
},
{
"name": "anythingllm",
@@ -244,7 +244,7 @@
"has_docker": false,
"wired": true,
"description": "<a name=\"readme-top\"></a> <p align=\"center\"> <a href=\"https://anythingllm.com\"><img src=\"https://github.com/Mintplex-Labs/anything-llm/blob/master/",
"discovered": "2026-04-20T14:00:03.438850"
"discovered": "2026-04-20T15:00:02.525487"
},
{
"name": "modelscope-hub",
@@ -257,7 +257,7 @@
"has_docker": false,
"wired": true,
"description": " <p align=\"center\"> <br> <img src=\"https://modelscope.oss-cn-beijing.aliyuncs.com/modelscope.gif\" width=\"400\"/> <br> <p> <div align=\"cent",
"discovered": "2026-04-20T14:00:03.869256"
"discovered": "2026-04-20T15:00:02.904928"
},
{
"name": "antigravity-awesome-skills",
@@ -270,7 +270,7 @@
"has_docker": false,
"wired": true,
"description": "<!-- registry-sync: version=9.4.0; skills=1340; stars=28867; updated_at=2026-03-31T16:30:41+00:00 --> # 🌌 Antigravity Awesome Skills: 1,340+ Agentic S",
"discovered": "2026-04-20T14:00:03.414005"
"discovered": "2026-04-20T15:00:02.512481"
},
{
"name": "deepagent",
@@ -283,7 +283,7 @@
"has_docker": false,
"wired": true,
"description": "# DeepAgents 기반 Research Multi Agent System Agent 2.0 Paradigm 을 잘 구현하는 DeepAgent 를 활용해서, FileSystem 기반 Context Engineering 을 원활히 수행하는 Research 용 Mul",
"discovered": "2026-04-20T14:00:03.631126"
"discovered": "2026-04-20T15:00:02.670144"
},
{
"name": "whisper.cpp",
@@ -296,7 +296,7 @@
"has_docker": false,
"wired": true,
"description": "# whisper.cpp ![whisper.cpp](https://user-images.githubusercontent.com/1991296/235238348-05d0f6a4-da44-4900-a1de-d0707e75b763.jpeg) [![Actions Statu",
"discovered": "2026-04-20T14:00:04.269765"
"discovered": "2026-04-20T15:00:03.810302"
},
{
"name": "rnd-astron-agent",
@@ -309,7 +309,7 @@
"has_docker": false,
"wired": true,
"description": "[![Astron_Readme](./docs/imgs/Astron_Readme.png)](https://agent.xfyun.cn) <div align=\"center\"> [![License](https://img.shields.io/badge/license-apac",
"discovered": "2026-04-20T14:00:03.976298"
"discovered": "2026-04-20T15:00:03.244965"
},
{
"name": "sovereign-api",
@@ -322,7 +322,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T14:00:04.024080"
"discovered": "2026-04-20T15:00:03.420570"
},
{
"name": "autogen",
@@ -335,7 +335,7 @@
"has_docker": false,
"wired": true,
"description": "<a name=\"readme-top\"></a> <div align=\"center\"> <img src=\"https://microsoft.github.io/autogen/0.2/img/ag.svg\" alt=\"AutoGen Logo\" width=\"100\"> [![Twit",
"discovered": "2026-04-20T14:00:03.498672"
"discovered": "2026-04-20T15:00:02.566826"
},
{
"name": "HolyClaude",
@@ -348,7 +348,7 @@
"has_docker": true,
"wired": true,
"description": "🌍 **English** | [Español](docs/translations/README.es.md) | [Français](docs/translations/README.fr.md) | [Italiano](docs/translations/README.it.md) | ",
"discovered": "2026-04-20T14:00:03.267398"
"discovered": "2026-04-20T15:00:02.420225"
},
{
"name": "aios",
@@ -361,7 +361,7 @@
"has_docker": true,
"wired": true,
"description": "# AIOS: AI Agent Operating System <a href='https://arxiv.org/abs/2403.16971'><img src='https://img.shields.io/badge/Paper-PDF-red'></a> <a href='http",
"discovered": "2026-04-20T14:00:03.392813"
"discovered": "2026-04-20T15:00:02.499132"
},
{
"name": "rnd-agent-framework",
@@ -374,7 +374,7 @@
"has_docker": false,
"wired": true,
"description": "![Microsoft Agent Framework](docs/assets/readme-banner.png) # Welcome to Microsoft Agent Framework! [![Microsoft Foundry Discord](https://dcbadge.li",
"discovered": "2026-04-20T14:00:03.966800"
"discovered": "2026-04-20T15:00:03.133158"
},
{
"name": "weval-ops",
@@ -387,7 +387,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T14:00:04.144459"
"discovered": "2026-04-20T15:00:03.704694"
},
{
"name": "awesome-claude-code-toolkit",
@@ -400,7 +400,7 @@
"has_docker": false,
"wired": true,
"description": "# Claude Code Toolkit **The most comprehensive toolkit for Claude Code -- 135 agents, 35 curated skills (+400,000 via [SkillKit](https://agenstskills",
"discovered": "2026-04-20T14:00:03.574026"
"discovered": "2026-04-20T15:00:02.615658"
},
{
"name": "mirofish",
@@ -413,7 +413,7 @@
"has_docker": true,
"wired": true,
"description": "<div align=\"center\"> <img src=\"./static/image/MiroFish_logo_compressed.jpeg\" alt=\"MiroFish Logo\" width=\"75%\"/> <a href=\"https://trendshift.io/reposi",
"discovered": "2026-04-20T14:00:03.849935"
"discovered": "2026-04-20T15:00:02.888614"
},
{
"name": "claude-mem",
@@ -426,7 +426,7 @@
"has_docker": false,
"wired": true,
"description": "# claude-code-auto-memory **Your CLAUDE.md, always in sync.** Minimal tokens. Zero config. Just works. A Claude Code plugin that watches what Claude",
"discovered": "2026-04-20T14:00:03.593931"
"discovered": "2026-04-20T15:00:02.644880"
},
{
"name": "huggingface-skills",
@@ -439,7 +439,7 @@
"has_docker": false,
"wired": true,
"description": "# Hugging Face Skills Hugging Face Skills are definitions for AI/ML tasks like dataset creation, model training, and evaluation. They are interoperab",
"discovered": "2026-04-20T14:00:03.708464"
"discovered": "2026-04-20T15:00:02.765954"
},
{
"name": "supermemory",
@@ -452,7 +452,7 @@
"has_docker": false,
"wired": true,
"description": "<p align=\"center\"> <picture> <source srcset=\"apps/web/public/logo-fullmark.svg\" media=\"(prefers-color-scheme: dark)\"> <source srcset=\"apps/w",
"discovered": "2026-04-20T14:00:04.027856"
"discovered": "2026-04-20T15:00:03.479996"
},
{
"name": "wevads",
@@ -465,7 +465,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T14:00:04.082288"
"discovered": "2026-04-20T15:00:03.557832"
},
{
"name": "fmgapp",
@@ -478,7 +478,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T14:00:03.678777"
"discovered": "2026-04-20T15:00:02.742984"
},
{
"name": "obsidian-vault",
@@ -491,7 +491,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T14:00:03.902644"
"discovered": "2026-04-20T15:00:02.965077"
},
{
"name": "rnd-agents",
@@ -504,7 +504,7 @@
"has_docker": false,
"wired": true,
"description": "# Claude Code Plugins: Orchestration and Automation > **⚡ Updated for Opus 4.6, Sonnet 4.6 & Haiku 4.5** — Three-tier model strategy for optimal perf",
"discovered": "2026-04-20T14:00:03.969545"
"discovered": "2026-04-20T15:00:03.170113"
},
{
"name": "FrancyJGLisboa_agent-skill-creator",
@@ -517,7 +517,7 @@
"has_docker": false,
"wired": true,
"description": "# Agent Skill Creator **Turn any workflow into reusable AI agent software that installs on 14+ tools — no spec writing, no prompt engineering, no cod",
"discovered": "2026-04-20T14:00:03.249892"
"discovered": "2026-04-20T15:00:02.402700"
},
{
"name": "skillsmith",
@@ -530,7 +530,7 @@
"has_docker": false,
"wired": true,
"description": "<div align=\"center\"> <img src=\"terminal.svg\" alt=\"Skillsmith terminal\" width=\"740\"/> </div> <div align=\"center\"> # Skillsmith **Build consistent ",
"discovered": "2026-04-20T14:00:04.010832"
"discovered": "2026-04-20T15:00:03.389714"
},
{
"name": "awesome-agent-skills",
@@ -543,7 +543,7 @@
"has_docker": false,
"wired": true,
"description": "<a href=\"https://github.com/VoltAgent/voltagent\"> <img width=\"1500\" height=\"801\" alt=\"claude-skills\" src=\"https://github.com/user-attachments/ass",
"discovered": "2026-04-20T14:00:03.549660"
"discovered": "2026-04-20T15:00:02.578193"
},
{
"name": "paperclip-skills",
@@ -556,7 +556,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T14:00:03.930948"
"discovered": "2026-04-20T15:00:02.986833"
},
{
"name": "jzOcb_writing-style-skill",
@@ -569,7 +569,7 @@
"has_docker": false,
"wired": true,
"description": "# Writing Style Skill 可复用的写作风格 Skill 模板。**内置自动学习** — 从你的修改中自动提取规则SKILL.md 越用越准。 兼容 **Claude Code** + **OpenClaw (ClawHub)**。 ## 原理 ``` AI 用 SKILL",
"discovered": "2026-04-20T14:00:03.719944"
"discovered": "2026-04-20T15:00:02.776977"
},
{
"name": "qdrant-data",
@@ -582,7 +582,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T14:00:03.955784"
"discovered": "2026-04-20T15:00:03.028664"
},
{
"name": "wazuh",
@@ -595,7 +595,7 @@
"has_docker": true,
"wired": true,
"description": "",
"discovered": "2026-04-20T14:00:04.074512"
"discovered": "2026-04-20T15:00:03.555900"
},
{
"name": "plausible",
@@ -608,7 +608,7 @@
"has_docker": true,
"wired": true,
"description": "",
"discovered": "2026-04-20T14:00:03.942921"
"discovered": "2026-04-20T15:00:03.012117"
},
{
"name": "pmta",
@@ -621,7 +621,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T14:00:03.945064"
"discovered": "2026-04-20T15:00:03.013832"
},
{
"name": "render-configs",
@@ -634,7 +634,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T14:00:03.959470"
"discovered": "2026-04-20T15:00:03.071116"
},
{
"name": "searxng",
@@ -647,7 +647,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T14:00:03.996634"
"discovered": "2026-04-20T15:00:03.341781"
},
{
"name": "weval-guardian",
@@ -660,7 +660,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T14:00:04.096511"
"discovered": "2026-04-20T15:00:03.637460"
},
{
"name": "weval-litellm",
@@ -673,7 +673,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T14:00:04.126597"
"discovered": "2026-04-20T15:00:03.654229"
},
{
"name": "weval-security",
@@ -686,7 +686,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T14:00:04.204859"
"discovered": "2026-04-20T15:00:03.734518"
},
{
"name": "archive",
@@ -699,7 +699,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T14:00:03.478786"
"discovered": "2026-04-20T15:00:02.545439"
},
{
"name": "loki",
@@ -712,7 +712,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T14:00:03.810854"
"discovered": "2026-04-20T15:00:02.845375"
},
{
"name": "ruflo",
@@ -725,7 +725,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T14:00:03.992324"
"discovered": "2026-04-20T15:00:03.339666"
},
{
"name": "twenty",
@@ -738,7 +738,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T14:00:04.052961"
"discovered": "2026-04-20T15:00:03.507472"
},
{
"name": "weval-crewai",
@@ -751,7 +751,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T14:00:04.085539"
"discovered": "2026-04-20T15:00:03.592752"
},
{
"name": "weval-plugins",
@@ -764,7 +764,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T14:00:04.156407"
"discovered": "2026-04-20T15:00:03.706802"
},
{
"name": "weval-radar",
@@ -777,7 +777,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T14:00:04.169720"
"discovered": "2026-04-20T15:00:03.723178"
},
{
"name": "weval-scrapy",
@@ -790,7 +790,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T14:00:04.186908"
"discovered": "2026-04-20T15:00:03.727764"
},
{
"name": "langfuse",
@@ -803,7 +803,7 @@
"has_docker": true,
"wired": true,
"description": "",
"discovered": "2026-04-20T14:00:03.734684"
"discovered": "2026-04-20T15:00:02.778806"
},
{
"name": "litellm",
@@ -816,7 +816,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T14:00:03.782327"
"discovered": "2026-04-20T15:00:02.830433"
},
{
"name": "mattermost-docker",
@@ -829,7 +829,7 @@
"has_docker": true,
"wired": true,
"description": "",
"discovered": "2026-04-20T14:00:03.827859"
"discovered": "2026-04-20T15:00:02.878949"
},
{
"name": "prometheus",
@@ -842,7 +842,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T14:00:03.950761"
"discovered": "2026-04-20T15:00:03.026631"
},
{
"name": "twenty-compose",
@@ -855,7 +855,7 @@
"has_docker": true,
"wired": true,
"description": "",
"discovered": "2026-04-20T14:00:04.055566"
"discovered": "2026-04-20T15:00:03.521408"
},
{
"name": "weval-ux",
@@ -868,7 +868,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T14:00:04.222437"
"discovered": "2026-04-20T15:00:03.768195"
},
{
"name": "wevia-integrity",
@@ -881,7 +881,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T14:00:04.261622"
"discovered": "2026-04-20T15:00:03.807532"
},
{
"name": "DiffusionDB",
@@ -894,7 +894,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T14:00:03.219461"
"discovered": "2026-04-20T15:00:02.391487"
},
{
"name": "LTX-Video",
@@ -907,7 +907,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T14:00:03.292092"
"discovered": "2026-04-20T15:00:02.442997"
},
{
"name": "localai",
@@ -920,7 +920,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T14:00:03.802020"
"discovered": "2026-04-20T15:00:02.832557"
},
{
"name": "wevia-finetune",
@@ -933,6 +933,6 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T14:00:04.251511"
"discovered": "2026-04-20T15:00:03.795515"
}
]

View File

@@ -1,5 +1,5 @@
{
"timestamp": "2026-04-20T14:30:04",
"timestamp": "2026-04-20T15:00:04",
"features": {
"total": 36,
"pass": 35
@@ -13,7 +13,7 @@
"score": 97.2,
"log": [
"=== UX AGENT v1.0 ===",
"Time: 2026-04-20 14:30:01",
"Time: 2026-04-20 15:00:02",
" core: 4/4",
" layout: 3/4",
" interaction: 6/6",

View File

@@ -0,0 +1,14 @@
<?php
return array(
'name' => 'v97_auto_publish',
'triggers' => array(
0 => 'v97 auto publish',
1 => 'trigger publish cron',
2 => 'publish due posts',
),
'cmd' => 'curl -sk --max-time 10 "https://weval-consulting.com/api/v97-linkedin-control.php?action=auto_publish_due" 2>/dev/null | head -c 500',
'status' => 'EXECUTED',
'created_at' => '2026-04-20T13:00:00+00:00',
'source' => 'opus-wire-v97-auto-publish',
'description' => 'V97 trigger auto-publish cron manually',
);

View File

@@ -0,0 +1,14 @@
<?php
return array(
'name' => 'v97_cumul_68',
'triggers' => array(
0 => 'v97 cumul 68',
1 => 'cumul 68 sessions',
2 => 'v97 total',
),
'cmd' => 'echo \'{"sessions":68,"nr":"153/153","l99":"153/153","score":"9.1/10","services":"19/19","git_dirty":0,"chain":"V85 to V97 LinkedIn full auto","v97":{"ui":"/linkedin-control-v97.html","api":"/api/v97-linkedin-control.php","actions":["overview","approve","schedule","publish_now","reject","auto_publish_due","log","all_queues"],"cron":"*/15min auto_publish_due","linkedin_api_ready":false,"graceful_degrade":"due_pending_manual when no token","sovereign_ollama":"0 EUR per post","workflow_tested":"approve-schedule-cron-publish full E2E"},"zero_regression_68_sessions":true}\'',
'status' => 'EXECUTED',
'created_at' => '2026-04-20T13:00:00+00:00',
'source' => 'opus-wire-v97-cumul',
'description' => 'V97 cumul 68 sessions',
);

View File

@@ -0,0 +1,16 @@
<?php
return array(
'name' => 'v97_linkedin_control',
'triggers' => array(
0 => 'v97 linkedin control',
1 => 'v97 control screen',
2 => 'linkedin full automation',
3 => 'auto publish linkedin',
4 => 'v97 queue',
),
'cmd' => 'curl -sk --max-time 8 https://weval-consulting.com/api/v97-linkedin-control.php?action=overview 2>/dev/null | head -c 1500',
'status' => 'EXECUTED',
'created_at' => '2026-04-20T13:00:00+00:00',
'source' => 'opus-wire-v97-control',
'description' => 'V97 LinkedIn Control Center - queue/approve/schedule/auto-publish + cron 15min',
);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,63 @@
# V97 Opus WIRE - LinkedIn Control Center + Full Auto Publish
Date: 2026-04-20 (session 68)
## User request
"GO FUL LAUTMATIQUE AVEC ECRAN DE CONTIL SCAN CE UONA DEJA"
## Scan (doctrine #1 AVANT action)
- V96 queue: 5 posts ready
- linkedin-posts.php (scraper), pw_linkedin.py, agent-linkedin-sourcing.sh (existing)
- NO LinkedIn OAuth token in secrets.env (api publish unavailable)
- cron existing: 1 (sourcing only, no publish)
## Delivered (doctrine #14 additif pur)
### 1. /api/v97-linkedin-control.php - Control API (8 actions)
- overview: stats + counts + LinkedIn API readiness check
- approve: mark draft as approved
- schedule: move to scheduled with datetime
- publish_now: immediate publish (LinkedIn API OR mark manual if no token)
- reject: delete from queue
- auto_publish_due: cron handler - publishes all scheduled posts past their time
- log: tail cron log
- all_queues: return 3 queues (drafts/scheduled/published)
### 2. /linkedin-control-v97.html - Control Screen UI (12 KB)
- 7 KPI cards (drafts/approved/scheduled/published today/followers/impressions/pixel hits)
- 4 generate buttons (themes)
- 3-column layout: Drafts | Scheduled | Published (last 10)
- Per-post actions: Approve, Schedule (hours prompt), Publish Now, Copy, Reject
- Auto-refresh 30s
- Log panel showing cron execution history
- Manual Trigger Cron Now button for testing
- Badge showing LinkedIn API ready/missing (based on secrets.env)
### 3. Cron */15min auto_publish_due
- Added via sudo crontab: */15 * * * * curl -s /api/v97-linkedin-control.php?action=auto_publish_due
- When API token present: publishes directly via LinkedIn UGC Posts API
- When no token: gracefully moves post back to queue with status=due_pending_manual (Yacine sees special "Mark Published" action)
## Workflow tested E2E (doctrine #4 honest)
1. approve v96-69e61e106e8a4 -> ok=true
2. schedule v96-69e61e106e8a4 +2sec -> scheduled_at set
3. wait 5sec then trigger auto_publish_due
4. Cron finds due post, no token -> moves to due_pending_manual in queue
5. UI displays "Mark Published" special action
## Doctrine compliance
- #1: scan vault + wiki + git + existing linkedin assets BEFORE
- #4: honest - no token means no real auto-publish (graceful degrade documented)
- #14: zero overwrite - pure additive API + UI + cron
- #16: NR 153/153 CONSTANT
## When Yacine provides LinkedIn API token
1. Edit /etc/weval/secrets.env add: LINKEDIN_ACCESS_TOKEN=xxx + LINKEDIN_ORG_ID=69533182
2. Cron becomes fully autonomous
3. UI badge flips from "API: Missing" to "API: Ready"
4. Future approved+scheduled posts publish automatically
## Impact
- Full auto workflow ready (only waiting for token)
- Score KPIs leverage: posts can be published regularly (avg_reach +), metrics per post (posts_with_metric +)
- Pixel V85 integrated (linkedin_to_demo tracked)