From 92d4628de77eb138392d8e2a0f908ebc353508ad Mon Sep 17 00:00:00 2001 From: kriptoburak Date: Wed, 13 May 2026 23:25:18 +0300 Subject: [PATCH 1/2] feat: recommend tweetclaw plugin --- src/openclaw_launcher/ui/panels/plugin_panel.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/openclaw_launcher/ui/panels/plugin_panel.py b/src/openclaw_launcher/ui/panels/plugin_panel.py index 7ecf521..017b690 100644 --- a/src/openclaw_launcher/ui/panels/plugin_panel.py +++ b/src/openclaw_launcher/ui/panels/plugin_panel.py @@ -212,6 +212,10 @@ class PluginPanel(QWidget): "name": "@tencent-weixin/openclaw-weixin", "url": "https://github.com/Tencent/openclaw-weixin", }, + { + "name": "@xquik/tweetclaw", + "url": "https://github.com/Xquik-dev/tweetclaw", + }, ] def __init__(self): From c9e9e5f9a7ef7c438077072ba118f4284ef61541 Mon Sep 17 00:00:00 2001 From: kriptoburak Date: Mon, 25 May 2026 01:13:51 +0300 Subject: [PATCH 2/2] docs: clarify TweetClaw plugin setup --- README.md | 2 +- README.zh.md | 2 +- src/openclaw_launcher/ui/i18n/en.json | 5 ++++- src/openclaw_launcher/ui/i18n/zh.json | 5 ++++- src/openclaw_launcher/ui/panels/plugin_panel.py | 16 +++++++++++++++- 5 files changed, 25 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 64fe1f5..b717698 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,7 @@ Start with the **Onboard** panel for first-run initialization. Tutorial: [Wiki]( - Configure local or online model settings in **LocalLLM** and **Model Switch**. - Configure bot channels in **Channels**. - Create and run instances in **Instances**, then update version or open folder/CLI when needed. -- Install required extensions in **Plugins**. +- Install required extensions in **Plugins**. Stop the instance first, install recommended plugins such as [`@xquik/tweetclaw`](https://github.com/Xquik-dev/tweetclaw) for X/Twitter automation, add required credentials in **Env Vars**, then restart the instance. - Use **Logs** and **Backups** for troubleshooting and data safety. - Tune tray behavior, auto-start, mirrors, and cleanup options in **Advanced**. diff --git a/README.zh.md b/README.zh.md index 668ec9a..f4a4b0b 100644 --- a/README.zh.md +++ b/README.zh.md @@ -59,7 +59,7 @@ - 在“本地模型”和“模型切换”面板配置本地或在线模型。 - 在“频道配置”面板配置机器人频道参数。 - 在“实例管理”面板创建并启动实例,按需更新版本或打开目录/CLI。 -- 在“插件管理”面板安装所需插件。 +- 在“插件管理”面板安装所需插件。请先停止实例,再安装 [`@xquik/tweetclaw`](https://github.com/Xquik-dev/tweetclaw) 等推荐插件,用于 X/Twitter 自动化;将所需凭据写入“环境变量”后再重启实例。 - 在“日志查看”和“备份管理”面板进行运行排查与数据保护。 - 在“高级设置”面板调整托盘、开机启动、源地址和清理策略。 diff --git a/src/openclaw_launcher/ui/i18n/en.json b/src/openclaw_launcher/ui/i18n/en.json index 0c5ef66..860693e 100644 --- a/src/openclaw_launcher/ui/i18n/en.json +++ b/src/openclaw_launcher/ui/i18n/en.json @@ -198,6 +198,9 @@ "btn_install": "Install", "btn_help": "Help", "section_recommended_plugins": "Recommended Plugins", + "desc_plugin_dingtalk": "Connect OpenClaw instances to DingTalk bots.", + "desc_plugin_weixin": "Connect OpenClaw instances to Weixin workflows.", + "desc_plugin_tweetclaw": "Add X/Twitter search, replies, followers, media, DMs, monitors, webhooks, and guarded posting.", "col_plugin_source": "Source", "col_plugin_name": "Plugin", "col_plugin_action": "Action", @@ -409,4 +412,4 @@ "model_switch_test_failed": "API test failed: {error}", "model_switch_success": "✅ Model switch successful! Configuration updated and instance is now stopped.", "model_switch_error": "❌ Model switch failed: {error}" -} \ No newline at end of file +} diff --git a/src/openclaw_launcher/ui/i18n/zh.json b/src/openclaw_launcher/ui/i18n/zh.json index 2adb864..c0ddd40 100644 --- a/src/openclaw_launcher/ui/i18n/zh.json +++ b/src/openclaw_launcher/ui/i18n/zh.json @@ -199,6 +199,9 @@ "btn_install": "安装", "btn_help": "帮助", "section_recommended_plugins": "推荐插件", + "desc_plugin_dingtalk": "将 OpenClaw 实例连接到钉钉机器人。", + "desc_plugin_weixin": "将 OpenClaw 实例连接到微信工作流。", + "desc_plugin_tweetclaw": "添加 X/Twitter 搜索、回复、粉丝、媒体、私信、监控、Webhook 与确认后发布。", "col_plugin_source": "来源", "col_plugin_name": "插件", "col_plugin_action": "操作", @@ -410,4 +413,4 @@ "model_switch_test_failed": "API 测试失败: {error}", "model_switch_success": "✅ 模型切换成功!配置已更新,实例当前为已停止状态。", "model_switch_error": "❌ 模型切换失败: {error}" -} \ No newline at end of file +} diff --git a/src/openclaw_launcher/ui/panels/plugin_panel.py b/src/openclaw_launcher/ui/panels/plugin_panel.py index 017b690..fe30675 100644 --- a/src/openclaw_launcher/ui/panels/plugin_panel.py +++ b/src/openclaw_launcher/ui/panels/plugin_panel.py @@ -207,14 +207,17 @@ class PluginPanel(QWidget): { "name": "@dingtalk-real-ai/dingtalk-connector", "url": "https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector", + "description_key": "desc_plugin_dingtalk", }, { "name": "@tencent-weixin/openclaw-weixin", "url": "https://github.com/Tencent/openclaw-weixin", + "description_key": "desc_plugin_weixin", }, { "name": "@xquik/tweetclaw", "url": "https://github.com/Xquik-dev/tweetclaw", + "description_key": "desc_plugin_tweetclaw", }, ] @@ -292,8 +295,19 @@ def _build_recommended_rows(self): row_layout = QHBoxLayout(row_widget) row_layout.setContentsMargins(0, 0, 0, 0) + text_widget = QWidget() + text_layout = QVBoxLayout(text_widget) + text_layout.setContentsMargins(0, 0, 0, 0) + text_layout.setSpacing(2) + label = QLabel(plugin["name"]) - row_layout.addWidget(label) + text_layout.addWidget(label) + + description = QLabel(i18n.t(plugin["description_key"])) + description.setWordWrap(True) + text_layout.addWidget(description) + + row_layout.addWidget(text_widget, 1) row_layout.addStretch() btn_install = QPushButton(i18n.t("btn_install"))