{"id":321,"date":"2026-08-23T10:02:56","date_gmt":"2026-08-23T02:02:56","guid":{"rendered":"https:\/\/ph.listeningo.cn\/index.php\/2026\/08\/23\/2026-08-22\/"},"modified":"2026-08-23T10:02:56","modified_gmt":"2026-08-23T02:02:56","slug":"2026-08-22","status":"publish","type":"post","link":"https:\/\/ph.listeningo.cn\/index.php\/2026\/08\/23\/2026-08-22\/","title":{"rendered":"PH\u70ed\u699c | 2026-08-22"},"content":{"rendered":"<p><!DOCTYPE html><br \/>\n<html lang=\"zh-CN\"><br \/>\n<head><br \/>\n    <meta charset=\"UTF-8\"><br \/>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><br \/>\n    <title>Product Hunt \u6bcf\u65e5\u70ed\u699c 2026-08-22<\/title><\/p>\n<style>\n        \/* --- \u5168\u5c40\u91cd\u7f6e\u4e0e\u5b57\u4f53 --- *\/\n        :root {\n            --ph-orange: #FF6154;\n            --text-main: #21293C;\n            --text-secondary: #4B587C;\n            --bg-ai: #F7F7F9;\n            --border-color: #E6E6E6;\n        }<\/p>\n<p>        body {\n            font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Helvetica, Arial, sans-serif;\n            color: var(--text-main);\n            background-color: #ffffff;\n            line-height: 1.6;\n            margin: 0;\n            padding: 20px;\n        }<\/p>\n<p>        .container {\n            max-width: 800px;\n            margin: 0 auto;\n        }<\/p>\n<p>        \/* --- \u5361\u7247\u6837\u5f0f --- *\/\n        .app-card {\n            border-bottom: 1px solid var(--border-color);\n            padding-bottom: 40px;\n            margin-bottom: 40px;\n        }<\/p>\n<p>        \/* --- 1. \u5934\u90e8\u533a\u57df --- *\/\n        .app-header {\n            display: flex;\n            align-items: flex-start;\n            gap: 16px;\n            margin-bottom: 20px;\n        }<\/p>\n<p>        .rank {\n            font-size: 24px;\n            font-weight: 300;\n            color: #999;\n            min-width: 30px;\n            padding-top: 4px;\n        }<\/p>\n<p>        .title-group {\n            flex: 1;\n        }<\/p>\n<p>        .app-title {\n            font-size: 24px;\n            font-weight: 800;\n            margin: 0 0 4px 0;\n            color: var(--text-main);\n            text-decoration: none;\n            display: inline-block;\n        }<\/p>\n<p>        .app-title:hover {\n            color: var(--ph-orange);\n            text-decoration: underline;\n        }<\/p>\n<p>        .vote-btn {\n            display: flex;\n            flex-direction: column;\n            align-items: center;\n            justify-content: center;\n            border: 1px solid var(--border-color);\n            border-radius: 8px;\n            padding: 8px 12px;\n            background: #fff;\n            min-width: 60px;\n            box-shadow: 0 1px 2px rgba(0,0,0,0.05);\n        }<\/p>\n<p>        .vote-arrow {\n            color: var(--ph-orange);\n            font-size: 14px;\n            margin-bottom: -2px;\n        }<\/p>\n<p>        .vote-count {\n            font-weight: 600;\n            font-size: 14px;\n        }<\/p>\n<p>        \/* --- 2. \u5347\u7ea7\u7248\u5a92\u4f53\u753b\u5eca (\u5173\u952e\u4fee\u6539) --- *\/\n        .media-gallery {\n            display: flex;\n            gap: 16px;\n            overflow-x: auto; \/* \u5141\u8bb8\u6a2a\u5411\u6eda\u52a8 *\/\n            padding-bottom: 16px; \/* \u7559\u51fa\u6eda\u52a8\u7a7a\u95f4 *\/\n            scroll-snap-type: x mandatory; \/* \u6eda\u52a8\u5438\u9644\u6548\u679c *\/\n            -webkit-overflow-scrolling: touch; \/* iOS \u5e73\u6ed1\u6eda\u52a8 *\/\n            margin-bottom: 20px;<\/p>\n<p>            \/* \u9690\u85cf\u9ed8\u8ba4\u6eda\u52a8\u6761\u4f46\u4fdd\u7559\u529f\u80fd (Firefox) *\/\n            scrollbar-width: thin;\n            scrollbar-color: #ddd transparent;\n        }<\/p>\n<p>        \/* Webkit \u6eda\u52a8\u6761\u6837\u5f0f\u4f18\u5316 *\/\n        .media-gallery::-webkit-scrollbar {\n            height: 6px;\n        }\n        .media-gallery::-webkit-scrollbar-track {\n            background: transparent;\n        }\n        .media-gallery::-webkit-scrollbar-thumb {\n            background-color: #eee;\n            border-radius: 10px;\n        }<\/p>\n<p>        .media-item-wrapper {\n            flex: 0 0 auto; \/* \u9632\u6b62\u88ab\u538b\u7f29 *\/\n            width: 80%;     \/* \u79fb\u52a8\u7aef\u9ed8\u8ba4\u9732\u51fa\u4e00\u70b9\u4e0b\u4e00\u5f20\uff0c\u63d0\u793a\u53ef\u6ed1\u52a8 *\/\n            max-width: 500px; \/* \u684c\u9762\u7aef\u6700\u5927\u5bbd\u5ea6 *\/\n            aspect-ratio: 16\/9; \/* \u7edf\u4e00\u6bd4\u4f8b *\/<\/p>\n<p>            position: relative;\n            border-radius: 12px;\n            overflow: hidden;\n            border: 1px solid rgba(0,0,0,0.08);\n            background-color: #f5f5f5;\n            scroll-snap-align: center; \/* \u6eda\u52a8\u505c\u6b62\u65f6\u5c45\u4e2d *\/\n        }<\/p>\n<p>        .media-content {\n            width: 100%;\n            height: 100%;\n            object-fit: cover; \/* \u586b\u5145\u5bb9\u5668 *\/\n            display: block;\n            cursor: pointer;\n        }<\/p>\n<p>        \/* \u89c6\u9891\u6807\u7b7e\u7279\u6b8a\u5904\u7406 *\/\n        video.media-content {\n            background-color: #000;\n            cursor: pointer;\n        }<\/p>\n<p>        \/* \u5982\u679c\u53ea\u67091\u4e2a\u5a92\u4f53\uff0c\u4e0d\u8981\u6eda\u52a8\uff0c\u4e14\u5bbd\u5ea6\u81ea\u9002\u5e94 *\/\n        .media-gallery.single-item .media-item-wrapper {\n            width: 100%;\n            max-width: 100%;\n        }<\/p>\n<p>        \/* --- 3. \u63cf\u8ff0\u4e0e\u6807\u7b7e --- *\/\n        .one-liner {\n            font-size: 18px;\n            color: var(--text-secondary);\n            margin-bottom: 12px;\n            font-weight: 500;\n        }<\/p>\n<p>        .tags-container {\n            display: flex;\n            flex-wrap: wrap;\n            gap: 8px;\n            margin-bottom: 24px;\n        }<\/p>\n<p>        .tag {\n            font-size: 12px;\n            color: var(--text-secondary);\n            background-color: #F2F2F2;\n            padding: 4px 10px;\n            border-radius: 20px;\n            font-weight: 600;\n            text-transform: uppercase;\n        }<\/p>\n<p>        \/* --- 4. AI \u6458\u8981\u533a --- *\/\n        .ai-section {\n            background-color: var(--bg-ai);\n            border-radius: 12px;\n            padding: 20px;\n            margin-bottom: 20px;\n            border-left: 4px solid var(--ph-orange);\n        }<\/p>\n<p>        .ai-title {\n            font-size: 14px;\n            font-weight: 700;\n            color: var(--text-main);\n            margin: 0 0 12px 0;\n            display: flex;\n            align-items: center;\n            gap: 6px;\n        }<\/p>\n<p>        .ai-content {\n            font-size: 15px;\n            color: #333;\n            margin-bottom: 0;\n            line-height: 1.7;\n        }<\/p>\n<p>        \/* --- 5. \u8bc4\u8bba\u533a --- *\/\n        .reviews-section {\n            margin-top: 10px;\n        }<\/p>\n<p>        .review-item {\n            display: flex;\n            gap: 10px;\n            margin-bottom: 12px;\n            font-size: 14px;\n        }<\/p>\n<p>        .review-avatar {\n            font-size: 18px;\n            margin-top: 2px;\n            min-width: 24px;\n        }<\/p>\n<p>        .review-bubble {\n            background: #fff;\n            border: 1px solid var(--border-color);\n            padding: 8px 12px;\n            border-radius: 0 12px 12px 12px;\n            color: var(--text-secondary);\n            line-height: 1.5;\n        }<\/p>\n<p>        .review-author {\n            font-weight: 700;\n            color: var(--text-main);\n            margin-right: 4px;\n            font-style: normal;\n        }<\/p>\n<p>        .comments-section {\n            margin-top: 30px;\n            border-top: 1px solid var(--border-color);\n            padding-top: 20px;\n        }<\/p>\n<p>        .comments-toggle {\n            background-color: #f8f9fa;\n            border: 1px solid var(--border-color);\n            border-radius: 8px;\n            padding: 12px 20px;\n            cursor: pointer;\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n            width: 100%;\n            font-size: 14px;\n            font-weight: 600;\n            color: var(--text-main);\n            transition: all 0.3s ease;\n        }<\/p>\n<p>        .comments-toggle:hover {\n            background-color: #e9ecef;\n        }<\/p>\n<p>        .comments-toggle .toggle-arrow {\n            font-size: 18px;\n            transition: transform 0.3s ease;\n        }<\/p>\n<p>        .comments-toggle.open .toggle-arrow {\n            transform: rotate(180deg);\n        }<\/p>\n<p>        .comments-container {\n            max-height: 0;\n            overflow: hidden;\n            transition: max-height 0.5s ease;\n            margin-top: 15px;\n        }<\/p>\n<p>        .comments-container.open {\n            max-height: 800px;\n            overflow: auto;\n        }<\/p>\n<p>        .comment-item {\n            background-color: #fff;\n            border: 1px solid var(--border-color);\n            border-radius: 8px;\n            padding: 16px;\n            margin-bottom: 12px;\n            font-size: 14px;\n        }<\/p>\n<p>        .comment-header {\n            display: flex;\n            justify-content: space-between;\n            align-items: flex-start;\n            margin-bottom: 8px;\n        }<\/p>\n<p>        .comment-author {\n            font-weight: 600;\n            color: var(--text-main);\n            margin-right: 8px;\n        }<\/p>\n<p>        .comment-content {\n            color: var(--text-secondary);\n            line-height: 1.5;\n            margin-bottom: 10px;\n            word-break: break-word;\n            word-wrap: break-word;\n            overflow-wrap: anywhere;\n            white-space: normal;\n        }<\/p>\n<p>        .comment-content p {\n            margin: 0;\n            word-break: break-word;\n            word-wrap: break-word;\n            overflow-wrap: anywhere;\n            white-space: normal;\n        }<\/p>\n<p>        \/* \u4f18\u5316\u8868\u60c5\u7b26\u53f7\u663e\u793a *\/\n       .emoji {\n            display: inline;\n            max-width: 15px;\n            overflow-wrap: normal;\n        }<\/p>\n<p>        .comment-actions {\n            display: flex;\n            align-items: center;\n            gap: 16px;\n            font-size: 12px;\n            color: var(--text-secondary);\n        }<\/p>\n<p>        .comment-vote {\n            display: flex;\n            align-items: center;\n            gap: 4px;\n            cursor: pointer;\n        }<\/p>\n<p>        .comment-replies {\n            margin-top: 12px;\n            margin-left: 20px;\n            padding-left: 12px;\n            border-left: 2px solid var(--border-color);\n        }<\/p>\n<p>        .reply-item {\n            background-color: #f8f9fa;\n            border: 1px solid var(--border-color);\n            border-radius: 6px;\n            padding: 12px;\n            margin-bottom: 8px;\n            font-size: 13px;\n        }<\/p>\n<p>        .reply-content {\n            color: var(--text-secondary);\n            line-height: 1.4;\n            margin-bottom: 6px;\n        }<\/p>\n<p>        \/* --- \u54cd\u5e94\u5f0f\u5fae\u8c03 --- *\/\n        @media (min-width: 600px) {\n            .media-item-wrapper {\n                width: 60%; \/* \u684c\u9762\u7aef\u7a0d\u5fae\u7a84\u4e00\u70b9\uff0c\u5c55\u793a\u66f4\u591a\u5f20 *\/\n                scroll-snap-align: start; \/* \u684c\u9762\u7aef\u9760\u5de6\u5bf9\u9f50 *\/\n            }\n        }<\/p>\n<p>        \/* \u79fb\u52a8\u8bbe\u5907\u54cd\u5e94\u5f0f\u4f18\u5316 *\/\n        @media (max-width: 599px) {\n            \/* \u6a21\u6001\u6846\u4f18\u5316 *\/\n            .modal-content {\n                max-width: 95%;\n                max-height: 85vh;\n                margin: 10vh auto;\n            }<\/p>\n<p>            .close {\n                top: 10px;\n                right: 20px;\n                font-size: 30px;\n                \/* \u589e\u5927\u70b9\u51fb\u533a\u57df *\/\n                padding: 15px;\n            }<\/p>\n<p>            \/* \u89c6\u9891\u64ad\u653e\u56fe\u6807\u4f18\u5316 *\/\n            .play-icon {\n                width: 60px;\n                height: 60px;\n                font-size: 18px;\n            }<\/p>\n<p>            \/* \u786e\u4fdd\u5a92\u4f53\u5185\u5bb9\u5728\u5c0f\u5c4f\u5e55\u4e0a\u6b63\u786e\u663e\u793a *\/\n            .media-content {\n                object-fit: cover;\n            }\n        }<\/p>\n<p>        \/* --- \u56fe\u7247\u653e\u5927\u6a21\u6001\u6846\u6837\u5f0f --- *\/\n        .modal {\n            display: none;\n            position: fixed;\n            z-index: 1000;\n            left: 0;\n            top: 0;\n            width: 100%;\n            height: 100%;\n            background-color: rgba(0, 0, 0, 0.9);\n            overflow: auto;\n            transition: opacity 0.3s ease;\n        }<\/p>\n<p>        .modal-content {\n            display: block;\n            max-width: 90%;\n            max-height: 90vh;\n            margin: 5vh auto;\n            object-fit: contain;\n            animation: zoom 0.3s;\n        }<\/p>\n<p>        @keyframes zoom {\n            from {transform: scale(0.8); opacity: 0;}\n            to {transform: scale(1); opacity: 1;}\n        }<\/p>\n<p>        .close {\n            position: absolute;\n            top: 20px;\n            right: 35px;\n            color: #fff;\n            font-size: 40px;\n            font-weight: bold;\n            transition: 0.3s;\n            cursor: pointer;\n            \/* \u6dfb\u52a0\u89e6\u63a7\u4f18\u5316 *\/\n            padding: 10px;\n            line-height: 1;\n            user-select: none;\n            -webkit-user-select: none;\n        }<\/p>\n<p>        .close:hover,\n        .close:focus {\n            color: #bbb;\n            text-decoration: none;\n        }<\/p>\n<p>        \/* \u89c6\u9891\u70b9\u51fb\u63d0\u793a\u6837\u5f0f *\/\n        .video-overlay {\n            position: absolute;\n            top: 0;\n            left: 0;\n            width: 100%;\n            height: 100%;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            background-color: rgba(0, 0, 0, 0.2);\n            opacity: 0;\n            transition: opacity 0.3s ease;\n            \/* \u89e6\u63a7\u4f18\u5316 *\/\n            touch-action: manipulation;\n            cursor: pointer;\n        }<\/p>\n<p>        .media-item-wrapper:hover .video-overlay {\n            opacity: 1;\n        }<\/p>\n<p>        \/* \u4e3a\u89e6\u6478\u8bbe\u5907\u6dfb\u52a0\u89e6\u6478\u6548\u679c *\/\n        .media-item-wrapper:active .video-overlay {\n            opacity: 0.8;\n        }<\/p>\n<p>        .play-icon {\n            width: 80px;\n            height: 80px;\n            background-color: rgba(255, 255, 255, 0.9);\n            border-radius: 50%;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            color: var(--ph-orange);\n            font-size: 24px;\n            font-weight: bold;\n            \/* \u89e6\u63a7\u4f18\u5316 *\/\n            user-select: none;\n            -webkit-user-select: none;\n        }<\/p>\n<p>        \/* --- \u54cd\u5e94\u5f0f\u5fae\u8c03 --- *\/\n        @media (min-width: 600px) {\n            .media-item-wrapper {\n                width: 60%; \/* \u684c\u9762\u7aef\u7a0d\u5fae\u7a84\u4e00\u70b9\uff0c\u5c55\u793a\u66f4\u591a\u5f20 *\/\n                scroll-snap-align: start; \/* \u684c\u9762\u7aef\u9760\u5de6\u5bf9\u9f50 *\/\n            }\n        }<\/p>\n<p>        \/* \u79fb\u52a8\u8bbe\u5907\u54cd\u5e94\u5f0f\u4f18\u5316 *\/\n        @media (max-width: 599px) {\n            \/* \u6a21\u6001\u6846\u4f18\u5316 *\/\n            .modal-content {\n                max-width: 95%;\n                max-height: 85vh;\n                margin: 10vh auto;\n            }<\/p>\n<p>            .close {\n                top: 10px;\n                right: 20px;\n                font-size: 30px;\n                \/* \u589e\u5927\u70b9\u51fb\u533a\u57df *\/\n                padding: 15px;\n            }<\/p>\n<p>            \/* \u89c6\u9891\u64ad\u653e\u56fe\u6807\u4f18\u5316 *\/\n            .play-icon {\n                width: 60px;\n                height: 60px;\n                font-size: 18px;\n            }<\/p>\n<p>            \/* \u786e\u4fdd\u5a92\u4f53\u5185\u5bb9\u5728\u5c0f\u5c4f\u5e55\u4e0a\u6b63\u786e\u663e\u793a *\/\n            .media-content {\n                object-fit: cover;\n            }\n        }\n    <\/style>\n<p><\/head><br \/>\n<body><\/p>\n<div class=\"container\">\n<h1 style=\"text-align:center; margin-bottom:40px; font-weight:900;\">PH\u70ed\u699c | 2026-08-22<\/h1>\n<p>    <!-- \u5c55\u793aapp\u5361\u7247 --><\/p>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#1<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/HQFTOUXGX42OW4\" class=\"app-title\">Toplify<\/a><\/p>\n<div class=\"one-liner\">Track your App Store ranking worldwide<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">316<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>Toplify \u662f\u4e00\u6b3e\u65e0\u9700\u4efb\u4f55API\u5bc6\u94a5\u6216App Store Connect\u6743\u9650\uff0c\u5373\u53ef7&#215;24\u5c0f\u65f6\u8ffd\u8e2aApp\u5728175\u4e2a\u56fd\u5bb6\u53ca54\u4e2a\u7c7b\u522b\u4e2d\u6392\u540d\u53d8\u5316\uff0c\u5e76\u901a\u8fc7AI\u7b5b\u9009\u91cd\u8981\u4e8b\u4ef6\u63a8\u9001\u901a\u77e5\u7684App Store\u6392\u540d\u76d1\u63a7\u5de5\u5177\uff0c\u89e3\u51b3\u4e86\u5f00\u53d1\u8005\u624b\u52a8\u67e5\u699c\u3001\u9519\u8fc7\u91cc\u7a0b\u7891\u7684\u75db\u70b9\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/8d3a4f25-f804-4c70-81b4-35474b5123bd.webp?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/44fb4cc3-eaf2-4b06-a239-6a18c21a8112.webp?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/333776cc-95eb-4080-89ac-c96985b59fde.webp?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/2881de88-fe11-4c56-9142-5063c5d769a5.webp?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/8d3910fa-19bf-4fd7-be14-bf6f17b0176a.webp?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <video class=\"media-content\" poster=\"https:\/\/ph-files.imgix.net\/cf9acf2e-8930-4fae-8109-e3d61513938c.jpeg?auto=format\" data-video-url=\"https:\/\/youtu.be\/adDYgqBzx_k\"><source src=\"https:\/\/youtu.be\/adDYgqBzx_k\" type=\"video\/mp4\"><\/video><\/p>\n<div class=\"video-overlay\">\n<div class=\"play-icon\">\u25b6<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Marketing<\/span><br \/>\n            <span class=\"tag\">Developer Tools<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">App\u6392\u540d\u8ffd\u8e2a<\/span><br \/>\n            <span class=\"tag\">\u5e94\u7528\u76d1\u63a7<\/span><br \/>\n            <span class=\"tag\">ASO\u5de5\u5177<\/span><br \/>\n            <span class=\"tag\">\u5546\u5e97\u4f18\u5316<\/span><br \/>\n            <span class=\"tag\">\u5f00\u53d1\u8005\u670d\u52a1<\/span><br \/>\n            <span class=\"tag\">iOS\u5de5\u5177<\/span><br \/>\n            <span class=\"tag\">\u6392\u884c\u699c\u63d0\u9192<\/span><br \/>\n            <span class=\"tag\">\u7ade\u54c1\u5206\u6790<\/span><br \/>\n            <span class=\"tag\">\u6570\u636e\u76d1\u63a7<\/span><br \/>\n            <span class=\"tag\">\u72ec\u7acb\u5f00\u53d1<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u7528\u6237\u666e\u904d\u8ba4\u53ef\u5176\u96f6\u95e8\u69db\u8bbe\u7f6e\u548c\u5b9e\u65f6\u901a\u77e5\u529f\u80fd\u3002\u4e3b\u8981\u95ee\u9898\u96c6\u4e2d\u5728\u6570\u636e\u83b7\u53d6\u65b9\u5f0f\uff08\u65e0\u5b98\u65b9API\u5982\u4f55\u5b9e\u73b0\uff09\u53ca\u63a8\u9001\u566a\u97f3\u63a7\u5236\u4e0a\u3002\u6709\u6548\u5efa\u8bae\u5305\u62ec\uff1a\u589e\u52a0\u7ade\u54c1\u5bf9\u6bd4\u4fa7\u680f\u3001\u5e0c\u671b\u652f\u6301Google Play\u8ffd\u8e2a\u3001\u9700\u8981\u67e5\u770bAI\u8fc7\u6ee4\u6389\u7684\u5b8c\u6574\u4e8b\u4ef6\u65e5\u5fd7\uff0c\u5e76\u8be2\u95ee\u6570\u636e\u5386\u53f2\u4ec5\u4fdd\u7559\u4e24\u5468\u7684\u539f\u56e0\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                Toplify\u5de7\u5999\u5730\u5207\u5165\u4e86\u4e00\u4e2a\u88ab\u4f20\u7edfASO\u5de5\u5177\u5ffd\u89c6\u7684\u7ec6\u5206\u5e02\u573a\u2014\u2014\u72ec\u7acb\u5f00\u53d1\u8005\u3002\u5b83\u901a\u8fc7\u201c\u65e0API\u5bc6\u94a5\u3001\u514d\u8d39\u589e\u503c\u201d\u7684\u7b56\u7565\uff0c\u5927\u5e45\u964d\u4f4e\u4e86\u4f7f\u7528\u95e8\u69db\uff0c\u76f4\u51fb\u4e86\u5f00\u53d1\u8005\u201c\u61d2\u5f97\u67e5\u699c\u201d\u548c\u201c\u7528\u4e0d\u8d77\u6602\u8d35\u5de5\u5177\u201d\u7684\u4e24\u5927\u75db\u70b9\u3002\u5176\u6838\u5fc3\u4ef7\u503c\u5e76\u975e\u7b80\u5355\u7684\u6392\u540d\u6293\u53d6\uff0c\u800c\u662f\u901a\u8fc7\u201cAI\u7cbe\u9009\u901a\u77e5\u201d\u6784\u5efa\u4e86\u4e00\u4e2a\u4f4e\u6210\u672c\u3001\u9ad8\u60c5\u7eea\u4ef7\u503c\u7684\u91cc\u7a0b\u7891\u63d0\u9192\u673a\u5236\uff0c\u8fd9\u5728\u4ea7\u54c1\u65e9\u671f\u80fd\u6709\u6548\u63d0\u5347\u7528\u6237\u7c98\u6027\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u7136\u800c\uff0c\u4ea7\u54c1\u5b58\u5728\u660e\u663e\u7684\u6280\u672f\u5929\u82b1\u677f\u4e0e\u6570\u636e\u6df1\u5ea6\u95ee\u9898\u3002\u9996\u5148\uff0c\u57fa\u4e8e\u516c\u5f00\u9875\u9762\u6293\u53d6\u7684\u975e\u5b98\u65b9\u6570\u636e\uff0c\u5728\u82f9\u679c\u8c03\u6574\u9875\u9762\u7ed3\u6784\u65f6\u5b58\u5728\u9ad8\u7ef4\u62a4\u6210\u672c\uff0c\u6570\u636e\u7684\u51c6\u786e\u6027\u548c\u5b9e\u65f6\u6027\u5b58\u7591\uff0c\u8fd9\u5bf9\u4e8e\u4e00\u4e2a\u4ee5\u6570\u636e\u4e3a\u6838\u5fc3\u7684SaaS\u4ea7\u54c1\u662f\u6f5c\u5728\u7684\u4fe1\u4efb\u5371\u673a\u3002\u5176\u6b21\uff0c\u4ec5\u6709\u4e24\u5468\u5386\u53f2\u6570\u636e\u4e14AI\u4f1a\u8fc7\u6ee4\u6389\u90e8\u5206\u4e8b\u4ef6\uff0c\u867d\u7136\u5b98\u65b9\u89e3\u91ca\u4e3a\u5b58\u50a8\u6210\u672c\uff0c\u4f46\u8fd9\u9650\u5236\u4e86\u5176\u4f5c\u4e3a\u5206\u6790\u5de5\u5177\u7684\u4ef7\u503c\u3002\u5bf9\u4e8e\u5c06\u201cAI\u7b5b\u9009\u201d\u4f5c\u4e3a\u9ed1\u7bb1\u7684\u4ea7\u54c1\u800c\u8a00\uff0c\u654f\u611f\u7528\u6237\uff08\u5982\u8bc4\u8bba\u4e2d\u7684\u8425\u9500\u4eba\u5458\uff09\u4f1a\u56e0\u65e0\u6cd5\u5ba1\u8ba1\u88ab\u8fc7\u6ee4\u7684\u6570\u636e\u800c\u4ea7\u751f\u4e0d\u5b89\u5168\u611f\uff0c\u8fd9\u53ef\u80fd\u662f\u5176\u4ece\u201c\u901a\u77e5\u5de5\u5177\u201d\u8fc8\u5411\u201c\u5206\u6790\u5e73\u53f0\u201d\u7684\u6700\u5927\u969c\u788d\u3002\u77ed\u671f\u6765\u770b\uff0c\u5b83\u662f\u4e00\u6b3e\u806a\u660e\u7684\u72ec\u7acb\u5f00\u53d1\u8005\u6548\u7387\u5de5\u5177\uff0c\u4f46\u82e5\u60f3\u5efa\u7acb\u62a4\u57ce\u6cb3\uff0c\u5fc5\u987b\u5728\u6570\u636e\u6e90\u5408\u89c4\u6027\u3001\u5386\u53f2\u6570\u636e\u6df1\u5ea6\u548c\u4e8b\u4ef6\u65e5\u5fd7\u900f\u660e\u5ea6\u4e0a\u7ed9\u51fa\u66f4\u4f18\u89e3\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">Toplify<\/span>\n                <\/div>\n<div class=\"comment-content\">Toplify is a multi server service monitoring App Store charts across 175 countries, 24\/7, so you never miss your next milestone. Get alerts for new rankings and significant jumps. No API keys or App Store Connect access needed. Just add your app and Toplify takes care of the rest.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Hey Product Hunt! \ud83d\udc4b<\/p>\n<\/p>\n<p>I\u2019m Dmitry, the indie developer and designer behind Toplify. I built Toplify because I wanted a simple way to see where my apps were actually winning on the App Store, how their rankings were changing, and when something important happened.<\/p>\n<blockquote>\n<p>Toplify is powered by a multi cloud infrastructure that monitors App Store charts across 175 countries, 24\/7, so you don\u2019t have to. And the best part: <strong><em>no API keys<\/em><\/strong>, <strong>no App Store Connect access<\/strong>, and no complicated setup. Just add any app by its name or App Store link, and Toplify starts tracking it.<\/p>\n<\/blockquote>\n<p><strong>With Toplify you can:<\/strong><\/p>\n<ul>\n<li>\n<p>Track iPhone and Mac rankings across 175 countries<\/p>\n<\/li>\n<li>\n<p>Monitor 54 categories, including Games<\/p>\n<\/li>\n<li>\n<p>Get push notifications for new rankings and significant jumps<\/p>\n<\/li>\n<li>\n<p>Explore ranking history and momentum over time<\/p>\n<\/li>\n<li>\n<p>Track ratings and reviews with automatic translation<\/p>\n<\/li>\n<li>\n<p>Create beautiful achievement cards to share your milestones<\/p>\n<\/li>\n<li>\n<p>Sync everything across iPhone, iPad, and Mac with iCloud<\/p>\n<\/li>\n<\/ul>\n<p>Once <strong><em>Ranking Alerts are enabled<\/em><\/strong>, you can simply forget about checking the charts. Toplify keeps monitoring your app in the background and lets you know when something important happens. You never miss your next milestone.<\/p>\n<\/p>\n<p>I\u2019d love to hear your feedback and ideas. Thanks for checking out Toplify! \ud83d\udda4<\/p>\n<\/p>\n<p><strong>P.S. The app is indie developer friendly. It\u2019s completely free for new apps that aren\u2019t in the charts yet or are ranking in fewer than 4 countries.<\/strong><\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>10<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@dmitriychuta\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@dmitriychuta<\/a>&nbsp;Tracking App Store rankings across 175 countries with no API keys or App Store Connect access is the part I&#8217;m most curious about the App Store doesn&#8217;t expose an official public rankings API as far as I know. Is this built on the public storefront pages themselves, and if so, how do you keep 175 countries&#8217; worth of that in sync 24\/7 without it becoming a maintenance nightmare every time Apple tweaks something?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@dmitriychuta\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@dmitriychuta<\/a>&nbsp;Love that it works with zero API keys or setup! <\/p>\n<p>How are you getting reliable data across 175 countries without official access?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>2<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@dmitriychuta\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@dmitriychuta<\/a>&nbsp;This solves something we&#8217;ve been doing manually for Cove \u2014 tracking how ranking moves after each App Store listing change (we&#8217;ve been testing subtitle variants and reordering screenshots). The no-API-keys, no-App-Store-Connect-access setup is the part that&#8217;ll actually get me to use it instead of another spreadsheet. Adding Cove now to see how it holds up.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>@dmitriychuta 175 countries with alerts on is the bit I&#8217;d worry about tbh. Small stores are so thin that an app can jump 40 places on like 6 downloads, so if every wobble pings me I&#8217;d have it muted by Tuesday.<\/p>\n<p>How do you decide what counts as a significant jump, and can I set that myself? Curious about Mac especially, those charts are way thinner than iPhone so I&#8217;d expect them to be noisier.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>3<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@yelyzaveta_kibets\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@yelyzaveta_kibets<\/a>&nbsp;Thanks for the great question! The app won\u2019t bombard you with notifications.<\/p>\n<\/p>\n<p>We track ranking changes for every app, and you\u2019re right that apps ranking in many countries can generate a lot of activity. We call these changes \u201cEvents.\u201d All Events are processed on the server, and AI selects only the single most important one to notify you about, or it may decide not to send anything at all, even if dozens of Events occurred.<\/p>\n<\/p>\n<p>With this approach, an app can be ranking in dozens of countries and moving gradually without generating any notifications. You\u2019ll only hear about meaningful events, such as a jump of 50+ positions or entering the charts in a completely new country where the app has never ranked before.<\/p>\n<\/p>\n<p>You can also customize which types of Events you want to track and disable the ones you don\u2019t need.<\/p>\n<p>And if you\u2019re tracking competitors, for example, you can turn off their notifications entirely and receive Push notifications only for your own apps.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Been using Toplify for my own apps and really like how simple it makes tracking rankings across different countries. The ranking alerts are especially useful because I don\u2019t have to keep checking the charts myself. Great tool for indie developers. Congrats on the launch, <a href=\"https:\/\/www.producthunt.com\/@dmitriychuta\" data-node-type=\"mention\" data-mention-type=\"user\" data-mention-id=\"dmitriychuta\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@dmitriychuta<\/a>!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>3<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@artsvit\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@artsvit<\/a>&nbsp;Artem, thank you for the feedback! I\u2019m glad Toplify is useful for your apps. I built it primarily with indie developers in mind, since ASO services are often too expensive for them. That\u2019s why I tried to make Toplify free for new and growing apps.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>2<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Currently testing it out! Like it! <\/p>\n<\/p>\n<p>I would personally add something like a side panel for showing competitors and top-notches so I could compare them.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/d828e1e4-90e0-4b2c-82d3-8f3e59e19c8f.png?auto=compress,format&amp;codec=mozjpeg&amp;cs=strip\" style=\"max-width: 100%\"><\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@busmark_w_nika\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@busmark_w_nika<\/a>&nbsp;Thanks for the idea! I\u2019m actually planning to completely redesign the My Apps section in the next update, so it\u2019ll be easier to separate your own apps from competitors and compare them more conveniently \ud83e\udd1f<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@busmark_w_nika\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@busmark_w_nika<\/a>&nbsp;Definitely give the iOS version a try too. A lot of things are more convenient there than on Mac, and most people mainly use it for the convenience and mobility.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Fantastic app I&#8217;ve been using ever since the beta test. Recommended for every indie developer out there.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@arsen_kolyba\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@arsen_kolyba<\/a>&nbsp;Thank you for using Toplify since day one. It\u2019s really great to hear that! <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>UI looks incredible! Very polished overall. Will you have tracking for Google Play apps in the future? Want this to track those too<\/p>\n<p>Congrats on the launch!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@silvia_odwyer1\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@silvia_odwyer1<\/a>&nbsp;Thank you for mentioning the interface! I put a lot of effort into making it simple and easy for everyone to understand.<\/p>\n<\/p>\n<p>Yes, I plan to expand the service in the future to track Google Play and Steam charts as well \ud83d\ude80<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>2<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Big congrats on the launch! Tracking global App Store rankings in real-time gives indie hackers and growth teams such a clear edge. Love how focused and high-utility this is for mobile devs. Wishing you tons of momentum today!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@thisiskp_\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@thisiskp_<\/a>&nbsp;Thanks for the feedback! As an indie developer, I initially built this service to solve my own problem, and then scaled it into a standalone product for everyone. I think it\u2019s a must have for developers, especially those just starting out.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">Love the concept. Having launched mine recently I would definitely want to see where I stand over time. Gonna test it out \ud83d\udc4d\ud83c\udffd<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@shalabh_sanger\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@shalabh_sanger<\/a>&nbsp;Cool. Most developers do not always realize their app is ranking in some countries. Also, an iOS app can sometimes be ranking in the Mac charts, which many developers never check at all.<\/p>\n<\/p>\n<p>I\u2019d be happy to hear your feedback once you try it. If your app has been in the charts at any point during the last two weeks, you\u2019ll see it along with the exact dates and countries where it happened.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>@dmitriychuta Ok the retroactive 2 weeks on first add is a really nice touch tbh, most tools start you at zero and make you wait. Did the 2 week window come from storage costs, or did longer history just not prove useful?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@yelyzaveta_kibets\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@yelyzaveta_kibets<\/a>&nbsp;Well, both are true. But initially, we did limit it to two weeks because of the huge amount of data. Imagine storing every ranking change in every country for every app on the App Store. For example, a single game can have up to four separate rankings in each country: two category rankings, plus the overall ranking and the overall games ranking. We do plan to extend the history to one month once we grow a bit more \ud83d\udcaa<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Saves a lot of time for checking the stats! Best of luck today! <a href=\"https:\/\/www.producthunt.com\/@dmitriychuta\" data-node-type=\"mention\" data-mention-type=\"user\" data-mention-id=\"dmitriychuta\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@dmitriychuta<\/a> <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@kate_ramakaieva\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@kate_ramakaieva<\/a>&nbsp;Yes, unlike other similar services, you don\u2019t even need to open the app. Just enable <strong>Ranking Alerts<\/strong> and go about your day. As soon as there\u2019s a significant change in your app\u2019s rankings, you\u2019ll get a nice push notification that gives you a little mood boost.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Been looking for an app like this for ages! Thank you<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@abrar_sami1\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@abrar_sami1<\/a>&nbsp;You\u2019re welcome! If you have any questions or ideas for improvements, I\u2019m always available.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>@dmitriychuta Ok that&#8217;s a smarter design than I expected tbh, AI picking the one thing worth saying beats me fiddling with a threshold slider. And muting competitor pushes while still tracking them is exactly how I&#8217;d use it.<\/p>\n<p>One thing I&#8217;d want as the marketing person though: when the AI decides not to tell me anything, can I still see what it skipped somewhere in the app? Like a quiet log of all the Events. During a launch week I report numbers to the team, and &#8220;the AI didn&#8217;t think it mattered&#8221; is a scary answer if someone asks why we missed a dip haha.<\/p>\n<p>Congrats on #1 by the way, watching this climb all day was fun.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@yelyzaveta_kibets\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@yelyzaveta_kibets<\/a>&nbsp;Well, it\u2019s hard to miss anything here because the AI simply chooses one notification to send, while all the other data is still there. You can open the app and see the full history for every country and category. At the moment, we store two weeks of history. So even if you add your app for the first time right now, you\u2019ll immediately see its history for the past two weeks. <\/p>\n<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/6468348e-d7e0-4d7f-9d3f-bf5b79266b9b.png?auto=compress,format&amp;codec=mozjpeg&amp;cs=strip\" style=\"max-width: 100%\"><\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>I love it. Made it to my iPhone page of indie development apps. That\u2019s one of the few notifications you want to receive in your phone in your early days launching an app! Great work!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@domenicoflauto\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@domenicoflauto<\/a>&nbsp;Thank you for the kind review. Yes, I \ud83d\udcaf agree with you. Every time I get a notification like this, it gives me a little dopamine boost and motivates me to keep improving my project. These notifications feel just as good as the ones from RevenueCat.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>This app always helps me know the rank of each of my projects on the App Store. Also, the app is pleasant to use because Dmytro does a great job with the UI!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@andrewtanchuk\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@andrewtanchuk<\/a>&nbsp;Thank you for such a kind review of Toplify! I\u2019m really glad you enjoy the app. I use your app, <strong>AppScout<\/strong>, and I think it\u2019s the best alternative to App Store Connect and a must have for every app developer.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Great product and attractive pricing! What made you choose to distribute it as a mobile app, not web service?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@nikitaeverywhere\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@nikitaeverywhere<\/a>&nbsp;Thanks for the question! Web services didn\u2019t really work for me for two main reasons: high pricing and the lack of real time ranking updates. They often provide daily or weekly reports, while I wanted to build a tool that shows the results of your work almost immediately, especially when you\u2019re actively marketing your app.<\/p>\n<\/p>\n<p>For example, you post about your app on Threads and it takes off. You immediately get a notification that your app has entered the Top Charts. Then you generate a Share image to celebrate the result, post it, and potentially get even more downloads and purchases.<\/p>\n<\/p>\n<p>That simple feedback loop is what I built the product around.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">It\u2019s a great idea, as ratings start from scratch in each country and tracking all feedbacks is always difficult. Good luck with the launch!<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@daryna_radiichuk\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@daryna_radiichuk<\/a>&nbsp;Thank you! Yes, checking rankings manually across different countries is very time consuming and requires constantly switching App Store regions. Toplify takes care of all of this automatically, so there\u2019s no need to check rankings manually or even open the app. Everything runs on the server.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>2<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Congrats on the launch! The app looks great \u2728\ud83d\udc4f<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@endore8\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@endore8<\/a>&nbsp;Thank you, Oleh, for supporting the project since day one! I\u2019m really glad Toplify has been useful to you. I love your app Usage and have been using it for a long time. \ud83d\udc9c<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>&#8220;or ranks in fewer than four countries&#8221; &#8211; when is an app considered to be ranking?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@ivan_4\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@ivan_4<\/a>&nbsp;When the app is in the Top 100. If it ranks in more than 4 countries, the limitations apply. For each app, you can see how many countries it\u2019s currently charting in, along with a list of those countries.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#2<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/AGWMLNH2CQI3U6\" class=\"app-title\">Open Analytics<\/a><\/p>\n<div class=\"one-liner\">AI-Native Google Analytics alternative for the modern web<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">217<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>Open Analytics \u662f\u4e00\u6b3e\u5f00\u6e90\u3001\u9690\u79c1\u4f18\u5148\u3001\u65e0Cookie\u7684\u8f7b\u91cf\u7ea7\u7f51\u7ad9\u5206\u6790\u5de5\u5177\uff0c\u901a\u8fc7\u5355\u4e00\u811a\u672c\u5373\u53ef\u8ffd\u8e2a\u5b9e\u65f6\u8bbf\u5ba2\u3001\u6f0f\u6597\u4e0e\u6536\u5165\uff0c\u5e76\u652f\u6301AI\u95ee\u7b54\u4e0eMCP\u534f\u8bae\u63a5\u5165\uff0c\u8ba9\u73b0\u4ee3\u7f51\u7ad9\u5728\u65e0\u9700\u540c\u610f\u6a2a\u5e45\u7684\u524d\u63d0\u4e0b\u83b7\u5f97\u7c7bGoogle Analytics\u7684\u6df1\u5ea6\u6d1e\u5bdf\uff0c\u540c\u65f6\u517c\u987e\u6570\u636e\u4e3b\u6743\u4e0eAI\u53ef\u4ea4\u4e92\u6027\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <video class=\"media-content\" poster=\"https:\/\/ph-files.imgix.net\/b4a03156-0c21-4201-b947-28f4471b0b72.jpeg?auto=format\" data-video-url=\"https:\/\/www.youtube.com\/watch?v=qS_yALtcreI\"><source src=\"https:\/\/www.youtube.com\/watch?v=qS_yALtcreI\" type=\"video\/mp4\"><\/video><\/p>\n<div class=\"video-overlay\">\n<div class=\"play-icon\">\u25b6<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/3ac0f154-8d42-456f-adeb-fac9e3f1b293.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/03d2cd97-ed07-48ff-9e3b-b6a5aaeb4523.jpeg?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/6a951a40-4af4-43df-ba26-3f3815e747f7.jpeg?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/5fd0280f-7757-4056-856d-401a23c6bc84.jpeg?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Open Source<\/span><br \/>\n            <span class=\"tag\">Analytics<\/span><br \/>\n            <span class=\"tag\">GitHub<\/span><br \/>\n            <span class=\"tag\">Data &#038; Analytics<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">\u9690\u79c1\u4f18\u5148\u5206\u6790<\/span><br \/>\n            <span class=\"tag\">\u5f00\u6e90\u66ff\u4ee3Google Analytics<\/span><br \/>\n            <span class=\"tag\">\u65e0Cookie\u8ffd\u8e2a<\/span><br \/>\n            <span class=\"tag\">AI\u539f\u751f\u6570\u636e\u6d1e\u5bdf<\/span><br \/>\n            <span class=\"tag\">MCP\u534f\u8bae\u96c6\u6210<\/span><br \/>\n            <span class=\"tag\">\u81ea\u6258\u7ba1<\/span><br \/>\n            <span class=\"tag\">\u6536\u5165\u5f52\u56e0<\/span><br \/>\n            <span class=\"tag\">\u6f0f\u6597\u5206\u6790<\/span><br \/>\n            <span class=\"tag\">\u8f7b\u91cf\u7ea7\u811a\u672c<\/span><br \/>\n            <span class=\"tag\">GDPR\u53cb\u597d<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u591a\u6570\u597d\u8bc4\u805a\u7126\u4e8e\u201c\u65e0Cookie+AI\u67e5\u8be2+MCP\u201d\u7684\u7ec4\u5408\u521b\u65b0\u3002\u9ad8\u8d5e\u53cd\u9988\u9488\u782d\u6838\u5fc3\u77db\u76fe\uff1a\u8bc4\u8bba\u8005\u8fde\u73af\u8ffd\u95ee\u201c\u76d0\u503c\u54c8\u5e0c\u6bcf\u65e5\u8f6e\u8f6c\u201d\u5bfc\u81f4\u8de8\u5929\u56de\u8bbf\u8005\u88ab\u8ba1\u4e3a\u65b0\u8bbf\u5ba2\uff0c\u76f4\u6307\u7559\u5b58\u5206\u6790\u3001\u591a\u65e5\u6f0f\u6597\uff08\u5982\u5468\u4e00\u5e7f\u544a\u70b9\u51fb\/\u5468\u56db\u8d2d\u4e70\uff09\u65ad\u88c2\u95ee\u9898\u3002\u5b98\u65b9\u56de\u5e94\u79f0\u53ef\u901a\u8fc7identify()\u6216\u652f\u4ed8\u4fa7\u4fe1\u53f7\u7f1d\u5408\uff0c\u4f46\u627f\u8ba4\u5c40\u9650\u3002\u53e6\u4e00\u6709\u6548\u5efa\u8bae\u5173\u6ce8AI\u804a\u5929\/MCP\u5de5\u5177\u7684\u67e5\u8be2\u900f\u660e\u5ea6\u4e0e\u8eab\u4efd\u5b9a\u4e49\u8fb9\u754c\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                Open Analytics\u5207\u4e2d\u7684\u662f\u4e00\u4e2a\u771f\u5b9e\u4e14\u5c34\u5c2c\u7684\u5e02\u573a\u7f1d\u9699\uff1a\u65e2\u8981Google\u7ea7\u7684\u6df1\u5ea6\u5206\u6790\uff0c\u53c8\u4e0d\u60f3\u80cc\u8d1fCookie\u5899\u4e0e\u9690\u79c1\u5408\u89c4\u7684\u6c89\u91cd\u67b7\u9501\u3002\u5b83\u7684\u201c\u5bc6\u7801\u5b66\u5b9e\u8df5\u201d\u503c\u5f97\u80af\u5b9a\u2014\u2014\u670d\u52a1\u7aef\u5f3a\u5236\u9075\u5b88GPC\u3001\u4e0d\u5b58\u539f\u59cbIP\u3001\u54c8\u5e0c\u6bcf\u65e5\u8f6e\u6362\uff0c\u8fd9\u786e\u5b9e\u6bd4\u591a\u6570\u201c\u9690\u79c1\u58f0\u660e\u201d\u6765\u5f97\u786c\u6838\uff0c\u4e5f\u76f4\u63a5\u56de\u5e94\u4e86\u6b27\u6d32\u76d1\u7ba1\u7684\u7ede\u7d22\u3002\u5176\u201cAI+MCP\u201d\u65b9\u5411\u4e5f\u975e\u5671\u5934\uff1a\u5c06\u5206\u6790\u7ed3\u679c\u53d8\u6210AI\u53ef\u8c03\u7528\u7684\u56fa\u5b9a\u5de5\u5177\u96c6\uff08\u800c\u975e\u8ba9\u6a21\u578b\u5199SQL\uff09\uff0c\u65e2\u964d\u4f4e\u4e86\u5e7b\u89c9\u98ce\u9669\uff0c\u53c8\u4fdd\u7559\u4e86\u53ef\u5ba1\u8ba1\u6027\uff0c\u8fd9\u662f\u6bd4\u76f2\u76ee\u63a5\u5165LLM\u66f4\u6210\u719f\u7684\u5de5\u7a0b\u5224\u65ad\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u4f46\u8bc4\u8bba\u533a\u7684\u77db\u5934\u7cbe\u51c6\u523a\u4e2d\u4e86\u4ea7\u54c1\u547d\u95e8\uff1a\u4ee5\u201c\u5348\u591c\u8f6e\u6362\u54c8\u5e0c\u201d\u6362\u53d6\u7684\u9690\u79c1\uff0c\u672c\u8d28\u4e0a\u662f\u4e3b\u52a8\u653e\u5f03\u8de8\u65e5\u5f52\u56e0\u80fd\u529b\u3002\u9762\u5bf9\u201c\u5468\u4e00\u5e7f\u544a\u70b9\u51fb\uff0c\u5468\u56db\u624d\u4e0b\u5355\u201d\u8fd9\u7c7b\u7535\u5546\u9ec4\u91d1\u62a5\u8868\uff0c\u5b98\u65b9\u7ed9\u51fa\u7684\u7b54\u6848\u2014\u2014\u4f9d\u8d56\u7528\u6237\u767b\u5f55\u540eidentify()\uff0c\u6216\u901a\u8fc7\u652f\u4ed8\u4fe1\u53f7\u53cd\u5411\u7f1d\u5408\u2014\u2014\u5b9e\u9645\u4e0a\u662f\u628a\u5206\u6790\u5de5\u5177\u7684\u770b\u5bb6\u672c\u9886\u8f6c\u5ac1\u7ed9\u4e86\u5ba2\u6237\u4e1a\u52a1\u903b\u8f91\u3002\u8fd9\u4e0d\u662f\u201c\u53ef\u63a5\u53d7\u7684\u6743\u8861\u201d\uff0c\u800c\u662f\u4ea7\u54c1\u5728\u201c\u9690\u79c1\u7406\u60f3\u201d\u4e0e\u201c\u5546\u4e1a\u4ef7\u503c\u201d\u4e4b\u95f4\u9009\u8fb9\u7ad9\u7684\u660e\u786e\u4fe1\u53f7\u3002\u5b83\u544a\u8bc9\u5e02\u573a\uff1a\u51e1\u662f\u4e0d\u767b\u5f55\u3001\u4e0d\u4ed8\u8d39\u7684\u533f\u540d\u7528\u6237\uff0c\u4f60\u7684\u884c\u4e3a\u65c5\u7a0b\u5bf9\u6211\u5c31\u662f\u201c\u859b\u5b9a\u8c14\u7684\u8bbf\u5ba2\u201d\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u8fd9\u5bf9\u72ec\u7acb\u7ad9\u957f\u3001\u5185\u5bb9\u7ad9\u5c1a\u53ef\u63a5\u53d7\uff0c\u4f46\u5bf9\u91cd\u5ea6\u4f9d\u8d56\u8f6c\u5316\u5f52\u56e0\u7684SaaS\u6216\u7535\u5546\uff0c\u8fd9\u53ef\u80fd\u662f\u81f4\u547d\u7f3a\u9677\u3002\u66f4\u503c\u5f97\u73a9\u5473\u7684\u662f\u8bc4\u8bba\u533a\u90a3\u4f4d\u201c\u81ea\u5bb6\u6d4b\u8bd5\u8d26\u53f7\u5bfc\u81f4\u8bef\u5224\u6d41\u5931\u201d\u7684\u6848\u4f8b\u2014\u2014\u5b98\u65b9\u8fa9\u79f0\u201c\u8eab\u4efd\u5b9a\u4e49\u5728\u66f4\u9ad8\u5c42\u201d\uff0c\u4f46\u6070\u6070\u66b4\u9732\u4e86AI\u5206\u6790\u5de5\u5177\u7684\u7ecf\u5178\u9677\u9631\uff1a\u6a21\u578b\u56de\u7b54\u7684\u81ea\u4fe1\u5ea6\u4e0e\u5e95\u5c42\u6570\u636e\u7cca\u5ea6\u4e0d\u5339\u914d\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u603b\u4f53\u800c\u8a00\uff0cOpen Analytics\u505a\u5bf9\u4e8610\u5e74\u524d\u7684Piwik\u8be5\u505a\u7684\u4e8b\uff0c\u5e76\u7528AI\u5916\u58f3\u5305\u88c5\u52302025\u5e74\u7684\u5ba1\u7f8e\u3002\u4f46\u201c\u9690\u79c1\u4e25\u683c\u6027\u201d\u4e0e\u201c\u5f52\u56e0\u5b8c\u6574\u6027\u201d\u7684\u6570\u5b66\u77db\u76fe\uff0c\u5b83\u5e76\u672a\u7834\u89e3\uff0c\u53ea\u662f\u9009\u62e9\u4e86\u56de\u907f\u3002\u771f\u6b63\u60f3\u8981\u66ff\u4ee3GA\u7684\u7528\u6237\uff0c\u8fdf\u65e9\u4f1a\u649e\u4e0a\u90a3\u5835\u5348\u591c\u88ab\u91cd\u7f6e\u7684\u5899\u3002\u82e5\u65e0\u6cd5\u5728\u672a\u6765\u7248\u672c\u4e2d\u63d0\u4f9b\u201c\u53ef\u9009\u7684\u6301\u4e45\u533f\u540dID\u201d\uff08\u5982\u57fa\u4e8e\u6d4f\u89c8\u5668\u6307\u7eb9\u7684\u677e\u8026\u5408\u6620\u5c04\uff09\uff0c\u8fd9\u4ea7\u54c1\u7ec8\u5c06\u505c\u7559\u5728\u201c\u61c2\u884c\u4eba\u7684\u73a9\u5177\u201d\u800c\u975e\u201c\u4e3b\u6d41\u4e1a\u52a1\u7684\u57fa\u5efa\u201d\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">Open Analytics<\/span>\n                <\/div>\n<div class=\"comment-content\">Open Analytics is an open-source, privacy-first alternative to Google Analytics, built for humans and AI agents. Track real-time visitors, funnels, and revenue with one lightweight, cookieless script. Connect your analytics to AI tools via MCP. GDPR-friendly with no consent banner, and self-hostable.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">Hey Product Hunt \ud83d\udc4b<\/p>\n<p>We\u2019re the team behind Open Analytics.<\/p>\n<p>We built it because we kept hitting the same wall: every analytics tool made us choose between knowing our numbers and respecting the people behind them.<\/p>\n<p>Google Analytics gave us the numbers, but often came with complexity and consent banners. Many privacy-first tools removed the banner, but stopped at pageview counts. We wanted the best of both worlds.<\/p>\n<p>Open Analytics is cookieless by design. Visitor identity is represented by a salted hash that rotates at midnight, raw IP addresses are never stored, and no cross-site profile is created. The result is useful analytics without persistent tracking.<\/p>\n<p>Here\u2019s what we\u2019re most proud of:<\/p>\n<p>\u2022 Privacy that\u2019s enforced, not just promised. Global Privacy Control is honored by the collector server-side. Even if the snippet is configured to ignore it, those requests are dropped before they\u2019re counted.<\/p>\n<p>\u2022 Revenue attribution where the visit happened. Connect Stripe and each payment appears alongside the visit that generated it, showing which pages, channels, and referrers drive revenue.<\/p>\n<p>\u2022 Analytics you can ask questions about. Use AI Chat inside the dashboard or connect through our MCP server to explore your traffic in plain English.<\/p>\n<p>\u2022 Custom events without custom JavaScript. Add data-oa-event=&#8221;signup&#8221; to a button and Open Analytics tracks it.<\/p>\n<p>Open Analytics is open source under AGPL and fully self-hostable. If you\u2019d rather not run it yourself, our hosted version starts at $9\/month. Every plan includes every feature\u2014you pay for volume, never for access.<\/p>\n<p>We\u2019d love your feedback.<\/p><\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>8<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@uaghazade\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@uaghazade<\/a>&nbsp;If the salt rotates at midnight, a daily active user shows up as a brand new visitor every single day. That is a real tradeoff for privacy, but it also means any cohort built on returning visitors breaks completely rather than just getting fuzzier. How do you handle retention analysis without a stable ID across days?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@uaghazade\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@uaghazade<\/a>&nbsp;The salted hash rotating at midnight is a clever privacy mechanism, but I&#8217;m curious about the analytics tradeoff it creates: a visitor who returns at 12:01am after visiting at 11:59pm would get a new hash and presumably count as a &#8220;new&#8221; visitor rather than a returning one. Is that an accepted tradeoff for the privacy guarantee, or is there a way to preserve session continuity across the rotation boundary?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@uaghazade\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@uaghazade<\/a>&nbsp;awesome!<\/p>\n<p>What pushed you to self-host + AGPL instead of just going full SaaS?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Building an open-source, AI-native alternative to Google Analytics is such a great move. Congrats on bringing this to life! <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@thisiskp_\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@thisiskp_<\/a>&nbsp;thank you very much for the name of our team. it&#8217;s a pleasure to hear this from you!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Love that you made analytics both cookieless and MCP-ready, giving me real insights without a consent banner while letting my AI tools actually query the data.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@ilko_kacharov\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@ilko_kacharov<\/a>&nbsp;thank you a lot Ilko, for that kind of words!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>My dashboard told me a subscriber had churned. Turned out to be my own test account, I refunded it myself and the rollup had no way to know those were the same person.<\/p>\n<p>And the counting was all correct. The mistake was one layer up, in what I&#8217;d told it counted as a person, so no query would have caught it.<\/p>\n<p>So with the chat window and the MCP server sitting on top, does it show you the query it ran?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@andrew_f3\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@andrew_f3<\/a>&nbsp;The model never writes a query. Each MCP tool is a fixed, named read (site_overview, revenue_summary and so on) whose SQL is a constant on our side; the model only picks the tool and fills in parameters like the date range, and your chat client shows every call with those parameters. So what you audit is which read it chose, never hand-written SQL that could quietly redefine what a person is.<\/p>\n<p>The layer above is pinned too, and it is yours: identity is only what you declare through identify(), scoped to your site, and answers that depend on it carry that scope with them rather than assuming it. On the revenue side there is no synthetic churn number to be fooled by: gross, refunds, disputes and fees stay printed as separate parts, so a refund you issued to yourself shows up as exactly that, a refund. <\/p>\n<p>And for the front half of your story, the ignore flag keeps your own browser&#8217;s visits out of the traffic numbers.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>@uaghazade The identity hash rotating at midnight is the honest way to do it, but it also means someone who comes back tomorrow looks like a brand new person, right? How do you handle funnels that take a few days, like ad click on Monday and purchase on Thursday? That&#8217;s the report I always get asked for haha.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@yelyzaveta_kibets\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@yelyzaveta_kibets<\/a>&nbsp;yes, that&#8217;s the trade, and it&#8217;s deliberate: anonymous ids rotate at UTC midnight, so we never track a cookieless visitor across days.<\/p>\n<p>for your Monday-to-Thursday report: if your users log in, call identify(external_id) from the tracker. that hash is stable (still cookieless), and attribution then uses its full 30 day window, so the ad click and the purchase connect. purchases also get matched through order signals on the payment side, which often stitches the journey even without identify.<\/p>\n<p>Either way the report shows which identity scope it was computed under, so it never claims a journey the data can&#8217;t support.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>2<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#3<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/ZYQ3SSNKVR2CLN\" class=\"app-title\">SubtitleGenerator<\/a><\/p>\n<div class=\"one-liner\">From video to publish-ready AI subtitles\u2014all in one browser<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">193<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>SubtitleGenerator \u662f\u4e00\u6b3e\u5728\u6d4f\u89c8\u5668\u4e2d\u4e00\u7ad9\u5f0f\u5b8c\u6210\u89c6\u9891\u5b57\u5e55\u751f\u6210\u3001\u6821\u5bf9\u3001\u7ffb\u8bd1\u3001\u7f8e\u5316\u4e0e\u5bfc\u51fa\u7684AI\u5de5\u5177\uff0c\u65e8\u5728\u89e3\u51b3\u521b\u4f5c\u8005\u4eceAI\u8f6c\u5199\u5230\u6210\u7247\u53d1\u5e03\u4e4b\u95f4\u53cd\u590d\u5207\u6362\u5de5\u5177\u7684\u75db\u70b9\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/77637c3c-d69b-46c6-9467-9d1e37bb922f.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/983221b7-997d-4f31-b106-c96a9a854d8c.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/f6d1955f-6c13-4787-b855-8ebe486134c3.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/cc962614-47b5-4578-a6ca-782ccdfe0914.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/0e39982f-cdc4-41f8-bd4c-b05169152c2a.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/316e9bb4-acda-462f-97ae-d4333bea07f6.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/d8082a98-2350-42cc-b41d-1292df226d2c.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/42581df9-5ba5-402d-89ec-b772f2abbfb9.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/f591ff08-2bd8-4b11-b3bc-785e1c9702ae.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <video class=\"media-content\" poster=\"https:\/\/ph-files.imgix.net\/ab4f6fdc-56a2-4b07-b6fe-da0f51a3b5b8.jpeg?auto=format\" data-video-url=\"https:\/\/www.youtube.com\/watch?v=S5BAOT6n54w\"><source src=\"https:\/\/www.youtube.com\/watch?v=S5BAOT6n54w\" type=\"video\/mp4\"><\/video><\/p>\n<div class=\"video-overlay\">\n<div class=\"play-icon\">\u25b6<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Social Media<\/span><br \/>\n            <span class=\"tag\">Artificial Intelligence<\/span><br \/>\n            <span class=\"tag\">Video<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">AI\u5b57\u5e55\u751f\u6210<\/span><br \/>\n            <span class=\"tag\">\u89c6\u9891\u7ffb\u8bd1<\/span><br \/>\n            <span class=\"tag\">\u5b57\u5e55\u7f16\u8f91\u5668<\/span><br \/>\n            <span class=\"tag\">\u6d4f\u89c8\u5668\u5de5\u5177<\/span><br \/>\n            <span class=\"tag\">\u521b\u4f5c\u8005\u5de5\u5177<\/span><br \/>\n            <span class=\"tag\">\u514d\u8d39\u589e\u503c<\/span><br \/>\n            <span class=\"tag\">\u5b57\u5e55\u6837\u5f0f<\/span><br \/>\n            <span class=\"tag\">\u672c\u5730\u9690\u79c1<\/span><br \/>\n            <span class=\"tag\">\u89c6\u9891\u5904\u7406<\/span><br \/>\n            <span class=\"tag\">\u81ea\u52a8\u5316\u5de5\u4f5c\u6d41<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u7528\u6237\u5bf9\u201cAll clear\u201d\u5b8c\u6210\u5ea6\u63d0\u793a\u548c30\u79cd\u514d\u8d39\u6837\u5f0f\u8868\u793a\u8ba4\u53ef\u3002\u6838\u5fc3\u8ffd\u95ee\u96c6\u4e2d\u5728\uff1a1) \u201c\u4e0d\u786e\u5b9a\u8bcd\u201d\u6807\u8bb0\u4f9d\u636e\u662f\u5426\u4e3aASR\u7f6e\u4fe1\u5ea6\uff0c\u91cd\u8dd1\u662f\u5426\u786e\u5b9a\uff1b2) \u9690\u79c1\u8bbe\u8ba1\u662f\u5426\u4e3a\u4e3b\u52a8\u9700\u6c42\uff1b3) \u91cd\u53e0\u6216\u4ea4\u53c9\u8bf4\u8bdd\u4eba\u533a\u5206\u80fd\u529b\u4e0d\u8db3\uff0c\u671f\u671bv2\u652f\u6301\u8bf4\u8bdd\u4eba\u6807\u7b7e\u4e0e\u4eba\u5de5\u4fee\u6b63\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                SubtitleGenerator \u7684\u806a\u660e\u4e4b\u5904\u5728\u4e8e\u628a\u201cAI\u8f6c\u5f55\u5b8c\u6210\u201d\u91cd\u65b0\u5b9a\u4e49\u4e3a\u201c\u6821\u5bf9\u5b8c\u6210\u201d\uff0c\u800c\u4e0d\u662f\u201c\u6587\u5b57\u751f\u6210\u201d\u3002\u5b83\u7528\u201cFix\u201d\u6d41\u7a0b\u548c\u201cAll clear\u201d\u5012\u8ba1\u65f6\uff0c\u76f4\u51fb\u5b57\u5e55\u5de5\u5177\u6700\u5927\u7684\u9690\u6027\u75db\u70b9\u2014\u2014\u7528\u6237\u6c38\u8fdc\u4e0d\u77e5\u9053AI\u7ed3\u679c\u91cc\u8fd8\u5269\u591a\u5c11\u96f7\uff0c\u53ea\u80fd\u50cf\u5927\u6d77\u635e\u9488\u4e00\u6837\u9010\u884c\u6392\u67e5\u3002\u8fd9\u79cd\u201c\u5b8c\u6210\u611f\u201d\u8bbe\u8ba1\uff0c\u5b9e\u8d28\u4e0a\u628a\u5de5\u5177\u4ece\u201c\u751f\u6210\u5668\u201d\u5347\u7ea7\u4e3a\u201c\u8d28\u91cf\u7ba1\u7406\u7cfb\u7edf\u201d\uff0c\u5bf9\u8ffd\u6c42\u6548\u7387\u7684\u4e13\u4e1a\u521b\u4f5c\u8005\u662f\u5f3a\u4ef7\u503c\u951a\u70b9\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u4f46\u4ea7\u54c1\u5e76\u672a\u89e3\u51b3\u5e95\u5c42\u6a21\u578b\u80fd\u529b\u95ee\u9898\u3002\u8bc4\u8bba\u4e2d\u5173\u4e8e\u91cd\u53e0\u8bf4\u8bdd\u4eba\u3001\u8bf4\u8bdd\u4eba\u6807\u7b7e\u7684\u8ffd\u95ee\uff0c\u66b4\u9732\u51fa\u5176\u5728\u590d\u6742\u591a\u8bf4\u8bdd\u4eba\u573a\u666f\u4e0b\u7684\u77ed\u677f\u3002\u521b\u59cb\u4eba\u56de\u5e94\u201cv2\u89c4\u5212\u201d\u4e14\u5f3a\u8c03\u201c\u8981\u5148\u6d4b\u8bd5\u518d\u627f\u8bfa\u201d\uff0c\u6001\u5ea6\u52a1\u5b9e\uff0c\u4f46\u201c\u9ad8\u7cbe\u5ea6\u8f6c\u5f55\u201d\u4f5c\u4e3aPro\u5356\u70b9\uff0c\u82e5\u4ec5\u4f9d\u8d56\u73b0\u6709ASR\uff0c\u5dee\u5f02\u5316\u6709\u9650\u3002\u9690\u79c1\u4e0a\u201c\u4ec5\u4e0a\u4f20\u97f3\u9891\u4e14\u5373\u5220\u201d\u662f\u5408\u89c4\u4e0e\u4fe1\u4efb\u7684\u52a0\u5206\u9879\uff0c\u4e0d\u8fc7\u89c6\u9891\u201c\u7559\u5728\u6d4f\u89c8\u5668\u201d\u66f4\u591a\u662f\u6280\u672f\u67b6\u6784\u4f18\u52bf\uff0c\u800c\u975e\u4e3b\u52a8\u7684\u5b89\u5168\u5356\u70b9\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u5546\u4e1a\u6a21\u5f0f\u4e0a\uff0c\u514d\u8d3960\u5206\u949f\/\u6708+PAYG\u7684\u6df7\u5408\u7b56\u7565\u8db3\u591f\u7075\u6d3b\uff0c\u4f46\u201cHD\u65e0\u6c34\u5370\u201d\u548c\u201c\u516b\u79cd\u683c\u5f0f\u201d\u88ab\u9501\u5728Pro\uff0c\u5bf9\u9ad8\u9891\u521b\u4f5c\u8005\u53ef\u80fd\u5f62\u6210\u4e8c\u6b21\u4ed8\u8d39\u6469\u64e6\u3002\u6574\u4f53\u800c\u8a00\uff0c\u8fd9\u4e0d\u662f\u9769\u547d\u6027\u4ea7\u54c1\uff0c\u4f46\u201cFix\u6d41\u7a0b\u201d\u548c\u201c\u660e\u786e\u7ec8\u70b9\u7684\u6821\u5bf9\u4f53\u9a8c\u201d\u5728\u7ec6\u5206\u573a\u666f\u91cc\u8db3\u591f\u950b\u5229\uff0c\u5c24\u5176\u9002\u5408\u6559\u7a0b\u3001\u64ad\u5ba2\u526a\u8f91\u7b49\u5355\u4eba\u6216\u53cc\u4eba\u8fd1\u8ddd\u5f55\u97f3\u573a\u666f\u3002\u80fd\u5426\u628a\u201c\u786e\u5b9a\u7684\u6821\u5bf9\u7ec8\u70b9\u201d\u8fdb\u5316\u6210\u201c\u591a\u8bf4\u8bdd\u4eba\u6218\u573a\u4e0a\u7684\u786e\u5b9a\u6027\u201d\uff0c\u51b3\u5b9a\u4e86\u5b83\u4ece\u201c\u597d\u7528\u201d\u5230\u201c\u4e0d\u53ef\u6216\u7f3a\u201d\u7684\u8ddd\u79bb\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">SubtitleGenerator<\/span>\n                <\/div>\n<div class=\"comment-content\">Free: 60 one-minute videos a month, no signup. Drop in a video and generate, fix, translate, style and export subtitles in one editor. All 30 styles are included free. Most tools leave you hunting line by line\u2014Fix flags uncertain words and counts down to \u201cAll clear,\u201d a real finish line. Pro and Max add full-track translation, HD without a watermark, eight subtitle formats, custom fonts and saved brand styles. Your video stays in your browser.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Hey Product Hunt \u2014 I built SubtitleGenerator to take a video from AI transcription to final export without bouncing between tools.<\/p>\n<p>In one browser editor, you can fix text and timing, choose from 30 styles, translate a full track while keeping the original, and export video or subtitle files. The part I designed differently is Fix: uncertain source words are flagged, the remaining review count stays visible, and the transcript has a real finish line\u2014\u201cAll clear.\u201d<\/p>\n<p>You can try it on one video without signing up. The Free workflow includes all 30 styles and 720p export with a small watermark. Pro and Max add high-accuracy transcription, full-track translation, HD without a watermark, eight subtitle formats, custom fonts, and saved brand styles. PAYG is there if you need more subtitle time but do not want another subscription.<\/p>\n<p>Your original video stays in the browser. Only extracted audio is sent for transcription, and that audio is deleted after transcription is complete.<\/p>\n<p>What still slows you down most after an AI transcript is generated? I\u2019ll be here throughout launch day and would love blunt feedback on the Fix flow.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>4<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@woshiliyana\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@woshiliyana<\/a>&nbsp;The &#8220;All clear&#8221; finish line is a nice detail most transcript editors leave you guessing whether you&#8217;ve actually caught everything. Curious about the flagging itself: is &#8220;uncertain&#8221; based on the ASR model&#8217;s own confidence score, or something else (audio quality, cross-referencing multiple passes)? And does the flagged-word count change if I re-run transcription on the same clip, or is it deterministic?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@woshiliyana\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@woshiliyana<\/a>&nbsp;Great Launch Yan!<\/p>\n<p>Was the audio-only-upload thing a privacy ask from users, or just how you&#8217;d build it anyway?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@woshiliyana\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@woshiliyana<\/a>&nbsp;Congratulations on Launch Yan.<br \/>The 30 subtitle styles caught my attention. Having that much choice while keeping the editing flow simple is a nice balance.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Streamlining video to publish-ready captions straight in the browser saves creators so much time. Super cool launch, congrats! <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>the honest answer for me is speaker labeling when two people talk over each other or overlap slightly. the transcript reads fine as text but figuring out which line belongs to who post-transcript, especially in an interview or podcast clip, always ends up as manual work after the &#8220;AI part&#8221; is technically done. is that on your radar at all or is this more aimed at single-speaker content like tutorials\/voiceovers for now<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@galdayan\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@galdayan<\/a>&nbsp;It\u2019s definitely on my radar. In an early two-speaker test, all four speaker turns were identified correctly, with confidence scores between 0.94 and 1.00, so the results look promising. Speaker labels and manual corrections are planned for v2. Overlapping speech is the harder case, and I want to test it on real interviews and podcasts before making any promises. Thanks for bringing this up!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#4<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/HVWKOBYWJKKZIG\" class=\"app-title\">Maccess<\/a><\/p>\n<div class=\"one-liner\">Your Mac, in your pocket \u2014 trackpad, screen, and AI<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">156<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>Maccess \u5c06 iPhone \u53d8\u4e3a Mac \u7684\u968f\u8eab\u9065\u63a7\u5668\uff0c\u63d0\u4f9b\u89e6\u63a7\u677f\u3001\u952e\u76d8\u3001\u5c4f\u5e55\u955c\u50cf\u3001\u6587\u4ef6\u8bbf\u95ee\u4e0e AI \u52a9\u624b Mackie\uff0c\u652f\u6301\u5c40\u57df\u7f51\u76f4\u8fde\u548c\u8de8\u7f51\u7edc\u5728\u7ebf\u8bbf\u95ee\uff0c\u89e3\u51b3\u7528\u6237\u79bb\u5f00\u7535\u8111\u65f6\u4ecd\u9700\u64cd\u63a7 Mac \u6216\u67e5\u770b\u957f\u4efb\u52a1\u72b6\u6001\u7684\u75db\u70b9\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/ea206598-23db-4158-9d80-63826a503c16.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/29e2a012-ffc4-49c3-9da8-5a7a7c92cff0.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/7ea2366f-8e10-46c4-8e30-9205a00204f6.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/3d695822-14f9-4f92-a6d7-de687a8c74e9.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/79b2ee4f-0cdf-40d1-bb19-ce0678766d76.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/fbbabdc5-0032-4687-953c-b10d8ba972e8.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/d24096cf-cdb9-4ec8-86e5-652890870c82.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/1bf4da0c-6822-451f-aa33-8042eb6ee336.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/8ceeca44-5c49-4c10-87cf-7dc31a8f0ddc.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/1efae1b6-6ffd-498b-8840-b48d2397b00a.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/3aab1f2b-7f1f-4acb-bdd9-6228f600b166.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Developer Tools<\/span><br \/>\n            <span class=\"tag\">Menu Bar Apps<\/span><br \/>\n            <span class=\"tag\">Apple<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">\u8fdc\u7a0b\u63a7\u5236<\/span><br \/>\n            <span class=\"tag\">\u5c4f\u5e55\u955c\u50cf<\/span><br \/>\n            <span class=\"tag\">\u89e6\u63a7\u677f<\/span><br \/>\n            <span class=\"tag\">\u6587\u4ef6\u4f20\u8f93<\/span><br \/>\n            <span class=\"tag\">AI\u52a9\u624b<\/span><br \/>\n            <span class=\"tag\">\u7aef\u5230\u7aef\u52a0\u5bc6<\/span><br \/>\n            <span class=\"tag\">\u5c40\u57df\u7f51\u76f4\u8fde<\/span><br \/>\n            <span class=\"tag\">\u5728\u7ebf\u4e2d\u7ee7<\/span><br \/>\n            <span class=\"tag\">Mac\u5de5\u5177<\/span><br \/>\n            <span class=\"tag\">\u6548\u7387\u5e94\u7528<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u7528\u6237\u6574\u4f53\u8ba4\u53ef\u4ea7\u54c1\u6574\u5408\u601d\u8def\uff0c\u4f46\u91cd\u70b9\u8ffd\u95ee\u4e24\u70b9\uff1a\u4e00\u662f Online Access \u7684\u4e2d\u7ee7\u67b6\u6784\u4e0e\u52a0\u5bc6\u7ec6\u8282\uff0c\u62c5\u5fc3\u4f1a\u8bdd\u88ab\u670d\u52a1\u5668\u7aa5\u63a2\uff1b\u4e8c\u662f Mackie \u7684\u8fdb\u7a0b\u5217\u8868\u662f\u5426\u5b9e\u65f6\u5237\u65b0\uff0c\u80fd\u5426\u53cd\u6620\u591c\u95f4\u957f\u65f6\u95f4\u8fd0\u884c\u7684 agent \u4efb\u52a1\u52a8\u6001\u3002\u5f00\u53d1\u8005\u56de\u5e94\u4e86\u52a0\u5bc6\u673a\u5236\uff08X25519 + ChaCha20\u2011Poly1305\uff09\u53ca\u6df7\u5408\u4e2d\u7ee7\u903b\u8f91\uff0c\u4f46\u672a\u660e\u786e\u5b9e\u65f6\u5237\u65b0\u95ee\u9898\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                Maccess \u7684\u4ef7\u503c\u4e0d\u5728\u201c\u53c8\u4e00\u4e2a\u8fdc\u7a0b\u63a7\u5236 App\u201d\uff0c\u800c\u5728\u4e8e\u5b83\u8bd5\u56fe\u628a\u201c\u63a7\u5236 Mac\u201d\u8fd9\u4ef6\u4e8b\u4ece\u5de5\u5177\u5c42\u62ac\u5347\u5230\u4ee3\u7406\uff08agent\uff09\u5de5\u4f5c\u6d41\u5c42\u3002\u4ece\u8bc4\u8bba\u770b\uff0c\u6838\u5fc3\u7528\u6237\u4e0d\u662f\u60f3\u6478\u9c7c\u70b9\u9f20\u6807\uff0c\u800c\u662f\u6709\u771f\u5b9e\u7684\u91cd\u6d3b\uff1a\u8dd1\u957f\u4efb\u52a1\u3001\u76d1\u63a7\u5b50\u8fdb\u7a0b\u3001\u8fdc\u7a0b\u63a5\u7ba1 agent \u884c\u4e3a\u3002\u8fd9\u8bf4\u660e\u4ea7\u54c1\u5207\u4e2d\u4e86\u4e00\u4e2a\u7ec6\u5206\u7684\u3001\u9ad8\u7c98\u6027\u7684\u751f\u4ea7\u529b\u573a\u666f\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u4f46\u6697\u96f7\u4e5f\u660e\u663e\u3002\u5176\u4e00\uff0c\u5b89\u5168\u6027\u662f\u8fdc\u7a0b\u63a7\u5236\u7c7b\u4ea7\u54c1\u7684\u751f\u6b7b\u7ebf\uff0c\u56e2\u961f\u867d\u7136\u7ed9\u51fa\u4e86\u6f02\u4eae\u7684\u52a0\u5bc6\u65b9\u6848\uff08X25519 + ChaCha20\u2011Poly1305\uff09\uff0c\u4f46\u201c\u6df7\u5408\u4e2d\u7ee7\u201d\u7684\u94fe\u8def\u900f\u660e\u5ea6\u4ecd\u4e0d\u591f\u2014\u2014\u7528\u6237\u5bf9\u201c\u6258\u7ba1\u57fa\u7840\u8bbe\u65bd\u201d\u7684\u4fe1\u4efb\u6210\u672c\u5f88\u9ad8\uff0c\u5c24\u5176\u662f\u4f01\u4e1a\u6216\u5b66\u6821\u7f51\u7edc\u73af\u5883\u4e0b\uff0c\u4e00\u65e6\u906d\u9047\u7b56\u7565\u5c01\u9501\uff0cOnline Access \u4fbf\u6210\u4e3a\u552f\u4e00\u901a\u9053\uff0c\u6b64\u65f6\u4e2d\u7ee7\u8282\u70b9\u7684\u53ef\u7528\u6027\u548c\u9690\u79c1\u5ba1\u8ba1\u62a5\u544a\u5c31\u662f\u786c\u95e8\u69db\uff0c\u800c\u975e\u9526\u4e0a\u6dfb\u82b1\u3002\u5176\u4e8c\uff0c\u8bc4\u8bba\u4e2d\u5173\u4e8e\u201c\u8fdb\u7a0b\u5217\u8868\u662f\u5426\u5b9e\u65f6\u5237\u65b0\u201d\u7684\u95ee\u9898\u88ab\u5f00\u53d1\u8005\u5ffd\u7565\uff0c\u8fd9\u66b4\u9732\u4e86\u4ea7\u54c1\u5728 agent \u65f6\u4ee3\u7684\u4e00\u4e2a\u6838\u5fc3\u77db\u76fe\uff1a\u7528\u6237\u8981\u7684\u4e0d\u662f\u955c\u50cf\u5c4f\u5e55\uff0c\u800c\u662f\u5bf9\u8ba1\u7b97\u72b6\u6001\u7684\u8bed\u4e49\u611f\u77e5\u3002\u5982\u679c Mackie \u53ea\u662f\u6362\u76ae\u7248\u7684\u201cps + \u804a\u5929\u6846\u201d\uff0c\u90a3\u5b83\u548c\u76f4\u63a5 SSH \u6709\u4ec0\u4e48\u533a\u522b\uff1f\u771f\u6b63\u7684\u58c1\u5792\u5e94\u8be5\u662f\uff1a\u80fd\u7406\u89e3\u8fd0\u884c\u4e2d\u7684\u4efb\u52a1\u3001\u4e3b\u52a8\u63a8\u9001\u72b6\u6001\u53d8\u5316\u3001\u5e76\u5141\u8bb8\u7528\u6237\u7528\u81ea\u7136\u8bed\u8a00\u4ecb\u5165\u63a7\u5236\u2014\u2014\u76ee\u524d\u4ea7\u54c1\u4ecb\u7ecd\u548c\u56de\u590d\u90fd\u672a\u8bc1\u5b9e\u8fd9\u4e00\u70b9\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u53e6\u5916\uff0c156 \u7968\u7684\u51b7\u542f\u52a8\u6210\u7ee9\u8bf4\u660e\u9996\u53d1\u58f0\u91cf\u6709\u9650\uff0c\u4f46\u8bc4\u8bba\u8d28\u91cf\u4e0d\u4f4e\uff0c\u7528\u6237\u5e26\u7740\u5177\u4f53\u573a\u666f\u6765\u63d0\u95ee\uff0c\u8fd9\u662f\u597d\u4fe1\u53f7\u3002\u771f\u6b63\u8be5\u8b66\u60d5\u7684\u662f\u529f\u80fd\u81a8\u80c0\uff1a\u89e6\u63a7\u677f\u3001\u952e\u76d8\u3001\u5c4f\u5e55\u3001\u6587\u4ef6\u3001AI\u2026\u2026\u4e94\u5408\u4e00\u7684\u4ea7\u54c1\u6700\u5bb9\u6613\u53d8\u6210\u4e94\u6837\u90fd\u5e73\u5eb8\u3002\u5efa\u8bae\u56e2\u961f\u4f18\u5148\u628a\u201c\u8fdc\u7a0b\u76d1\u63a7 + \u5e72\u9884 agent \u4efb\u52a1\u201d\u8fd9\u6761\u7ebf\u505a\u6df1\uff0c\u800c\u4e0d\u662f\u7ee7\u7eed\u5806\u529f\u80fd\u3002\u5426\u5219\uff0c\u5b83\u4e0d\u8fc7\u662f\u53c8\u4e00\u6b3e\u201c\u770b\u7740\u5f88\u5168\uff0c\u7528\u8d77\u6765\u5acc\u91cd\u201d\u7684\u6742\u7cc5\u5de5\u5177\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">Maccess<\/span>\n                <\/div>\n<div class=\"comment-content\">Control your Mac from iPhone with touchpad, keyboard, screen mirroring, files, and Mackie AI. Pair over Wi-Fi or use Online Access from anywhere.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>I was waiting for this kind of product. Thanks for building it. And congrats for the launch.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@harkirat_singh3777\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@harkirat_singh3777<\/a>&nbsp;Thanks Harkirat<\/p>\n<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Nice! I&#8217;ve used several things like this over the years, but this looks like a well thought out combination of previous stabs at discrete aspects of the problem space evolved into the agentic generative AI era. Love the ability to pick from such a wide range of options for its &#8220;brain.&#8221;<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@heresalexandria\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@heresalexandria<\/a>&nbsp;Thanks, Alexandria! That\u2019s exactly the direction I\u2019ve been aiming for: bringing the useful parts of remote-control tools together and rebuilding the experience around modern agent workflows, rather than simply adding a chatbot on top. I also didn\u2019t want Maccess to lock people into one \u201cbrain,\u201d so letting people choose the AI tools they already trust is a big part of it. Really appreciate you noticing that!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Question. What does the relay service layer look like? Are you using a premae service or your own server etc? Did you consider using wifi direct? for local relay. Wifi direct gets around school office lan blockers etc. So it works locally beyond the home wifi etc. Thanks<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@conduit_design\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@conduit_design<\/a>&nbsp;Thanks Andr\u00e9 \u2014 good questions. It\u2019s a hybrid: Maccess\u2019s pairing, routing, and security layer is custom, while the underlying connectivity runs on managed infrastructure rather than a single self-hosted relay server. It prefers device-to-device connections where possible and uses a relay when network conditions require it.<\/p>\n<p>The security boundary remains between your paired iPhone and Mac regardless of the route. Session content is end-to-end encrypted, control data uses ChaCha20\u2011Poly1305 authenticated encryption, and the relay never receives the decryption keys.<\/p>\n<p>For local connections, yes\u2014Maccess supports both the normal local network and Apple\u2019s peer-to-peer Wi\u2011Fi path, which is the closest Apple-platform equivalent to Wi\u2011Fi Direct. That can get around router or client-isolation restrictions on some school and office networks. Availability is ultimately controlled by the OS and network policy, so it can\u2019t bypass every managed environment; Online Access remains the fallback when local connectivity is blocked.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>been wanting this since I keep leaving my Mac running some long job at home and then needing to poke at it from my phone. the &#8220;pair over Wi-Fi or use Online Access from anywhere&#8221; bit is the part I&#8217;d want to understand better before turning it on though &#8211; is Online Access relayed through your servers or is it a direct connection to the Mac, and what&#8217;s actually protecting the trackpad\/screen session at that point, just the Apple ID or something separate<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@galdayan\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@galdayan<\/a>&nbsp;Great question. On the same Wi\u2011Fi, the connection stays local. Online Access may connect directly or use a secure relay, depending on the networks involved.<\/p>\n<p>Apple ID isn\u2019t the only protection\u2014it authenticates your Maccess account, while the iPhone must be separately paired using the QR code or pairing code displayed on the Mac.<\/p>\n<p>Each session uses fresh encryption keys established with X25519. Control data\u2014including trackpad input, keystrokes, clipboard data, and commands\u2014is end-to-end encrypted and authenticated with ChaCha20\u2011Poly1305, so intercepted traffic is unreadable and tampered messages are rejected. Screen content is also encrypted between the paired devices.<\/p>\n<p>If a relay is needed, it only forwards encrypted traffic and never receives the session keys. Maccess doesn\u2019t store the content of your remote-control sessions, and you can disable Online Access or remove a paired device at any time.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Mackie explaining processes in plain language is the feature that would actually get me to use this over just running ps. But does the list refresh live? I run agentic workflows overnight that spawn and kill subprocesses constantly. Checking from my phone the next morning, I want current state. If I have to tap refresh every time to see what changed, that breaks the use case.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#5<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/CP2T53A7KU7FHJ\" class=\"app-title\">AutoClaw<\/a><\/p>\n<div class=\"one-liner\">An AI work agent across desktop, browser, and chat<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">138<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>AutoClaw \u662f\u4e00\u6b3e\u8de8\u684c\u9762\u3001\u6d4f\u89c8\u5668\u548c\u804a\u5929\u8f6f\u4ef6\u7684AI\u5de5\u4f5c\u4ee3\u7406\uff0c\u80fd\u628a\u7528\u6237\u7528\u81ea\u7136\u8bed\u8a00\u4e0b\u8fbe\u7684\u591a\u6b65\u9aa4\u4efb\u52a1\u62c6\u89e3\u5e76\u81ea\u52a8\u64cd\u4f5c\u6587\u4ef6\u3001\u529e\u516c\u6587\u6863\u3001\u7f51\u9875\u5e94\u7528\u548cIM\u5de5\u5177\uff0c\u6700\u7ec8\u628a\u6210\u679c\u76f4\u63a5\u8fd4\u56de\u5bf9\u8bdd\u4e2d\u2014\u2014\u89e3\u51b3\u7684\u662f\u201c\u5de5\u4f5c\u6563\u843d\u5728\u591a\u4e2a\u5e94\u7528\u91cc\u3001\u624b\u52a8\u5207\u6362\u8d39\u65f6\u8d39\u529b\u201d\u7684\u75db\u70b9\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/f9ced0cd-9474-4b32-9490-6d478fc48d15.jpeg?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/42dfdf00-64ae-4bc7-8963-ee61d258ab36.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/4564dae2-b207-4f0d-a98e-2ba5980f3728.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/9659ecb2-5dae-4455-bd12-52cb4339946e.svg?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/35f0569a-d482-4ea6-a530-8649a34b46df.svg?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/1e8cc74e-4504-4aac-8094-cd47f3091872.svg?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/a859313a-0fe0-4f0f-b8a4-123cae02dba4.jpeg?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Productivity<\/span><br \/>\n            <span class=\"tag\">Artificial Intelligence<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">AI\u5de5\u4f5c\u4ee3\u7406<\/span><br \/>\n            <span class=\"tag\">\u684c\u9762\u81ea\u52a8\u5316<\/span><br \/>\n            <span class=\"tag\">\u6d4f\u89c8\u5668\u81ea\u52a8\u5316<\/span><br \/>\n            <span class=\"tag\">\u591a\u6b65\u9aa4\u4efb\u52a1<\/span><br \/>\n            <span class=\"tag\">GLM-5.3<\/span><br \/>\n            <span class=\"tag\">\u529e\u516c\u6548\u7387<\/span><br \/>\n            <span class=\"tag\">\u8de8\u5e94\u7528\u534f\u540c<\/span><br \/>\n            <span class=\"tag\">\u667a\u80fd\u4f53\u534f\u8c03<\/span><br \/>\n            <span class=\"tag\">IM\u96c6\u6210<\/span><br \/>\n            <span class=\"tag\">\u751f\u4ea7\u529b\u5de5\u5177<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u7528\u6237\u8bc4\u8bba\uff08\u9ad8\u8d5e\u4e3a\u5f00\u53d1\u8005\u81ea\u8ff0\uff09\u4e3b\u8981\u5f3a\u8c03\u5176\u8de8\u5e94\u7528\u6267\u884c\u957f\u4efb\u52a1\u7684\u80fd\u529b\uff0c\u5982\u4ece\u4e00\u6761\u6d88\u606f\u5ef6\u4f38\u5230\u8868\u683c\u3001\u6d4f\u89c8\u5668\u548c\u591a\u4e2a\u6587\u4ef6\uff1b\u63d0\u53ca\u5185\u7f6eGLM-5.3\u3001\u652f\u6301\u8fde\u63a5GLM Coding Plan\uff0c\u5e76\u4e3a\u65b0\u7528\u6237\u63d0\u4f9b26K\u514d\u8d39\u989d\u5ea6\u3002\u4f46\u8bc4\u8bba\u7f3a\u4e4f\u7b2c\u4e09\u65b9\u7528\u6237\u5bf9\u5177\u4f53\u95ee\u9898\u6216\u5efa\u8bae\u7684\u53cd\u9988\uff0c\u6709\u6548\u4fe1\u606f\u96c6\u4e2d\u5728\u4ea7\u54c1\u529f\u80fd\u5ba3\u5bfc\u548c\u6fc0\u52b1\u653f\u7b56\u4e0a\uff0c\u6682\u65e0\u5173\u4e8eBug\u3001\u4f53\u9a8c\u7f3a\u9677\u6216\u529f\u80fd\u7f3a\u5931\u7684\u516c\u5f00\u62b1\u6028\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                AutoClaw\u672c\u8d28\u4e0a\u662f\u4e00\u4e2a\u201c\u81ea\u52a8\u5316\u5de5\u4f5c\u6d41\u7f16\u6392\u5668\u201d\uff0c\u800c\u975e\u5355\u7eaf\u7684AI\u804a\u5929\u52a9\u624b\u3002\u5b83\u7684\u4ef7\u503c\u4e3b\u5f20\u5f88\u6e05\u6670\uff1a\u628aAI\u4ece\u201c\u751f\u6210\u5185\u5bb9\u201d\u5347\u7ea7\u4e3a\u201c\u6267\u884c\u52a8\u4f5c\u201d\uff0c\u5e76\u6253\u901aIM\u3001\u6d4f\u89c8\u5668\u548c\u684c\u9762\u5e94\u7528\u4e4b\u95f4\u7684\u6570\u636e\u5b64\u5c9b\u3002\u8fd9\u4e00\u70b9\u5207\u4e2d\u4e86\u77e5\u8bc6\u5de5\u4f5c\u8005\u65e5\u5e38\u6700\u7410\u788e\u3001\u6700\u8017\u65f6\u7684\u90e8\u5206\u2014\u2014\u6bd4\u5982\u4ece\u90ae\u4ef6\u91cc\u63d0\u53d6\u6570\u636e\u3001\u586b\u8fdb\u8868\u683c\u3001\u518d\u751f\u6210\u62a5\u544a\u5e76\u53d1\u9001\uff0c\u8fd9\u7c7b\u201c\u8fde\u63a5\u578b\u82e6\u529b\u6d3b\u201d\u6b63\u662f\u5f53\u524dCopilot\u7c7b\u4ea7\u54c1\u8986\u76d6\u4e0d\u5230\u7684\u76f2\u533a\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u4f46\u9700\u8981\u6cfc\u51b7\u6c34\u7684\u662f\uff1a\u7b2c\u4e00\uff0c\u8fd9\u7c7b\u4ea7\u54c1\u7684\u5929\u82b1\u677f\u5728\u4e8e\u201c\u5de5\u5177\u7684API\u5b8c\u6574\u5ea6\u548c\u7a33\u5b9a\u6027\u201d\u3002\u684c\u9762\u7aef\u81ea\u52a8\u5316\uff08\u5982\u63a7\u5236\u6587\u4ef6\u3001Office\u3001IM\uff09\u8fdc\u6bd4\u4e91\u7aefAPI\u81ea\u52a8\u5316\u8106\u5f31\uff0c\u4efb\u4f55\u4e00\u6b21\u5e94\u7528\u754c\u9762\u6539\u7248\u6216\u6743\u9650\u5f39\u7a97\u90fd\u53ef\u80fd\u8ba9Agent\u4e2d\u65ad\uff0c\u7528\u6237\u7684\u4fe1\u4efb\u611f\u4f1a\u8fc5\u901f\u5d29\u584c\u3002\u7b2c\u4e8c\uff0c\u5185\u7f6eGLM-5.3\u610f\u5473\u7740\u6a21\u578b\u80fd\u529b\u4f9d\u8d56\u667a\u8c31\u7684\u8fed\u4ee3\uff0c\u800cAgent\u7684\u6210\u8d25\u66f4\u591a\u53d6\u51b3\u4e8e\u201c\u52a8\u4f5c\u89c4\u5212\u201d\u548c\u201c\u9519\u8bef\u6062\u590d\u201d\u903b\u8f91\uff0c\u800c\u975e\u5355\u6b21\u5bf9\u8bdd\u8d28\u91cf\uff0c\u8fd9\u90e8\u5206\u4f53\u9a8c\u5b98\u65b9\u5e76\u672a\u5c55\u793a\u3002\u7b2c\u4e09\uff0c138\u7968\u7684Product Hunt\u70ed\u5ea6\u504f\u4f4e\uff0c\u4e14\u8bc4\u8bba\u533a\u6ca1\u6709\u7b2c\u4e09\u65b9\u7528\u6237\u771f\u5b9e\u8bc4\u6d4b\uff0c\u66f4\u50cf\u662f\u4ea7\u54c1\u65b9\u7684\u53d1\u5e03\u516c\u544a\uff0c\u7f3a\u4e4f\u72ec\u7acb\u9a8c\u8bc1\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u771f\u6b63\u503c\u5f97\u5173\u6ce8\u7684\u662f\u5176\u201c26K\u514d\u8d39\u989d\u5ea6\u201d\u548c\u201cGLM Coding Plan\u5bf9\u63a5\u201d\u2014\u2014\u8fd9\u8bf4\u660e\u667a\u8c31\u5728\u7cfb\u7edf\u6027\u5e03\u5c40Agent\u751f\u6001\uff0cAutoClaw\u53ef\u80fd\u662f\u5176\u5411\u4f01\u4e1a\u7ea7\u201c\u6570\u5b57\u5458\u5de5\u201d\u6e17\u900f\u7684\u8bd5\u63a2\u6027\u4ea7\u54c1\u3002\u82e5\u5b83\u80fd\u7a33\u5b9a\u5904\u740610\u6b65\u4ee5\u4e0a\u7684\u8de8\u5e94\u7528\u4efb\u52a1\uff0c\u5e76\u652f\u6301\u81ea\u5b9a\u4e49Agent\u534f\u4f5c\uff0c\u5219\u6709\u673a\u4f1a\u5728RPA\u4e0eAI Copilot\u4e4b\u95f4\u6740\u51fa\u4e00\u5757\u7ec6\u5206\u5e02\u573a\u3002\u53cd\u4e4b\uff0c\u82e5\u9891\u7e41\u5361\u58f3\uff0c\u5219\u53ea\u4f1a\u6ca6\u4e3a\u53c8\u4e00\u4e2a\u201c\u6f14\u793a\u60ca\u8273\u3001\u5b9e\u6218\u7ffb\u8f66\u201d\u7684demo\u7ea7\u4ea7\u54c1\u3002\u5efa\u8bae\u56e2\u961f\u4f18\u5148\u5f00\u653e\u771f\u5b9e\u7528\u6237\u7684\u538b\u529b\u6d4b\u8bd5\u6848\u4f8b\uff0c\u800c\u4e0d\u662f\u53ea\u53d1\u5e03\u5f00\u53d1\u8005\u81ea\u8ff0\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">AutoClaw<\/span>\n                <\/div>\n<div class=\"comment-content\">AutoClaw is a desktop AI agent for multi-step work across files, browsers, office documents, web apps, and IM. Give it a goal, let it operate tools and coordinate agents, then get the finished work back in the same conversation. GLM-5.3 is built in.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Hi everyone!<\/p>\n<p>AutoClaw is built for the kind of work that starts as one message and somehow ends up touching a spreadsheet, a browser, a few files, and several apps.<\/p>\n<p>Give it the goal in AutoClaw or message it through IM, and it can break the task down, operate the tools it needs, keep longer jobs moving, and send the result back into the conversation.<\/p>\n<p>That works nicely for things like recurring ops, research, content work, or the random business task that never fits neatly inside one app.<\/p>\n<p><a href=\"https:\/\/www.producthunt.com\/products\/z-ai\/launches\/glm-5-3\" target=\"_blank\" rel=\"noopener\">GLM-5.3<\/a> is now available natively too, and you can connect an existing <a href=\"https:\/\/z.ai\/subscribe\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">GLM Coding Plan<\/a> directly.<\/p>\n<p>New users also get 26K credits to <a href=\"https:\/\/autoclaw.z.ai\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">try it out<\/a>!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>7<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#6<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/2PR44EYSQC74U3\" class=\"app-title\">Zero<\/a><\/p>\n<div class=\"one-liner\">Vercel&#8217;s programming language built for AI agents<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">127<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>Zero\u662fVercel\u63a8\u51fa\u7684\u5b9e\u9a8c\u6027\u7f16\u7a0b\u8bed\u8a00\uff0c\u4e13\u4e3aAI Agent\u7f16\u5199\u4ee3\u7801\u800c\u8bbe\u8ba1\uff0c\u901a\u8fc7\u8bed\u4e49\u7a0b\u5e8f\u56fe\u66ff\u4ee3\u6e90\u7801\u6587\u672c\uff0c\u8ba9AI\u76f4\u63a5\u67e5\u8be2\u548c\u4fee\u6539\u7a0b\u5e8f\u7ed3\u6784\uff0c\u4eba\u7c7b\u53ea\u9700\u63d0\u51fa\u9700\u6c42\u5e76\u5ba1\u67e5\u53ef\u8bfb\u7684\u4ee3\u7801\u6295\u5f71\uff0c\u89e3\u51b3\u4f20\u7edfAI\u751f\u6210\u4ee3\u7801\u4e0d\u53ef\u9760\u3001\u7f16\u8bd1\u9a8c\u8bc1\u7f3a\u5931\u7684\u6838\u5fc3\u75db\u70b9\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/05f224e0-b360-4eb3-a33f-4c01f4eb57d3.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/64a41e2a-1e17-4611-8f73-a38a7ebcda5c.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/df668599-9afc-4275-85b9-a726f63258f7.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/3606fd0a-6f71-4d90-9448-842fb9d59ed3.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/8c5153f1-7d70-4f48-a4c0-80a85e5de664.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/7de1ba13-745a-4791-b814-a3b8914d00fa.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/94ab9ffb-3263-4e62-a50e-76930be4a93e.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Languages<\/span><br \/>\n            <span class=\"tag\">Developer Tools<\/span><br \/>\n            <span class=\"tag\">Artificial Intelligence<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">AI\u7f16\u7a0b\u8bed\u8a00<\/span><br \/>\n            <span class=\"tag\">Agent\u539f\u751f<\/span><br \/>\n            <span class=\"tag\">\u8bed\u4e49\u7a0b\u5e8f\u56fe<\/span><br \/>\n            <span class=\"tag\">\u7f16\u8bd1\u5668\u6821\u9a8c<\/span><br \/>\n            <span class=\"tag\">\u4ee3\u7801\u6295\u5f71<\/span><br \/>\n            <span class=\"tag\">\u4f4eToken\u6d88\u8017<\/span><br \/>\n            <span class=\"tag\">Vercel<\/span><br \/>\n            <span class=\"tag\">\u5b9e\u9a8c\u6027\u5de5\u5177<\/span><br \/>\n            <span class=\"tag\">\u5f00\u53d1\u8005\u5de5\u5177<\/span><br \/>\n            <span class=\"tag\">\u7a0b\u5e8f\u5408\u6210<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u76ee\u524d\u4ec5\u4e00\u6761\u8bc4\u8bba\uff0c\u5185\u5bb9\u4e3a\u5bf9\u53d1\u5e03\u8005Justin\u7684\u79f0\u8d5e\uff08\u201cThis is awesome Justin! Thanks for hunting it here\u201d\uff09\uff0c\u65e0\u5b9e\u8d28\u6027\u529f\u80fd\u53cd\u9988\u3001\u95ee\u9898\u6216\u5efa\u8bae\u3002\u6709\u6548\u8bc4\u8bba\u4fe1\u606f\u4e3a\u96f6\uff0c\u9700\u7b49\u5f85\u793e\u533a\u66f4\u591a\u6280\u672f\u8ba8\u8bba\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                Zero\u7684\u91ce\u5fc3\u660e\u786e\u6307\u5411AI\u7f16\u7a0b\u7684\u201c\u8bed\u6cd5\u5c42\u9769\u547d\u201d\uff0c\u4f46127\u7968\u7684\u51b7\u6de1\u53cd\u54cd\u548c\u8fd1\u4e4e\u4e3a\u96f6\u7684\u6709\u6548\u8bc4\u8bba\uff0c\u66b4\u9732\u51fa\u5176\u201c\u53cd\u4eba\u7c7b\u76f4\u89c9\u201d\u7684\u8bbe\u8ba1\u6096\u8bba\u3002\u6838\u5fc3\u4eae\u70b9\u2014\u2014\u7528\u8bed\u4e49\u56fe\u66ff\u4ee3\u6587\u672c\u2014\u2014\u786e\u5b9e\u76f4\u51fb\u5f53\u524dLLM\u4ee3\u7801\u751f\u6210\u201c\u683c\u5f0f\u5316\u8f93\u51fa\u201d\u7684\u8f6f\u808b\uff0c\u7f16\u8bd1\u5668\u5b9e\u65f6\u6821\u9a8c\u80fd\u5927\u5e45\u964d\u4f4eAgent\u4ea7\u51fa\u7684\u5e7b\u89c9\u7387\uff0c\u540c\u65f6\u8282\u7701Token\u548c\u5185\u5b58\uff0c\u8fd9\u5bf9\u91cd\u5ea6\u4f9d\u8d56Agent\u7684\u56e2\u961f\u662f\u5207\u4e2d\u8981\u5bb3\u7684\u964d\u672c\u65b9\u6848\u3002\u7136\u800c\uff0c\u95ee\u9898\u540c\u6837\u5c16\u9510\uff1a\u7b2c\u4e00\uff0c\u8fd9\u672c\u8d28\u4e0a\u662f\u4e3a\u201cAI\u5f00\u53d1\u8005\u201d\u800c\u975e\u201c\u4eba\u7c7b\u5f00\u53d1\u8005\u201d\u8bbe\u8ba1\u7684\u8bed\u8a00\uff0c\u4eba\u7c7b\u5728\u5ba1\u67e5\u201c\u4ee3\u7801\u6295\u5f71\u201d\u65f6\uff0c\u4ecd\u9700\u8981\u7406\u89e3\u56fe\u7684\u62bd\u8c61\u5c42\u7ea7\uff0c\u5b66\u4e60\u66f2\u7ebf\u4e0d\u4e9a\u4e8e\u65b0\u8bed\u8a00\u672c\u8eab\uff0c\u6240\u8c13\u201c\u53ef\u8bfb\u201d\u662f\u76f8\u5bf9\u800c\u975e\u7edd\u5bf9\uff1b\u7b2c\u4e8c\uff0cVercel\u81ea\u8eab\u751f\u6001\u7ed1\u5b9a\u8fc7\u5f3a\uff0c\u5f00\u53d1\u8005\u4f1a\u62c5\u5fe7\u8fd9\u662f\u5426\u662f\u201c\u9501\u5b9aNext.js\u201d\u7684\u53d8\u76f8\u624b\u6bb5\uff0c\u5bf9\u901a\u7528\u7f16\u7a0b\u9886\u57df\u7684\u6e17\u900f\u529b\u5b58\u7591\uff1b\u7b2c\u4e09\uff0c\u5b9e\u9a8c\u6027\u5b9a\u4f4d\u610f\u5473\u7740API\u548c\u7f16\u8bd1\u5668\u4e0d\u7a33\u5b9a\uff0c\u751f\u4ea7\u73af\u5883\u91c7\u7528\u98ce\u9669\u6781\u9ad8\u3002\u66f4\u5173\u952e\u7684\u662f\uff0c\u5982\u679cAI Agent\u672a\u6765\u8fdb\u5316\u5230\u80fd\u76f4\u63a5\u64cd\u4f5cLLVM IR\u6216WASM\uff0c\u8bed\u4e49\u56fe\u8fd9\u4e00\u4e2d\u95f4\u5c42\u5f88\u53ef\u80fd\u88ab\u8df3\u8fc7\uff0cZero\u7684\u201c\u65b0\u8bed\u8a00\u201d\u8eab\u4efd\u53cd\u800c\u6210\u4e3a\u8d1f\u62c5\u3002\u77ed\u671f\u770b\uff0c\u5b83\u66f4\u50cfVercel\u79c0\u808c\u8089\u7684\u6280\u672f\u6f14\u793a\uff0c\u800c\u975e\u80fd\u6311\u6218Python\u6216TypeScript\u7684\u5b9e\u7528\u5de5\u5177\u3002\u957f\u671f\u4ef7\u503c\u53d6\u51b3\u4e8e\u4e24\u70b9\uff1a\u80fd\u5426\u8131\u79bbVercel\u72ec\u7acb\u6f14\u8fdb\uff0c\u4ee5\u53ca\u80fd\u5426\u5438\u5f15\u6838\u5fc3\u5f00\u6e90\u793e\u533a\u800c\u975e\u4ec5\u9760\u54c1\u724c\u62e5\u8db8\u3002\u76ee\u524d\uff0c\u7406\u667a\u7684\u56e2\u961f\u5e94\u5c06\u5176\u770b\u4f5c\u7814\u7a76\u65b9\u5411\uff0c\u800c\u975e\u5de5\u7a0b\u4f9d\u8d56\u3002\u6295\u7968\u6570127\u914d\u4e00\u6761\u5439\u6367\u8bc4\u8bba\uff0c\u66f4\u50cf\u662f\u4e00\u573a\u88ab\u6d41\u91cf\u9057\u5fd8\u7684\u201c\u7cbe\u795e\u80dc\u5229\u201d\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">Zero<\/span>\n                <\/div>\n<div class=\"comment-content\">Zero is Vercel&#8217;s experimental programming language designed for a world where AI agents write the code. Instead of editing source text, agents query and patch a semantic program graph while the compiler checks every change. Humans simply ask for outcomes, then review readable code projections when needed. Built from the ground up for agentic coding, with token efficiency, fast builds, low memory, and zero dependencies.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>This is awesome Justin! Thanks for hunting it here<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#7<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/HKKJVJPTO6V2R3\" class=\"app-title\">Pawvis<\/a><\/p>\n<div class=\"one-liner\">Control your Mac via camera &#038; train gestures, local &#038; FOSS<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">96<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>Pawvis \u5c06 Mac \u6444\u50cf\u5934\u53d8\u4e3a\u624b\u52bf\u8ffd\u8e2a\u9f20\u6807\uff0c\u65e0\u9700\u989d\u5916\u786c\u4ef6\u5373\u53ef\u5b9e\u73b0\u5149\u6807\u63a7\u5236\u3001\u70b9\u51fb\/\u6eda\u52a8\u53ca\u81ea\u5b9a\u4e49\u52a8\u4f5c\u6620\u5c04\uff0c\u4e3b\u6253\u672c\u5730\u9690\u79c1\u4e0e\u5f00\u6e90\uff0c\u76f4\u51fb\u201c\u6253\u5b57\u4e4b\u5916\u60f3\u7528\u66f4\u76f4\u89c9\u65b9\u5f0f\u64cd\u63a7\u7535\u8111\u201d\u7684\u75db\u70b9\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/72342bfe-8733-4c5c-97b9-9387be498b37.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <video class=\"media-content\" poster=\"https:\/\/ph-files.imgix.net\/ceeb5954-bccc-45d7-8807-92180bcfcc5f.jpeg?auto=format\" data-video-url=\"https:\/\/youtu.be\/xDQwwXdeuUs\"><source src=\"https:\/\/youtu.be\/xDQwwXdeuUs\" type=\"video\/mp4\"><\/video><\/p>\n<div class=\"video-overlay\">\n<div class=\"play-icon\">\u25b6<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Productivity<\/span><br \/>\n            <span class=\"tag\">Developer Tools<\/span><br \/>\n            <span class=\"tag\">GitHub<\/span><br \/>\n            <span class=\"tag\">Apple<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">\u624b\u52bf\u63a7\u5236<\/span><br \/>\n            <span class=\"tag\">\u6444\u50cf\u5934\u9f20\u6807<\/span><br \/>\n            <span class=\"tag\">\u7535\u8111\u63a7\u5236<\/span><br \/>\n            <span class=\"tag\">\u5f00\u6e90\u8f6f\u4ef6<\/span><br \/>\n            <span class=\"tag\">\u82f9\u679c\u751f\u6001<\/span><br \/>\n            <span class=\"tag\">\u672c\u5730\u9690\u79c1<\/span><br \/>\n            <span class=\"tag\">\u667a\u80fd\u4ea4\u4e92<\/span><br \/>\n            <span class=\"tag\">\u6548\u7387\u5de5\u5177<\/span><br \/>\n            <span class=\"tag\">\u65e0\u786c\u4ef6\u5916\u8bbe<\/span><br \/>\n            <span class=\"tag\">\u81ea\u5b9a\u4e49\u624b\u52bf<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u7528\u6237\u4e3b\u8981\u5173\u5207\u4e09\u70b9\uff1a\u5ef6\u8fdf\u4e0e\u7cbe\u51c6\u5ea6\uff08\u8981\u6c42\u7ed9\u51fa\u7aef\u5230\u7aef\u5ef6\u8fdf\u6570\u636e\uff09\u3001\u8bef\u89e6\u4e0e\u89c6\u9891\u901a\u8bdd\u51b2\u7a81\uff08\u662f\u5426\u81ea\u52a8\u6682\u505c\u8ffd\u8e2a\uff09\u3001\u624b\u51fa\u753b\u6846\u540e\u7684\u72b6\u6001\uff08\u70b9\u51fb\u662f\u5426\u91ca\u653e\uff09\u3002\u53e6\u6709\u7528\u6237\u63d0\u51fa iPhone \u4f5c\u6444\u50cf\u5934\u7684\u9700\u6c42\uff0c\u5f00\u53d1\u8005\u5df2\u706b\u901f\u652f\u6301\u3002\u6574\u4f53\u8bc4\u8bba\u8d28\u91cf\u9ad8\uff0c\u5f00\u53d1\u8005\u56de\u590d\u8be6\u5b9e\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                Pawvis \u7684\u4eae\u70b9\u4e0d\u5728\u201c\u624b\u52bf\u8bc6\u522b\u201d\u8fd9\u4e2a\u8001\u6982\u5ff5\uff0c\u800c\u5728\u4e8e\u5b83\u628a\u4e09\u4e2a\u88ab\u884c\u4e1a\u957f\u671f\u5272\u88c2\u7684\u9700\u6c42\u2014\u2014\u9690\u79c1\u3001\u5ef6\u8fdf\u3001\u53ef\u6269\u5c55\u6027\u2014\u2014\u7528\u672c\u5730\u63a8\u7406\u548c\u5f00\u6e90\u534f\u8bae\u7c98\u5408\u5728\u4e86\u4e00\u8d77\u3002\u5f53\u5927\u591a\u6570\u540c\u7c7b\u4ea7\u54c1\u8fd8\u5728\u4e91\u7aef\u8dd1\u6a21\u578b\u3001\u7528\u201c\u5ef6\u8fdf\u6362\u7cbe\u5ea6\u201d\u65f6\uff0cPawvis \u9009\u62e9\u5168\u7aef\u4e0a\u8bbe\u5907\uff0c\u81f3\u5c11\u4ece\u67b6\u6784\u4e0a\u56de\u5e94\u4e86\u201c\u6444\u50cf\u5934\u5e38\u5f00\u201d\u8fd9\u4e00\u573a\u666f\u6700\u6838\u5fc3\u7684\u4fe1\u4efb\u6210\u672c\u3002\u8bc4\u8bba\u4e2d\u7528\u6237\u5bf9\u5ef6\u8fdf\u7684\u8ffd\u95ee\u6781\u5176\u4e13\u4e1a\uff0c\u800c\u5f00\u53d1\u8005\u672a\u7ed9\u51fa\u5b9e\u6d4b\u6570\u636e\uff0c\u8fd9\u662f\u53d1\u5e03\u540e\u5fc5\u987b\u8865\u7684\u4f5c\u4e1a\u2014\u2014\u5426\u5219\u201c\u53ef\u7528\u6027\u201d\u53ea\u662f\u81ea\u6211\u611f\u89c9\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u4ea7\u54c1\u771f\u6b63\u7684\u62a4\u57ce\u6cb3\u4e0d\u662f\u624b\u52bf\u5e93\uff0c\u800c\u662f\u201c\u7528\u6237\u53ef\u8bad\u7ec3\u81ea\u5b9a\u4e49\u624b\u52bf + \u7ed1\u5b9a\u4efb\u610f\u547d\u4ee4\/\u5e94\u7528\u201d\u8fd9\u4e00\u5c42\u53ef\u7f16\u7a0b\u6027\u3002\u5b83\u628a\u8f93\u5165\u8bbe\u5907\u4ece\u56fa\u5b9a\u8303\u5f0f\u53d8\u6210\u53ef\u5851\u7684\u6307\u4ee4\u53d1\u751f\u5668\uff0c\u8fd9\u6bd4\u5355\u7eaf\u7684\u201c\u66ff\u4ee3\u9f20\u6807\u201d\u66f4\u6709\u60f3\u8c61\u7a7a\u95f4\u3002\u4f46\u4ece\u8bc4\u8bba\u53cd\u9988\u770b\uff0c\u8bef\u89e6\u63a7\u5236\uff08\u7279\u522b\u662f\u89c6\u9891\u901a\u8bdd\u573a\u666f\uff09\u4e0e\u624b\u8131\u79bb\u753b\u9762\u65f6\u7684\u72b6\u6001\u4e00\u81f4\u6027\uff0c\u4ecd\u662f\u5b9e\u9645\u4f7f\u7528\u4e2d\u6700\u5927\u7684\u4fe1\u5fc3\u6740\u624b\u3002\u5f00\u53d1\u8005\u7684\u5e94\u5bf9\u662f\u201c\u9ed8\u8ba4\u53ea\u5728\u6b63\u8138+\u5f20\u624b\u65f6\u6fc0\u6d3b\u201d\u7684\u4fdd\u5b88\u7b56\u7565\uff0c\u8fd9\u80fd\u538b\u5236\u8bef\u89e6\uff0c\u5374\u4e5f\u727a\u7272\u4e86\u81ea\u7136\u5ea6\u2014\u2014\u8fd9\u662f\u6240\u6709\u975e\u63a5\u89e6\u5f0f\u8f93\u5165\u7684\u539f\u7f6a\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u53e6\u5916\uff0c\u8bed\u97f3\u63a7\u5236\u4f9d\u8d56 Apple Intelligence\uff0c\u4e14\u9884\u7559\u4e86 Codex\/Claude Code \u7684\u5bf9\u63a5\uff0c\u8bf4\u660e\u5b83\u5e76\u4e0d\u53ea\u60f3\u505a\u4e00\u4e2a\u8f93\u5165\u5916\u8bbe\uff0c\u800c\u662f\u5728\u8bd5\u6c34\u201c\u591a\u6a21\u6001\u4eba\u673a\u4ee3\u7406\u201d\u7684\u5165\u53e3\u3002\u5f00\u6e90 MIT \u6388\u6743\u548c\u5feb\u901f\u54cd\u5e94\u7528\u6237\u9700\u6c42\uff08\u5982 iPhone \u6444\u50cf\u5934\u652f\u6301\uff09\u662f\u793e\u533a\u597d\u611f\u7684\u5173\u952e\u63a8\u624b\uff0c\u4f46\u80fd\u5426\u4ece\u201c\u6781\u5ba2\u73a9\u5177\u201d\u8d70\u5230\u201c\u751f\u4ea7\u5de5\u5177\u201d\uff0c\u53d6\u51b3\u4e8e\u4e24\u4ef6\u4e8b\uff1a\u6b63\u5f0f\u53d1\u5e03\u7cbe\u51c6\u7684\u5ef6\u8fdf\/\u5e27\u7387\u6570\u636e\uff0c\u4ee5\u53ca\u63d0\u4f9b\u4e00\u5957\u5b8c\u6574\u7684\u201c\u624b\u52bf\u6f02\u79fb\u81ea\u6821\u51c6\u201d\u673a\u5236\u3002\u5426\u5219\uff0c\u5b83\u53ef\u80fd\u6c38\u8fdc\u505c\u5728\u201c\u6f14\u793a\u5f88\u9177\uff0c\u65e5\u5e38\u5403\u7070\u201d\u7684\u5c34\u5c2c\u5730\u5e26\u3002\u603b\u4e4b\uff0c\u65b9\u5411\u6b63\u786e\uff0c\u4f46\u5de5\u7a0b\u6df1\u5ea6\u4ecd\u9700\u81ea\u8bc1\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">Pawvis<\/span>\n                <\/div>\n<div class=\"comment-content\">PawVis turns your Mac\u2019s webcam into a hand-tracked mouse, no extra hardware required. Raise your hand and the cursor follows, dip a finger to click, and fold two fingers to scroll. Map gestures to custom actions like window management or any app\/command from a series of common gestures or train your own. Everything runs 100% on-device, and PawVis is free and open source. Enable optional voice control for hands-free commands, or pass computer-use tasks to Codex or Claude Code.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Cheers, Product Hunt!<\/p>\n<p>I&#8217;m Alexandria, the creator of Pawvis. I made Pawvis because I wanted to use my computer the way we&#8217;ve been promised for decades that we would in the future. Pawvis reads your hand through the webcam and lets your control your mouse, manage windows, and bind custom actions to any gesture (even user-trained).<\/p>\n<p>Dip a finger to click, fold middle and ring finger in like you&#8217;re slinging web pages up and down to scroll, dip your pinky in to right click &#8211; these are the initial primitives but only the start, and all tracking is performed on-device with code you can read\/clone\/build yourself from the open source repo.<\/p>\n<p>While I&#8217;ve seen other concepts for hand\/gesture tracking through video and voice control none had hit the mark of where I felt that technology could go from a usability and extensibility standpoint.<\/p>\n<p>A good input mechanism needs to be frictionless, it needs to be intuitive, and it needs to be able to adapt to the unique user using it when possible.<\/p>\n<p>Pawvis tackles this through opinionated but configurable gesture mapping, aggressive optimization to make a capable detection process work smoothly and privately on your local machine, and fully user specified custom trained gestures tied to any action you want to make things like window management or launching apps and shortcuts a breeze.<\/p>\n<p>I also added voice control (using Apple Intelligence) to further round out touch points, which supports its own native agent control harness or can hand computer use tasks off to Claude Code or Codex (if you set that up and have them installed).<\/p>\n<p>Pawvis provides the an ideal blend of utility, technology, and whimsy &#8211; and I hope you all enjoy using it as much as I have! Let me know if you have any thoughts or questions, and feel free to clone it (it&#8217;s open-source MIT licensed) or open any PRs\/issues you think might take it to the next level.<\/p>\n<p>Excelsior,<\/p>\n<p>Alexandria<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@heresalexandria\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@heresalexandria<\/a>&nbsp;Great!<\/p>\n<p>How&#8217;d you tune it to feel precise instead of laggy\/twitchy like most webcam hand-tracking demos?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@heresalexandria\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@heresalexandria<\/a>&nbsp;The &#8220;camera never sends a frame anywhere&#8221; line is the right promise, and on-device is the only way this is usable at all. The number I&#8217;d want on the page before trying it as a daily driver: end-to-end<br \/>latency from hand movement to cursor movement, and at what frame rate. A webcam pipeline has a floor of roughly one capture frame plus inference (at 30 fps that&#8217;s 33 ms before anything else) which is fine for gestures and rough for pointing. Have you measured it? Even a rough &#8220;about N ms on an M-series Mac&#8221; would make the pitch more credible, not less.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>@heresalexandria The phone camera trick solves my whole desk situation, trying that tonight. Thanks for the properly thorough answer, and congrats on the launch!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@yelyzaveta_kibets\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@yelyzaveta_kibets<\/a>&nbsp;I love it! Thank you and of course, hope you have as much fun using it as I have \ud83d\ude42<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>@heresalexandria Scrolling by slinging pages around like a web shooter sounds genuinely fun haha. What happens when my hand drops out of frame mid drag though, does the click just release wherever the cursor happens to be? My webcam sits at a weird angle so half my desk is out of shot.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@yelyzaveta_kibets\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@yelyzaveta_kibets<\/a>&nbsp;for sure, I genuinely appreciate an element of whimsy in novel applications of emerging technology!<\/p>\n<\/p>\n<p>So it adjusts &#8220;reach&#8221; automatically to account for being able to move the cursor around anywhere on your screen (and a bit beyond for scrolling\/dragging) given the range of what your camera can see, but you can also adjust this manually if you find it isn&#8217;t tuned quite right. When you genuinely do drop your hand out of frame, it&#8217;ll release\/stop controlling your cursor.<\/p>\n<\/p>\n<p>It sounds like the way your camera is facing, you might be able to benefit from using your phone&#8217;s camera rather than webcam (a feature I just added thanks to <a href=\"https:\/\/www.producthunt.com\/@elias_iturri\" data-node-type=\"mention\" data-mention-type=\"user\" data-mention-id=\"elias_iturri\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@elias_iturri<\/a>&#8216;s comment in this thread), which would let you position it more ideally &#8211; the best results come from it looking head on at you from as close as you can get to the perspective of the monitor(s) you&#8217;re looking at looking straight at you.<\/p>\n<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/162adbbe-80de-4a8a-91e3-111bdfe660aa.png?auto=compress,format&amp;codec=mozjpeg&amp;cs=strip\" style=\"max-width: 100%\"><\/p>\n<p>Please let me know if you hit any snags or have other questions \ud83d\ude42<\/p>\n<\/p>\n<p>Excelsior,<\/p>\n<p>Alexandria<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Does it work well using your iPhone as a camera?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@elias_iturri\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@elias_iturri<\/a>&nbsp;that&#8217;s a great question! It didn&#8217;t support iPhone camera, but thanks to your comment I&#8217;ve added it and tested &#8211; it works pretty well, although I&#8217;d advise disabling or loosening the &#8220;Only control while you face the screen&#8221; setting when using an iPhone or any other camera not attached to the screen(s) you&#8217;re looking at:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/59ad3c7e-5639-4c5f-be95-db09a039195a.png?auto=compress,format&amp;codec=mozjpeg&amp;cs=strip\" style=\"max-width: 100%\"><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/f924a65f-05ab-422e-9336-d51e0934996a.png?auto=compress,format&amp;codec=mozjpeg&amp;cs=strip\" style=\"max-width: 100%\"><\/p>\n<p>Let me know if there&#8217;s anything else you&#8217;d like to see in this or if you hit any snags.<\/p>\n<\/p>\n<p>Excelsior,<\/p>\n<p>Alexandria<\/p>\n<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>local processing is the right call for something that&#8217;s watching you through the camera all the time. curious about the false-positive side though &#8211; if I&#8217;m on a video call and gesture naturally while talking (pointing at something, raising a hand to make a point), does Pawvis pick that up as a click\/scroll command since it&#8217;s presumably still watching in the background, or is there some way to pause tracking specifically for calls without fully quitting the app<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@galdayan\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@galdayan<\/a>&nbsp;absolutely, local was key not only for privacy but frankly speed for a feature you need running as quickly and efficiently as possible to reduce interaction friction.<\/p>\n<p>Addressing false positives was the most fun part of the product development exercise here, ultimately addressed largely through ensuring gestures that perform actions are distinct as well as highly customizable and user-trainable.<\/p>\n<p>By default, it only moves the cursor when you&#8217;re looking directly the screen with an open upward facing palm in view (with adjustable sensitivity for all triggers). A click is registered by dipping just your pointer finger down towards your palm (as if clicking an invisible mouse in the air, but exaggerated) with the rest of the palm still open\/splayed &#8211; a relatively unique motion.<\/p>\n<p>All default tracking gestures were designed around the principle that they should start from the open palm and be fairly intentional movements &#8211; right click defaults to dipping your pinky in similarly to ensure maximum error boundary from other finger tracking, and scroll is triggered by dipping middle and ring finger in (sort of like you&#8217;re a superhero shooting a web while scrolling websites).<\/p>\n<p>Tracking is paused any time an open facing palm or face looking at the screen aren&#8217;t detected (with configurability for use cases like broader angle of acceptability if you have to look across several external desktops to the left\/right).<\/p>\n<p>And finally, the fully user-trainable custom gestures (and out-of-the-box custom gestures like &#8220;shaka&#8221;) can be as unique as your imagination allows, letting you bind motion that would conceivably never (or at least nearly never) occur without intention.<\/p>\n<p>Let me know if that raises any other questions and hope you have fun using the app!<\/p>\n<p>Excelsior,<br \/>Alexandria<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#8<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/JPL2L2XFP7HO77\" class=\"app-title\">KerasFormers<\/a><\/p>\n<div class=\"one-liner\">Keras 3 collection of pretrained models<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">92<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>KerasFormers \u662f\u4e00\u4e2a\u57fa\u4e8e\u7eaf Keras 3 \u7684\u9884\u8bad\u7ec3 transformer \u6a21\u578b\u5e93\uff0c\u8986\u76d6 60+ \u89c6\u89c9\u3001\u8bed\u97f3\u3001\u5927\u8bed\u8a00\u4e0e\u591a\u6a21\u6001\u67b6\u6784\uff0c\u652f\u6301 JAX\u3001PyTorch\u3001TensorFlow \u4e09\u540e\u7aef\u4e00\u952e\u5207\u6362\uff0c\u5e76\u5185\u7f6e Hugging Face \u6743\u91cd\u8f6c\u6362\u4e0e\u6570\u503c\u4e00\u81f4\u6027\u6821\u9a8c\uff0c\u89e3\u51b3 Keras 3 \u7528\u6237\u201c\u6a21\u578b\u96be\u627e\u3001\u8f6c\u6362\u96be\u5199\u3001\u8de8\u540e\u7aef\u96be\u8dd1\u201d\u7684\u6838\u5fc3\u75db\u70b9\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/6d169073-cc72-4d17-a89f-9b4996249638.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/81b8f2d4-1ba4-42c5-a736-6e2dc3434974.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/15d4668c-e6c4-4eab-8df5-cb509f8be36d.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Developer Tools<\/span><br \/>\n            <span class=\"tag\">Artificial Intelligence<\/span><br \/>\n            <span class=\"tag\">GitHub<\/span><br \/>\n            <span class=\"tag\">Tech<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Keras 3<\/span><br \/>\n            <span class=\"tag\">\u9884\u8bad\u7ec3\u6a21\u578b\u5e93<\/span><br \/>\n            <span class=\"tag\">Transformer<\/span><br \/>\n            <span class=\"tag\">\u591a\u540e\u7aef\u652f\u6301<\/span><br \/>\n            <span class=\"tag\">Hugging Face \u6743\u91cd\u8f6c\u6362<\/span><br \/>\n            <span class=\"tag\">\u6a21\u578b\u79fb\u690d<\/span><br \/>\n            <span class=\"tag\">\u89c6\u89c9\u6a21\u578b<\/span><br \/>\n            <span class=\"tag\">\u5927\u8bed\u8a00\u6a21\u578b<\/span><br \/>\n            <span class=\"tag\">\u591a\u6a21\u6001<\/span><br \/>\n            <span class=\"tag\">\u5f00\u6e90\u5de5\u5177<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u5f00\u53d1\u8005\u81ea\u8ff0\u9879\u76ee\u6e90\u4e8e\u201cHugging Face \u6a21\u578b\u5728 Keras 3 \u4e2d\u96be\u4ee5\u76f4\u63a5\u4f7f\u7528\u201d\u7684\u75db\u70b9\uff0c\u5f3a\u8c03\u4ece\u67b6\u6784\u5c42\u9762\u5b9e\u73b0\u771f\u6b63\u540e\u7aef\u65e0\u5173\uff0c\u800c\u975e\u7b80\u5355\u5305\u88c5 PyTorch \u4ee3\u7801\u3002\u7528\u6237 gitesh_chawda \u5173\u6ce8 channels_first \u5168\u5c40\u914d\u7f6e\u5bf9 13 \u4e2a SegFormer \u53d8\u4f53\u6570\u503c\u4e00\u81f4\u6027\uff08\u4e0a\u6e38\u6743\u91cd\u4e3a channels_last\uff09\u7684\u5f71\u54cd\uff0c\u5c5e\u4e8e\u9ad8\u8d28\u91cf\u6280\u672f\u62f7\u95ee\uff0c\u5b98\u65b9\u672a\u6b63\u9762\u56de\u5e94\uff0c\u4f46\u95ee\u9898\u6307\u5411\u8f6c\u6362\u673a\u5236\u7684\u6df1\u5c42\u9c81\u68d2\u6027\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                KerasFormers \u7684\u4ef7\u503c\u4e0d\u5728\u201c\u53c8\u591a\u4e86\u4e00\u4e2a\u6a21\u578b\u5e93\u201d\uff0c\u800c\u5728\u5b83\u8bd5\u56fe\u586b\u5e73 Keras 3 \u751f\u6001\u4e0e Hugging Face \u4e4b\u95f4\u7684\u9e3f\u6c9f\u2014\u2014\u8fd9\u4e2a\u9e3f\u6c9f\u771f\u5b9e\u4e14\u81f4\u547d\uff1aKeras 3 \u7684\u8de8\u540e\u7aef\u627f\u8bfa\u5f88\u6027\u611f\uff0c\u4f46\u5b9e\u9645\u7528\u8d77\u6765\uff0c\u591a\u6570\u9884\u8bad\u7ec3\u6a21\u578b\u53ea\u80fd\u9760\u793e\u533a\u96f6\u6563\u590d\u523b\u6216\u81ea\u5199\u9002\u914d\u5c42\uff0c\u5de5\u7a0b\u6210\u672c\u6781\u9ad8\u3002KerasFormers \u7528 60+ \u67b6\u6784\u3001\u6743\u91cd\u8f6c\u6362\u4e0e parity validation \u76f4\u63a5\u5207\u4e2d\u8981\u5bb3\uff0c\u76f8\u5f53\u4e8e\u7ed9 Keras 3 \u7528\u6237\u914d\u4e86\u4e00\u628a\u201c\u5f00\u7bb1\u5373\u7528\u201d\u7684\u94a5\u5319\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u4f46\u51b7\u9759\u770b\uff0c\u5176\u201c\u7eaf Keras 3 \u5b9e\u73b0\u201d\u65e2\u662f\u5356\u70b9\u4e5f\u662f\u67b7\u9501\u3002\u7528\u6237\u8bc4\u8bba\u4e2d\u5173\u4e8e channels_first \u5168\u5c40\u914d\u7f6e\u5bf9 SegFormer \u6570\u503c\u4e00\u81f4\u6027\u7684\u8d28\u7591\uff0c\u66b4\u9732\u4e86\u4e00\u4e2a\u6df1\u5c42\u9690\u60a3\uff1aKeras 3 \u7684 config \u7ea7\u540e\u7aef\u5f00\u5173\u53ef\u80fd\u5f71\u54cd\u5e95\u5c42\u5f20\u91cf\u5e03\u5c40\uff0c\u800c Hugging Face \u4e0a\u6e38\u6743\u91cd\u666e\u904d\u6309 channels_last \u8bad\u7ec3\/\u4fdd\u5b58\uff0c\u5355\u7eaf\u7ffb\u8f6c\u5168\u5c40 flag \u662f\u5426\u80fd\u4fdd\u8bc1\u6240\u6709\u6a21\u578b\uff08\u5c24\u5176\u89c6\u89c9\u6a21\u578b\uff09\u7684\u9010\u5c42\u6570\u503c\u5bf9\u9f50\uff0c\u8fd9\u9700\u8981\u7cfb\u7edf\u6027\u9a8c\u8bc1\uff0c\u800c\u975e\u4e00\u53e5\u201c\u5185\u7f6e parity validation\u201d\u5c31\u80fd\u642a\u585e\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u53e6\u5916\uff0c\u9879\u76ee\u4ecd\u7531\u4e2a\u4eba\u9a71\u52a8\uff0c\u6a21\u578b\u6570\u91cf\u4e0e\u7ef4\u62a4\u901f\u5ea6\u96be\u4ee5\u6297\u8861 Hugging Face \u7684\u793e\u533a\u6d2a\u6d41\u3002\u82e5\u8f6c\u6362\u5de5\u5177\u65e0\u6cd5\u505a\u5230\u81ea\u52a8\u5316\u3001\u53ef\u6269\u5c55\u3001\u4e14\u5bf9\u4efb\u610f\u65b0\u67b6\u6784\u5373\u65f6\u8ddf\u8fdb\uff0c\u90a3\u5b83\u6700\u7ec8\u53ea\u4f1a\u6210\u4e3a\u201c\u5c11\u6570\u6a21\u578b\u7684\u624b\u5de5\u7cbe\u4fee\u54c1\u201d\uff0c\u800c\u975e\u751f\u6001\u57fa\u5ea7\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u771f\u6b63\u7684\u4ef7\u503c\u5728\u4e8e\u5b83\u9a8c\u8bc1\u4e86\u4e00\u6761\u8def\u5f84\uff1aKeras 3 \u751f\u6001\u53ef\u4ee5\u901a\u8fc7\u62e5\u62b1 HF \u6743\u91cd + \u81ea\u7814\u9002\u914d\u5c42\u5b9e\u73b0\u201c\u8f6f\u517c\u5bb9\u201d\uff0c\u800c\u4e0d\u662f\u903c\u7528\u6237\u91cd\u8bad\u6216\u5199\u80f6\u6c34\u4ee3\u7801\u3002\u82e5 KerasFormers \u80fd\u5f00\u653e\u81ea\u52a8\u8f6c\u6362\u811a\u672c\u3001\u63d0\u4f9b\u683c\u5f0f\u8bf4\u660e\u6587\u6863\uff0c\u5e76\u8ba9\u793e\u533a\u8d21\u732e\u65b0\u67b6\u6784\uff0c\u5b83\u6709\u671b\u6210\u4e3a Keras 3 \u7684\u201cHugging Face \u6865\u5934\u5821\u201d\u3002\u4f46\u524d\u63d0\u662f\uff0c\u5b83\u5f97\u5148\u628a channels_first \u8fd9\u7c7b\u5e95\u5c42\u9677\u9631\u5904\u7406\u5e72\u51c0\u2014\u2014\u5426\u5219\uff0c\u6240\u8c13\u201c\u8de8\u540e\u7aef\u4e00\u81f4\u201d\u5c31\u662f\u4e00\u53e5\u7a7a\u8bdd\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">KerasFormers<\/span>\n                <\/div>\n<div class=\"comment-content\">Pretrained transformer models in pure Keras 3, runnable on JAX, PyTorch and TensorFlow.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">I started KerasFormers to solve a problem I kept running into: many modern models were available in Hugging Face, but using them in Keras 3, especially across TensorFlow, JAX, and PyTorch backends, often meant writing or adapting a lot of model-specific code.<\/p>\n<p>What started as a small experiment grew into a library covering 60+ vision, speech, LLM, and VLM architectures, with Hugging Face to Keras weight conversion and parity validation built in.<\/p>\n<p>The biggest challenge was making the implementations genuinely backend-agnostic rather than just wrapping existing PyTorch code. That meant digging into model architectures, tensor layouts, Keras 3 ops, checkpoint formats, and numerical parity.<\/p>\n<p>KerasFormers is still evolving, and I\u2019m continuing to add models, improve conversions, and make the ecosystem easier to use. I\u2019d love feedback on what models or capabilities would be most useful next.<\/p><\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@gitesh_chawda\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@gitesh_chawda<\/a>&nbsp;love that channels_first is supported natively via keras.config. does flipping that global flag mess with the numerical parity on the 13 segformer variants since upstream checkpoints are usually channels_last?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#9<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/W2ZLZ4HQ2AODJR\" class=\"app-title\">Agents Never Sleep<\/a><\/p>\n<div class=\"one-liner\">Agents keep running with the lid closed<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">88<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>\u4e00\u6b3emacOS\u83dc\u5355\u680f\u5c0f\u5de5\u5177\uff0c\u8ba9\u4f60\u5728\u5408\u4e0a\u7b14\u8bb0\u672c\u76d6\u5b50\u540e\uff0cAI\u4efb\u52a1\uff08\u5982\u8bad\u7ec3\u3001\u63a8\u7406\u3001\u81ea\u52a8\u5316\u811a\u672c\uff09\u4f9d\u7136\u6301\u7eed\u8fd0\u884c\uff0c\u544a\u522b\u201c\u534a\u5f00\u76d6\u5b50\u201d\u6216\u5230\u5904\u627e\u7535\u6e90\u7684\u6298\u817e\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/01d52ee3-c191-4f63-b00d-da3d05d5cfd7.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/434431dc-4b13-4765-bdb5-b2d40bba2891.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/a4fa7313-e156-41be-a2fc-56c6f5e8e329.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/eaddc885-7a69-4ed3-896b-3a5ef60a098c.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <video class=\"media-content\" poster=\"https:\/\/ph-files.imgix.net\/fa665c76-327b-4fb2-8866-b7c8c669ed79.jpeg?auto=format\" data-video-url=\"https:\/\/youtu.be\/Y8zxgflBQfI\"><source src=\"https:\/\/youtu.be\/Y8zxgflBQfI\" type=\"video\/mp4\"><\/video><\/p>\n<div class=\"video-overlay\">\n<div class=\"play-icon\">\u25b6<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Developer Tools<\/span><br \/>\n            <span class=\"tag\">Artificial Intelligence<\/span><br \/>\n            <span class=\"tag\">Menu Bar Apps<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">macOS\u5de5\u5177<\/span><br \/>\n            <span class=\"tag\">\u83dc\u5355\u680f\u5e94\u7528<\/span><br \/>\n            <span class=\"tag\">\u9632\u4f11\u7720<\/span><br \/>\n            <span class=\"tag\">AI\u5f00\u53d1<\/span><br \/>\n            <span class=\"tag\">\u5408\u76d6\u8fd0\u884c<\/span><br \/>\n            <span class=\"tag\">\u4efb\u52a1\u9a7b\u7559<\/span><br \/>\n            <span class=\"tag\">\u6548\u7387\u5de5\u5177<\/span><br \/>\n            <span class=\"tag\">\u5f00\u53d1\u8005\u5de5\u5177<\/span><br \/>\n            <span class=\"tag\">\u7cfb\u7edf\u63a7\u5236<\/span><br \/>\n            <span class=\"tag\">\u7535\u6c60\u7ba1\u7406<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u7528\u6237\u666e\u904d\u8ba4\u53ef\u201c\u5408\u76d6\u4e0d\u7761\u201d\u786e\u5b9e\u89e3\u51b3\u771f\u5b9e\u75db\u70b9\uff08\u5982\u57ab\u4fbf\u5229\u8d34\u7684\u5c34\u5c2c\uff09\uff0c\u4f46\u8d28\u7591\u5176\u4e0e\u7ec8\u7aef`caffeinate`\u53ca\u8001\u724c\u5de5\u5177Amphetamine\u7684\u5b9e\u8d28\u5dee\u5f02\u3002\u5f00\u53d1\u8005\u56de\u5e94\uff1a\u6280\u672f\u5c42\u9762\u65e0\u521b\u65b0\uff0c\u672c\u8d28\u662f\u66f4\u53cb\u597d\u7684\u5f00\u5173\u5207\u6362\u754c\u9762\uff0c\u5e76\u6307\u51faAmphetamine\u4f53\u9a8c\u201c\u7b28\u91cd\u201d\uff0c\u4e14FAQ\u4e2d\u5df2\u516c\u5f00\u7ec8\u7aef\u547d\u4ee4\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                \u8fd9\u6b3e\u4ea7\u54c1\u7684\u672c\u8d28\uff0c\u662f\u7ed9\u7cfb\u7edf\u539f\u751f\u7684`caffeinate`\u547d\u4ee4\u5957\u4e86\u4e00\u5c42\u201c\u53ef\u7231\u83dc\u5355\u680f\u76ae\u80a4\u201d\u3002\u4ece\u5546\u4e1a\u4ef7\u503c\u770b\uff0c\u5b83\u8e29\u4e2d\u4e86\u4e24\u4e2a\u7cbe\u51c6\u5fc3\u7406\uff1a\u4e00\u662fAI\u5f00\u53d1\u8005\u5bf9\u201c\u4efb\u52a1\u4e2d\u65ad\u201d\u7684\u6df1\u5ea6\u6050\u60e7\u2014\u2014\u5408\u76d6\u5373\u65ad\u8bad\u7684\u4ee3\u4ef7\u8fdc\u9ad8\u4e8e\u51e0\u7f8e\u5143\uff1b\u4e8c\u662f\u5bf9\u201c\u6781\u7b80\u4f18\u96c5\u201d\u7684\u4f2a\u9700\u6c42\u2014\u2014\u660e\u77e5\u7ec8\u7aef\u4e00\u884c\u5b57\u80fd\u641e\u5b9a\uff0c\u4f46\u5c31\u662f\u4e0d\u60f3\u8bb0\u3001\u4e0d\u60f3\u6572\u3002\u8fd9\u50cf\u6781\u4e86\u5f53\u5e74\u201cAmphetamine\u201d\u7684\u8def\u5f84\uff0c\u4f46\u95ee\u9898\u5728\u4e8e\uff1aAmphetamine\u5df2\u514d\u8d39\u4e14\u529f\u80fd\u5b8c\u6574\uff0c\u5305\u62ec\u7535\u6c60\u9608\u503c\u3001\u5b9a\u65f6\u5524\u9192\u7b49\u9ad8\u7ea7\u7279\u6027\u3002Agents Never Sleep\u4ec5\u9760\u201c\u66f4\u7b80\u5355\u201d\u548c\u201c\u5c0f\u52a8\u7269\u56fe\u6807\u201d\u62a4\u57ce\u6cb3\u6781\u6d45\uff0c\u7528\u6237\u7c98\u6027\u582a\u5fe7\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u771f\u6b63\u6709\u4ef7\u503c\u7684\u90e8\u5206\uff0c\u662f\u5b83\u65e0\u610f\u95f4\u66b4\u9732\u7684\u884c\u4e1a\u7f3a\u53e3\uff1aAI\u5f00\u53d1\u8005\u7684\u7269\u7406\u5de5\u4f5c\u6d41\uff08\u5408\u76d6\u3001\u79fb\u52a8\u3001\u7eed\u822a\u7ba1\u7406\uff09\u4ecd\u9760\u571f\u529e\u6cd5\u89e3\u51b3\u3002\u5982\u679c\u4ea7\u54c1\u540e\u7eed\u80fd\u53d1\u5c55\u51fa\u201c\u6309\u8fdb\u7a0b\/\u9879\u76ee\u81ea\u52a8\u5207\u6362\u7761\u7720\u7b56\u7565\u201d\uff0c\u6216\u8054\u52a8\u5145\u7535\u9608\u503c\u3001\u5916\u63a5\u663e\u793a\u5668\u72b6\u6001\u5f62\u6210\u667a\u80fd\u7535\u6e90\u7b56\u7565\uff0c\u624d\u7b97\u4ece\u201c\u547d\u4ee4\u884c\u5c01\u88c5\u201d\u8fdb\u5316\u4e3a\u201cAI\u4f5c\u4e1a\u8c03\u5ea6\u5668\u201d\u3002\u76ee\u524d88\u7968\u7684\u9996\u53d1\u70ed\u5ea6\u5f88\u5927\u7a0b\u5ea6\u4e0a\u6e90\u4e8e\u201c\u75db\u70b9\u5171\u9e23\u201d\uff0c\u800c\u975e\u4ea7\u54c1\u58c1\u5792\u3002\u5efa\u8bae\u5f00\u53d1\u8005\u5c3d\u5feb\u52a0\u5165\u201c\u57fa\u4e8e\u524d\u53f0\u5e94\u7528\u6216\u7f51\u7edc\u6d3b\u52a8\u81ea\u52a8\u542f\u7528\/\u7981\u7528\u201d\u7684\u89c4\u5219\u5f15\u64ce\uff0c\u5426\u5219\u5f53\u7528\u6237\u53d1\u73b0\u7ec8\u7aef\u4e09\u884c\u4ee3\u7801\u53ef\u590d\u73b0\u540e\uff0c\u5378\u8f7d\u53ea\u662f\u65f6\u95f4\u95ee\u9898\u3002\u4e00\u53e5\u8bdd\u603b\u7ed3\uff1a\u89e3\u51b3\u4e86\u771f\u75db\u70b9\uff0c\u4f46\u6ca1\u5efa\u7acb\u771f\u58c1\u5792\uff0c\u50cf\u4e00\u628a\u7cbe\u81f4\u7684\u87ba\u4e1d\u5200\u2014\u2014\u87ba\u4e1d\u62e7\u5b8c\uff0c\u4f60\u5c31\u60f3\u4e0d\u8d77\u5b83\u4e86\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">Agents Never Sleep<\/span>\n                <\/div>\n<div class=\"comment-content\">A macOS menu bar app that keeps your agents AI awake even if with lid closed. No more keeping your laptop half-open or carrying it around in weird ways. Stop this madness \ud83d\ude45\u200d\u2642\ufe0f, close the lid.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Hi product hunt, thanks everyone for the support.<\/p>\n<p>I built Agents Never Sleep to help me control the sleep behaviour on my Mac without getting lost in settings or needing a terminal.<\/p>\n<p>Made a cute little friend in the menu bar as a bonus!<\/p>\n<p>Glad to see i&#8217;m not the only one looking for this \ud83d\ude42<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>4<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>I&#8217;ve done the &#8220;prop the lid open a centimeter with a folded sticky note&#8221; move more times than I&#8217;d like to admit, so this solves a real problem. curious how this is different from just running caffeinate in a loop or using something like Amphetamine though, is the &#8220;control the sleep behaviour&#8221; part doing something smarter than just preventing sleep, like actually distinguishing which processes count as an active agent vs idle background stuff<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@galdayan\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@galdayan<\/a>&nbsp;caffeinate prevents the screen from dimming, but it doesn&#8217;t prevent the sleeping when the lid gets closed. Amphetamine can get you there, but I found it quite junky to use. Just to note &#8211; all of this can be achieved via terminal commands, and I am in fact showing them in the FAQ section on the website.<\/p>\n<p>I found that It gets annoying over time and I simply got tired of doing it over and over again. Nothing smart is going on with the sleep prevention implementation, it&#8217;s just a more convenient way to flip the modes back and forth which I end up doing all the time.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#10<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/65G5SQ6CHMW3B2\" class=\"app-title\">Port Radar for macOS<\/a><\/p>\n<div class=\"one-liner\">An AI port manager for your Mac. <\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">80<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>Port Radar \u662f\u4e00\u6b3e\u539f\u751f macOS \u83dc\u5355\u680f\u5e94\u7528\uff0c\u7528\u81ea\u7136\u8bed\u8a00\u5b9e\u65f6\u5c55\u793a\u7aef\u53e3\u5360\u7528\u8fdb\u7a0b\uff0c\u5e76\u652f\u6301\u4e00\u952e\u505c\u6b62\uff0c\u89e3\u51b3\u5f00\u53d1\u8005\u201c\u7aef\u53e3\u88ab\u5360\u5374\u4e0d\u77e5\u662f\u4f55\u7269\u3001\u80fd\u5426\u5b89\u5168\u5173\u95ed\u201d\u7684\u65e5\u5e38\u75db\u70b9\uff0c\u8fd8\u80fd\u4e00\u952e\u751f\u6210 Cloudflare \u96a7\u9053\u5206\u4eab\u672c\u5730\u7ad9\u70b9\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/1bd898f4-5c56-4a63-98fc-801533719cde.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/873570c4-51e0-431f-ba53-f240d99af9b8.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/0c11bab3-0b1d-46c1-9751-577469e95cfc.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/7a92d35b-23cd-44fd-be9e-362a2c56cdd0.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/a7dcb1ff-37d1-4a42-836d-a966657096d7.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/e99c2c27-9281-46df-9aea-bbb771dac3eb.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Mac<\/span><br \/>\n            <span class=\"tag\">Developer Tools<\/span><br \/>\n            <span class=\"tag\">Artificial Intelligence<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">macOS\u83dc\u5355\u680f\u5de5\u5177<\/span><br \/>\n            <span class=\"tag\">\u7aef\u53e3\u7ba1\u7406<\/span><br \/>\n            <span class=\"tag\">\u5f00\u53d1\u8005\u5de5\u5177<\/span><br \/>\n            <span class=\"tag\">\u672c\u5730\u8fdb\u7a0b\u76d1\u63a7<\/span><br \/>\n            <span class=\"tag\">AI\u89e3\u91ca<\/span><br \/>\n            <span class=\"tag\">\u6570\u636e\u9690\u79c1<\/span><br \/>\n            <span class=\"tag\">\u4e00\u952e\u505c\u6b62\u8fdb\u7a0b<\/span><br \/>\n            <span class=\"tag\">Cloudflare\u96a7\u9053<\/span><br \/>\n            <span class=\"tag\">\u672c\u5730\u5f00\u53d1\u6548\u7387<\/span><br \/>\n            <span class=\"tag\">Apple Intelligence<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u7528\u6237\u5173\u6ce8\u70b9\u96c6\u4e2d\u5728\u201cAI \u89e3\u91ca\u5b89\u5168\u505c\u6b62\u201d\u4e0e\u201c\u8bbe\u5907\u517c\u5bb9\u6027\u201d\u4e0a\u3002\u6709\u7528\u6237\u95ee\u4e3a\u4f55\u4e0d\u76f4\u63a5\u5217\u7aef\u53e3\u6e05\u5355\u800c\u8981\u505aAI\u89e3\u91ca\uff1b\u53e6\u4e00\u5173\u952e\u95ee\u9898\u6307\u51fa Apple Intelligence \u4ec5\u652f\u6301 M \u7cfb\u5217\u82af\u7247\uff0c\u8d28\u7591\u65e7\u6b3e Intel Mac \u4e0a\u8be5\u529f\u80fd\u5982\u4f55\u5904\u7406\u3002\u5f00\u53d1\u8005\u56de\u5e94\uff1a\u6838\u5fc3\u76d1\u63a7\u5b8c\u5168\u672c\u5730\uff0cAI \u529f\u80fd\u5728\u65e7\u786c\u4ef6\u4e0a\u5173\u95ed\uff0c\u4e0d\u4f1a\u4e0a\u4f20\u6570\u636e\uff0c\u5e76\u8ba1\u5212\u589e\u52a0\u542f\u53d1\u5f0f\u672c\u5730\u56de\u9000\u65b9\u6848\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                \u8fd9\u6b3e\u5de5\u5177\u5207\u4e2d\u4e86\u524d\u7aef\u4e0e\u5168\u6808\u5f00\u53d1\u8005\u6700\u65e5\u5e38\u7684\u201c\u4e09\u79d2\u70e6\u8e81\u70b9\u201d\uff1a`lsof -i:3000` \u8f93\u51fa\u5929\u4e66\uff0c`kill -9` \u53c8\u6015\u8bef\u4f24\u6570\u636e\u5e93\u6216 Docker \u5bb9\u5668\u3002Port Radar \u7684\u4ef7\u503c\u5e76\u4e0d\u5728\u4e8e\u201c\u5217\u51fa\u7aef\u53e3\u201d\uff0c\u800c\u5728\u4e8e\u5c06\u5e95\u5c42\u8f93\u51fa\u7684\u5341\u516d\u8fdb\u5236 PID \u548c\u539f\u751f\u8fdb\u7a0b\u540d\uff0c\u7ffb\u8bd1\u6210\u201c\u8fd9\u662f Vite \u5f00\u53d1\u670d\u52a1\u5668\uff0c\u53ef\u4ee5\u5b89\u5168\u505c\u6b62\u201d\u7684\u51b3\u7b56\u4fe1\u606f\u3002\u8fd9\u672c\u8d28\u4e0a\u662f\u7528 LLM \u505a\u4e86\u4e00\u6b21\u201c\u7cfb\u7edf\u8bed\u4e49\u5c42\u201d\u7684\u5c01\u88c5\uff0c\u5c06 Unix \u54f2\u5b66\u7684\u201c\u7cbe\u786e\u4f46\u6666\u6da9\u201d\u63a8\u5411\u201c\u6a21\u7cca\u4f46\u53cb\u597d\u201d\uff0c\u65b9\u5411\u6b63\u786e\u3002\u4f46\u5fc5\u987b\u6cfc\u51b7\u6c34\uff1a\u5176\u4e00\uff0cApple Intelligence \u7684\u786c\u6027\u95e8\u69db\uff08M \u7cfb\u82af\u7247 + \u6700\u65b0\u7cfb\u7edf\uff09\u610f\u5473\u7740\u5b83\u5728\u5e9e\u5927\u7684 Intel Mac \u5b58\u91cf\u7528\u6237\u7fa4\u4e2d\u57fa\u672c\u9000\u5316\u4e3a\u4e00\u4e2a\u82b1\u54e8\u7684 `lsof` GUI\uff0c\u800c\u5f00\u53d1\u8005\u7684\u56de\u5e94\u201c\u6838\u5fc3\u76d1\u6d4b\u53ef\u7528\u3001AI \u529f\u80fd\u5173\u95ed\u201d\u770b\u4f3c\u5766\u8bda\uff0c\u5b9e\u5219\u6070\u597d\u66b4\u9732\u4e86\u6838\u5fc3\u5356\u70b9\u7684\u8106\u5f31\u6027\u2014\u2014\u6ca1\u4e86 AI \u89e3\u91ca\uff0c\u5b83\u4e0e\u514d\u8d39\u5f00\u6e90\u66ff\u4ee3\u54c1\uff08\u5982 Lona\u3001SwiftBar \u811a\u672c\uff09\u7684\u5dee\u5f02\u5ea6\u9aa4\u964d\u3002\u5176\u4e8c\uff0c\u201c\u5b89\u5168\u505c\u6b62\u201d\u662f\u4e2a\u5f3a\u65ad\u8a00\uff0cLLM \u5728\u89e3\u91ca\u7cfb\u7edf\u8fdb\u7a0b\uff08\u5982 launchd \u6216\u5185\u6838\u6269\u5c55\uff09\u65f6\u4e00\u65e6\u7ed9\u51fa\u9519\u8bef\u5efa\u8bae\uff0c\u4ee3\u4ef7\u662f\u7528\u6237\u684c\u9762\u73af\u5883\u5d29\u6e83\uff0c\u8fd9\u4f1a\u5feb\u901f\u6d88\u89e3\u4fe1\u4efb\u3002\u5176\u4e09\uff0cCloudflare Tunnel \u529f\u80fd\u867d\u662f\u52a0\u5206\u9879\uff0c\u4f46 macOS \u81ea\u5e26 `ssh -R` \u6216 `ngrok` \u7684\u514d\u8d39\u989d\u5ea6\u5df2\u80fd\u8986\u76d6\u5927\u591a\u6570\u573a\u666f\uff0c\u6b64\u5904\u66f4\u591a\u662f\u201c\u987a\u624b\u96c6\u6210\u201d\u800c\u975e\u9769\u547d\u3002\u603b\u4f53\u800c\u8a00\uff0cPort Radar \u662f\u7cbe\u81f4\u7684\u5c0f\u4f17\u6548\u7387\u5de5\u5177\uff0c\u5b83\u7684\u62a4\u57ce\u6cb3\u662f\u201cAI \u89e3\u91ca\u201d\u7684\u4f53\u9a8c\uff0c\u800c\u4e0d\u662f\u6280\u672f\u58c1\u5792\u3002\u5efa\u8bae\u56e2\u961f\u5c3d\u5feb\u8865\u9f50 Intel Mac \u7684\u672c\u5730\u542f\u53d1\u5f0f\u56de\u9000\uff0c\u5e76\u8003\u8651\u5c06\u201cAI \u89e3\u91ca\u201d\u62c6\u5206\u8ba2\u9605\u5236\uff0c\u5426\u5219\u6781\u6613\u88ab\u5927\u5382\uff08\u5982 CleanMyMac \u6216 JetBrains\uff09\u7684\u540c\u7c7b\u529f\u80fd\u964d\u7ef4\u6253\u51fb\u3002\u76ee\u524d80\u7968\u7684\u51b7\u542f\u52a8\u6210\u7ee9\uff0c\u53cd\u6620\u7684\u8fd8\u662f\u201c\u5c0f\u800c\u7f8e\u201d\u7684\u5b9a\u4f4d\uff0c\u8ddd\u79bb\u201c\u5fc5\u5907\u5de5\u5177\u201d\u8fd8\u6709\u4e00\u6bb5\u5173\u952e\u8ddd\u79bb\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">Port Radar for macOS<\/span>\n                <\/div>\n<div class=\"comment-content\">Port Radar is a native macOS menu bar app that shows you exactly what\u2019s running on your ports\u2014in plain English. Spot Vite, Next.js, Docker, forgotten apps, and anything else quietly using resources, then stop it with a single click. Apple Intelligence answers &#8220;what is this, is it safe to stop?&#8221; right on your device, so nothing leaves your Mac. Plus one click Cloudflare tunnels to share a local site as a live link.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">Hey Product Hunt, <\/p>\n<p>You start a project. Something&#8217;s already using port 3000. You have no idea what, or whether it&#8217;s safe to shut down.<\/p>\n<p>That was my entire week, every week. So I built Port Radar.<br \/>\nIt sits in your Mac menu bar and:<br \/>\n\u2022 Shows every port your Mac is currently running<br \/>\n\u2022 Answers &#8220;what is this, and is it safe to stop?&#8221; using Apple Intelligence, on your device nothing gets uploaded anywhere<br \/>\n\u2022 Stops anything in one click<br \/>\n\u2022 Turns a local site into a live shareable link with a one click Cloudflare tunnel  <\/p>\n<p>No Terminal. No commands to memorize. No cloud.<\/p>\n<p>The AI part is the piece I&#8217;m proudest of, instead of a list of numbers, you get an actual answer, and it never leaves your machine.<\/p><\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@juansebsol\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@juansebsol<\/a>&nbsp;Great Launch Sebastian!<\/p>\n<p>What made &#8220;is this safe to stop&#8221; the feature to nail, over just listing ports?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>the &#8220;never leaves your machine&#8221; part is what would sell me over just running lsof myself. one question on that &#8211; Apple Intelligence needs an M-series chip and a fairly recent macOS version to actually run on-device, so what happens on an older Intel Mac or a machine that isn&#8217;t Apple Intelligence eligible? does it fall back to some simpler heuristic\/lookup for the &#8220;what is this&#8221; explanation, or is that whole feature gated off entirely on unsupported hardware<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@galdayan\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@galdayan<\/a>&nbsp;Good question. On unsupported Macs, the core port\/process monitoring still works exactly the same and stays fully local. The Apple Intelligence-powered explanations are only available on supported Apple Silicon Macs, so on older Intel Macs that specific feature is gated off rather than silently sending anything to a cloud model.<\/p>\n<p>I wanted \u201cnever leaves your machine\u201d to be a hard rule, not something that changes depending on your hardware. I\u2019m looking at adding a local heuristic process lookup fallback for unsupported Macs though, so they can still get useful context without sacrificing that.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#11<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/6MGOSPTJJTKW77\" class=\"app-title\">VeloFiler<\/a><\/p>\n<div class=\"one-liner\">Keyboard-first dual-pane file manager for macOS<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">70<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>VeloFiler \u662f\u4e00\u6b3e\u4e3a macOS \u6253\u9020\u7684\u952e\u76d8\u4f18\u5148\u53cc\u680f\u6587\u4ef6\u7ba1\u7406\u5668\uff0c\u4e13\u4e3a\u9971\u53d7 Finder \u4f4e\u6548\u64cd\u4f5c\u4e4b\u82e6\u3001\u540c\u65f6\u9700\u8981\u9ad8\u9891\u5904\u7406\u672c\u5730\u4e0e\u8fdc\u7a0b\u670d\u52a1\u5668\u6587\u4ef6\u7684\u5f00\u53d1\u8005\u4e0e\u6781\u5ba2\u8bbe\u8ba1\uff0c\u8ba9\u7528\u6237\u5728\u4e0d\u79bb\u5f00\u952e\u76d8\u7684\u60c5\u51b5\u4e0b\u5b9e\u73b0\u6587\u4ef6\u7684\u98de\u901f\u6d41\u8f6c\u4e0e\u5373\u65f6\u9884\u89c8\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/0c77eb0a-1fa7-4b11-90f3-a983c9365d35.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/78f1dc7e-12e2-4e4c-88c1-7a1114539184.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/cd756af2-5fba-4196-a183-7d0a4ce31b0c.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/6a18c305-85f1-46eb-9e05-3d1610da9b9c.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/01209a82-7437-4b18-b6d4-56c7d698d552.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Mac<\/span><br \/>\n            <span class=\"tag\">Productivity<\/span><br \/>\n            <span class=\"tag\">Developer Tools<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">\u6587\u4ef6\u7ba1\u7406\u5668<\/span><br \/>\n            <span class=\"tag\">macOS<\/span><br \/>\n            <span class=\"tag\">\u952e\u76d8\u4f18\u5148<\/span><br \/>\n            <span class=\"tag\">\u53cc\u680f\u754c\u9762<\/span><br \/>\n            <span class=\"tag\">Vim\u98ce\u683c<\/span><br \/>\n            <span class=\"tag\">Rust<\/span><br \/>\n            <span class=\"tag\">GPUI<\/span><br \/>\n            <span class=\"tag\">SSH\/SFTP<\/span><br \/>\n            <span class=\"tag\">\u5feb\u901f\u9884\u89c8<\/span><br \/>\n            <span class=\"tag\">\u5f00\u53d1\u8005\u5de5\u5177<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u7528\u6237\u9ad8\u5ea6\u5173\u6ce8SSH\/SFTP\u529f\u80fd\u7684\u5b9e\u9645\u5ef6\u8fdf\u4f53\u9a8c\uff0c\u8d28\u7591\u7f51\u7edc\u73af\u5883\u4e0b\u952e\u76d8\u64cd\u4f5c\u662f\u5426\u4f1a\u88ab\u5361\u987f\u62d6\u7d2f\uff1b\u540c\u65f6\u8be2\u95ee\u6c99\u76d2\u9650\u5236\u4e0b\u8bc1\u4e66\u5b58\u50a8\u65b9\u5f0f\u53ca\u6743\u9650\u5904\u7406\uff1b\u53e6\u6709\u5f00\u53d1\u8005\u597d\u5947Rust\/GPUI\u7684\u5f00\u53d1\u4f53\u9a8c\uff0c\u5e76\u8d5e\u8d4fApp Store\u539f\u751f\u5b89\u88c5\u7684\u4fe1\u4efb\u611f\uff0c\u4f46\u8ba4\u4e3a\u5ba1\u6838\u8fc7\u7a0b\u662f\u5de8\u5927\u6311\u6218\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                VeloFiler \u7684\u5b9a\u4f4d\u975e\u5e38\u7cbe\u51c6\uff1a\u5b83\u4e0d\u662f\u5728\u8ddf Windows \u7684 Total Commander \u6bd4\u529f\u80fd\u6570\u91cf\uff0c\u800c\u662f\u5728\u8ddf macOS \u7528\u6237\u7684\u201c\u60ef\u6027\u201d\u4f5c\u6597\u4e89\u3002\u5176\u6700\u5927\u7684\u4ef7\u503c\u4e0d\u662f\u201c\u53cc\u680f\u201d\u6216\u201cVim \u952e\u4f4d\u201d\uff0c\u800c\u662f\u7528 Rust \u91cd\u5199\u5e95\u5c42\u6362\u6765\u7684\u96f6\u79d2\u542f\u52a8\u4e0e\u6d41\u7545\u6eda\u52a8\uff0c\u8fd9\u76f4\u63a5\u51fb\u7a7f\u4e86 Finder \u957f\u671f\u4ee5\u6765\u90a3\u5c42\u4e0d\u75db\u5feb\u7684\u201c\u679c\u51bb\u611f\u201d\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u4ece\u8bc4\u8bba\u53cd\u9988\u770b\uff0c\u6838\u5fc3\u4e89\u8bae\u96c6\u4e2d\u5728 SSH\/SFTP \u7684\u8fdc\u7a0b\u4f53\u9a8c\u4e0a\u2014\u2014\u8fd9\u662f\u753b\u9f99\u70b9\u775b\u4e4b\u7b14\uff0c\u4e5f\u662f\u6700\u5927\u7684\u6280\u672f\u7834\u7efd\u3002\u952e\u76d8\u64cd\u4f5c\u7684\u9ad8\u901f\u662f\u672c\u5730\u6587\u4ef6\u7cfb\u7edf\u5373\u65f6\u53cd\u9988\u5e26\u6765\u7684\u201c\u5e7b\u8c61\u201d\uff0c\u4e00\u65e6\u4e32\u8054\u5230\u7f51\u7edc I\/O\uff0c\u4efb\u4f55\u6309\u952e\u4ea4\u4e92\u90fd\u4f1a\u9762\u4e34 SSH \u94fe\u8def\u7684\u5f80\u8fd4\u5ef6\u8fdf\u3002\u8bc4\u8bba\u8005\u4e00\u9488\u89c1\u8840\u5730\u6307\u51fa\uff1aVeloFiler \u662f\u5426\u505a\u4e86\u524d\u7f00\u7f13\u5b58\u6216\u9884\u53d6\uff1f\u5982\u679c\u7b54\u6848\u662f\u6ca1\u6709\uff0c\u90a3\u4e48\u8fd9\u6b3e\u4ea7\u54c1\u7684\u201c\u8fdc\u7a0b\u6587\u4ef6\u4f5c\u4e3a\u672c\u5730\u7a97\u683c\u201d\u7684\u8425\u9500\u6982\u5ff5\u5c31\u7ad9\u4e0d\u4f4f\u811a\uff0cVim \u64cd\u4f5c\u6d41\u5728\u9ad8\u5ef6\u8fdf\u4e0b\u53ea\u4f1a\u5206\u89e3\u4e3a\u65e0\u5c3d\u7684\u8f6c\u5708\uff0c\u7528\u6237\u6700\u7ec8\u4f1a\u9000\u56de Transmit \u8fd9\u7c7b\u4e13\u7528\u5de5\u5177\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u6b64\u5916\uff0cApp Store \u6c99\u76d2\u4e0e\u6587\u4ef6\u7ba1\u7406\u5668\u7684\u672c\u8d28\u662f\u5929\u7136\u5bf9\u7acb\u7684\u3002\u5c3d\u7ba1\u5f00\u53d1\u8005\u7528 security-scoped bookmarks \u89e3\u51b3\u4e86\u6743\u9650\u53cd\u590d\u5f39\u7a97\u7684\u95ee\u9898\uff0c\u4f46\u8fd9\u672c\u8d28\u4e0a\u662f\u5bf9 macOS \u5b89\u5168\u673a\u5236\u7684\u4e00\u6b21\u201c\u7cfb\u7edf\u7ea7\u59a5\u534f\u201d\u3002\u8fd9\u79cd\u505a\u6cd5\u5728\u5927\u6587\u4ef6\u6279\u91cf\u64cd\u4f5c\u6216\u8bbf\u95ee\u9690\u85cf\u76ee\u5f55\u65f6\u5bb9\u6613\u8e29\u5751\uff0c\u672a\u6765\u7ef4\u62a4\u6210\u672c\u6781\u9ad8\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u4ea7\u54c1\u8d70\u7684\u662f\u6781\u5ba2\u8def\u7ebf\uff0c\u4f46\u6781\u5ba2\u7fa4\u4f53\u5bf9\u5de5\u5177\u7684\u201c\u63a7\u5236\u611f\u201d\u6709\u7740\u8fd1\u4e4e\u82db\u523b\u7684\u8981\u6c42\u3002\u76ee\u524d VeloFiler \u5728\u4e24\u4e2a\u7ef4\u5ea6\u6b20\u7f3a\u63a7\u5236\u611f\uff1a\u4e00\u662f\u8fdc\u7a0b\u670d\u52a1\u5668\u4e0a\u65e0\u6cd5\u81ea\u5b9a\u4e49\u6279\u5904\u7406\u7b56\u7565\u4ee5\u5bf9\u6297\u7f51\u7edc\u5ef6\u8fdf\uff0c\u4e8c\u662f\u8c03\u8bd5\u548c\u65e5\u5fd7\u80fd\u529b\u5c1a\u4e0d\u660e\u6717\u3002\u5bf9\u4e8e\u4e00\u6b3e\u5b9a\u4f4d\u201c\u952e\u76d8\u7edf\u9886\u5168\u5c40\u201d\u7684\u4ea7\u54c1\uff0c\u5982\u679c\u5728\u5173\u952e\u6027\u80fd\u8282\u70b9\u4e0a\u4f9d\u8d56\u7f51\u7edc\u73af\u5883\u7684\u201c\u4eba\u54c1\u201d\uff0c\u90a3\u5b83\u7ec8\u7a76\u53ea\u662f\u628a Finder \u6362\u4e86\u4e00\u526f\u66f4\u5feb\u7684\u8868\u76ae\uff0c\u800c\u975e\u91cd\u5851\u6587\u4ef6\u7ba1\u7406\u7684\u4ea4\u4e92\u903b\u8f91\u3002\u8bda\u7136\uff0c\u5b83\u662f macOS \u4e0a\u5c11\u89c1\u7684\u6f02\u4eae\u5148\u884c\u8005\uff0c\u4f46\u8ddd\u79bb\u201c\u62a4\u822a\u5de5\u5177\u201d\u7684\u6210\u719f\u5ea6\uff0c\u4ecd\u6709\u4ece 70 \u7968\u5230 7000 \u7968\u7684\u8ddd\u79bb\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">VeloFiler<\/span>\n                <\/div>\n<div class=\"comment-content\">VeloFiler is a keyboard-first, dual-pane file manager for macOS, built in Rust on GPUI for instant startup and smooth rendering. Navigate with Vim-style keys, preview images, code, Markdown, PDF, video and Office documents without opening another app, and manage remote servers over SSH\/SFTP right next to your local files. Stop clicking through folders \u2014 fly through them.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">Hi Product Hunt! \ud83d\udc4b<\/p>\n<p>I&#8217;m Kazuhiro, the maker of VeloFiler.<\/p>\n<p>I&#8217;ve always loved the speed of classic two-pane file managers, but I wanted one that feels truly native to today&#8217;s macOS. So I built VeloFiler in Rust on GPUI (the UI framework behind the Zed editor) \u2014 it launches instantly and stays smooth no matter how big the folder is.<\/p>\n<p>What makes it different:<\/p>\n<p>\u2328\ufe0f Keyboard-first: Vim-style keys for moving, marking, copying \u2014 your hands never leave the home row<br \/>\n\ud83d\udc40 Instant previews: images, code, Markdown, PDF, video, even Office documents, without opening another app<br \/>\n\ud83c\udf10 Built-in SSH\/SFTP: remote servers show up as regular panes, so they feel like local folders<br \/>\n\u26a1 Native performance: no Electron, no web view \u2014 pure Rust<\/p>\n<p>It just landed on the Mac App Store today. I&#8217;d love to hear your feedback \u2014 especially from fellow keyboard addicts. Ask me anything!<\/p><\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@kotsutsumi\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@kotsutsumi<\/a>&nbsp;The SSH\/SFTP as regular panes design is the part I&#8217;d stress test hardest. A local pane&#8217;s operations are effectively free, but a remote one has network latency built into every keystroke driven action, list, preview, copy. Does VeloFiler batch or prefetch to hide that, or does the vim style speed just get throttled down to how fast the SFTP connection responds on a slow server?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@kotsutsumi\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@kotsutsumi<\/a>&nbsp;Built on GPUI like Zed, is Rust\/GPUI as fast to build native macOS apps in as it feels to use? Would love to hear how that choice paid off (or bit you) during dev<\/p>\n<p>haha<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>the built-in SSH\/SFTP panes are the feature that&#8217;d actually get me to switch, since jumping between Finder and Transmit for the same task is exactly the friction you&#8217;re describing. how are the server credentials handled though, especially given the Mac App Store sandbox constraints Lisa mentioned below &#8211; are they stored in the system keychain, or is it key-based auth only, and does the sandbox let you read an existing ~\/.ssh\/config at all<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p>VeloFiler doesn\u2019t store SSH passwords or private keys. It uses your OpenSSH configuration with SSH-agent or key-based authentication, while macOS permissions control access to the relevant SSH files. Your credentials stay on your Mac and aren\u2019t sent to our servers.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Congrats on shipping! The Mac App Store part is what caught my eye tbh. A file manager needs to see everything and the sandbox really does not want you to, so getting a dual-pane manager through review sounds like the least fun part of the whole build haha.<\/p>\n<p>What does that feel like for the person using it, do they get a permission prompt for every folder the first time or did you find a way around it? The Mac apps I work on go direct download partly to dodge exactly this, so I&#8217;m curious whether the App Store was worth the fight.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p>Thanks! VeloFiler asks for access when you choose a folder, then uses macOS security-scoped bookmarks so you don\u2019t get prompted for every navigation. The App Store route was definitely harder, but it was worth it for a trusted native install.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#12<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/TS5OPLKBFOVKXH\" class=\"app-title\">Pocket by Meta<\/a><\/p>\n<div class=\"one-liner\">Vibe-code games, then share them like TikToks<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">70<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>Pocket by Meta \u8ba9\u7528\u6237\u7528\u81ea\u7136\u8bed\u8a00\u63cf\u8ff0\u521b\u610f\uff0cAI \u5373\u523b\u751f\u6210\u53ef\u4ea4\u4e92\u7684\u8ff7\u4f60\u6e38\u620f\uff08Gizmo\uff09\uff0c\u5e76\u50cf\u5237\u77ed\u89c6\u9891\u4e00\u6837\u5728\u4fe1\u606f\u6d41\u4e2d\u5206\u4eab\u3001\u6e38\u73a9\u548c\u4e8c\u6b21\u6df7\u6539\uff0c\u628a\u201c\u65e0\u4ee3\u7801\u7f16\u7a0b\u201d\u53d8\u6210\u4e86\u4e00\u79cd\u793e\u4ea4\u5a31\u4e50\u65b9\u5f0f\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/05278831-97ff-467e-a637-dfb168ea9396.webp?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/daaf7d52-33c7-47c2-91fa-a278d96bd0a0.webp?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/ace46de0-7d54-47e1-b82b-aeb4fb4ff3d3.webp?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/0229a10e-0b36-45d4-9790-cf9d26037f46.webp?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/44f77d27-68b7-4bef-b12a-3293118f48f0.webp?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Android<\/span><br \/>\n            <span class=\"tag\">Artificial Intelligence<\/span><br \/>\n            <span class=\"tag\">Games<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">AI\u751f\u6210\u6e38\u620f<\/span><br \/>\n            <span class=\"tag\">\u65e0\u4ee3\u7801\u521b\u4f5c<\/span><br \/>\n            <span class=\"tag\">\u793e\u4ea4\u7f51\u7edc<\/span><br \/>\n            <span class=\"tag\">\u4e92\u52a8\u5185\u5bb9<\/span><br \/>\n            <span class=\"tag\">\u4f4e\u95e8\u69db\u6e38\u620f\u5f00\u53d1<\/span><br \/>\n            <span class=\"tag\">\u4f11\u95f2\u5a31\u4e50<\/span><br \/>\n            <span class=\"tag\">\u5185\u5bb9\u6df7\u6539<\/span><br \/>\n            <span class=\"tag\">AIGC<\/span><br \/>\n            <span class=\"tag\">Meta<\/span><br \/>\n            <span class=\"tag\">\u521b\u610f\u5206\u4eab<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u76ee\u524d\u552f\u4e00\u6709\u6548\u8bc4\u8bba\u4e3a\u5b98\u65b9\u4ecb\u7ecd\u6027\u63cf\u8ff0\uff0c\u672a\u63d0\u53ca\u5177\u4f53\u95ee\u9898\u6216\u5efa\u8bae\u3002\u8bc4\u8bba\u5185\u5bb9\u91cd\u590d\u4ea7\u54c1\u529f\u80fd\uff0c\u7f3a\u4e4f\u771f\u5b9e\u7528\u6237\u75db\u70b9\u53cd\u9988\uff0c\u9700\u540e\u7eed\u89c2\u5bdf\u4f53\u9a8c\u7ec6\u8282\uff08\u5982\u521b\u4f5c\u81ea\u7531\u5ea6\u3001AI\u751f\u6210\u7a33\u5b9a\u6027\u3001\u5ba1\u6838\u673a\u5236\uff09\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                Pocket \u7684\u91ce\u5fc3\u4e0d\u5728\u4e8e\u201c\u6e38\u620f\u201d\uff0c\u800c\u5728\u4e8e\u91cd\u65b0\u5b9a\u4e49\u793e\u4ea4\u5a92\u4f53\u7684\u5185\u5bb9\u5f62\u6001\u2014\u2014\u628a\u201c\u770b\u201d\u53d8\u6210\u201c\u73a9\u201d\u3002\u5b83\u5de7\u5999\u501f\u529b\u4e86\u5f53\u524d\u4e24\u5927\u98ce\u53e3\uff1avibe-coding\uff08\u76f4\u89c9\u5316\u7f16\u7a0b\uff09\u548c UGC \u77ed\u89c6\u9891\u7684\u5373\u65f6\u53cd\u9988\u673a\u5236\u3002\u4ece\u4ea7\u54c1\u903b\u8f91\u770b\uff0c\u5b83\u89e3\u51b3\u4e86\u4f20\u7edf\u6e38\u620f\u521b\u4f5c\u95e8\u69db\u8fc7\u9ad8\u7684\u95ee\u9898\uff0c\u7528 AI \u5c06\u521b\u610f\u5230\u6210\u54c1\u7684\u5ef6\u8fdf\u538b\u7f29\u5230\u79d2\u7ea7\uff1b\u540c\u65f6\uff0c\u901a\u8fc7\u201c\u53ef remix\u201d\u673a\u5236\uff0c\u5b83\u8bd5\u56fe\u6784\u5efa\u4e00\u4e2a\u6bd4 Tiktok \u66f4\u6df1\u5c42\u7684\u5185\u5bb9\u751f\u6001\u2014\u2014\u7528\u6237\u4e0d\u4ec5\u662f\u5185\u5bb9\u7684\u6d88\u8d39\u8005\uff0c\u66f4\u662f\u5185\u5bb9\u7684\u4fee\u6539\u8005\u3002\u8fd9\u786e\u5b9e\u5177\u6709\u98a0\u8986\u6027\uff1a\u5f53\u4e92\u52a8\u6210\u672c\u5f52\u96f6\uff0c\u4fe1\u606f\u6d41\u7684\u5355\u4f4d\u5c06\u4ece\u201c\u89c6\u9891\u201d\u8fdb\u5316\u4e3a\u201c\u53ef\u73a9\u573a\u666f\u201d\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u7136\u800c\uff0c\u98ce\u9669\u540c\u6837\u663e\u8457\u300270 \u7968\u7684\u51b7\u542f\u52a8\u6570\u636e\u6697\u793a\u5e02\u573a\u53cd\u5e94\u5e73\u6de1\uff0c\u6838\u5fc3\u9690\u60a3\u5728\u4e8e AI \u751f\u6210\u7684\u4ea4\u4e92\u8d28\u91cf\u5927\u6982\u7387\u7c97\u7cd9\u4e14\u540c\u8d28\u5316\uff0c\u6781\u96be\u4ea7\u751f\u50cf\u300a\u7f8a\u4e86\u4e2a\u7f8a\u300b\u90a3\u6837\u7684\u7206\u6b3e\u9b54\u6027\u4f53\u9a8c\u3002\u5176\u6b21\uff0cMeta \u65d7\u4e0b\u5e73\u53f0\uff08\u5982 Instagram\uff09\u7684\u5f3a\u793e\u4ea4\u5173\u7cfb\u94fe\u5e76\u672a\u6253\u901a\uff0cPocket \u4f5c\u4e3a\u72ec\u7acb\u5e94\u7528\u7f3a\u4e4f\u51b7\u542f\u52a8\u6d41\u91cf\u6c60\uff0c\u6781\u6613\u9677\u5165\u201c\u521b\u4f5c\u8005\u65e0\u56de\u62a5\uff0c\u73a9\u5bb6\u65e0\u4f18\u8d28\u5185\u5bb9\u201d\u7684\u53cc\u8fb9\u51b7\u542f\u52a8\u6b7b\u5faa\u73af\u3002\u6700\u540e\uff0c\u653f\u7b56\u4e0e\u4f26\u7406\u98ce\u9669\u4e0d\u53ef\u5ffd\u89c6\u2014\u2014\u7528\u6237\u53ef\u81ea\u7531\u89e6\u53d1\u6444\u50cf\u5934\u548c\u9ea6\u514b\u98ce\uff0cAI \u751f\u6210\u5185\u5bb9\u7684\u5ba1\u6838\u96be\u5ea6\u8fdc\u9ad8\u4e8e\u6587\u672c\uff0c\u8fd9\u5c06\u662f\u7248\u6743\u548c\u5185\u5bb9\u5b89\u5168\u7684\u5b9a\u65f6\u70b8\u5f39\u3002\u4e00\u53e5\u8bdd\uff1a\u521b\u610f\u5f88\u597d\uff0c\u4f46 Meta \u82e5\u4e0d\u80fd\u89e3\u51b3\u201c\u751f\u6210\u8d28\u91cf\u7684\u4e0a\u9650\u201d\u548c\u201c\u51b7\u542f\u52a8\u7684\u5bc6\u5ea6\u201d\uff0c\u5b83\u5f88\u53ef\u80fd\u6ca6\u4e3a\u53c8\u4e00\u4e2a\u7cbe\u81f4\u7684 AI \u73a9\u5177\uff0c\u800c\u975e\u4e0b\u4e00\u4ee3\u793e\u4ea4\u5e73\u53f0\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">Pocket by Meta<\/span>\n                <\/div>\n<div class=\"comment-content\">Pocket is Meta&#8217;s new social app for creating, playing, and remixing interactive experiences with AI. Describe an idea and turn it into a playable &#8220;gizmo&#8221; that can respond to touch, motion, sound, photos, and even your camera. Share it to the feed, play what others have imagined, or remix their creations into something new. It&#8217;s vibe coding turned into a social experience\u2014no coding required.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Pocket is Meta&#8217;s new social playground for vibe-coded games. <\/p>\n<\/p>\n<p>Describe an idea and AI turns it into a playable &#8220;gizmo&#8221;\u2014no coding or game engine required. Publish it to a scrollable feed where others can instantly play, like, share, and remix what you made. Or start with someone else&#8217;s creation and make it your own. <\/p>\n<\/p>\n<p>It&#8217;s part game creator, part social network, built around a simple idea: what if posts weren&#8217;t just watched, but played?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#13<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/26NE2SSINN6IO5\" class=\"app-title\">Flappy Bid<\/a><\/p>\n<div class=\"one-liner\">The leaderboard money can&#8217;t buy<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">35<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>Flappy Bid \u5c06\u5e7f\u544a\u4f4d\u7ade\u62cd\u6539\u4e3a\u6e38\u620f\u6280\u80fd\u6bd4\u62fc\uff0c\u901a\u8fc7\u6bcf\u65e5Flappy Bird\u6700\u9ad8\u5206\u4e89\u593a\u7f51\u7ad9\u9996\u9875\u9ec4\u91d1\u5c55\u793a\u4f4d\uff0c\u7528\u6e38\u620f\u5316\u673a\u5236\u98a0\u8986\u4f20\u7edf\u5e7f\u544a\u62cd\u5356\u6a21\u5f0f\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/2e018e44-dc5e-47ba-86fc-e930f3da642b.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/1d02cabc-c45e-48f1-ad44-3ef76dc87b73.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/f0caa373-7a26-4104-9f00-cccfb89fbb11.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/3ba4e002-4c86-4078-ac3f-cdd1ac4146d4.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/5e2c9db6-360e-4514-974b-739f9729ceee.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/7032207e-6d26-483c-82e0-11114f94e182.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <video class=\"media-content\" poster=\"https:\/\/ph-files.imgix.net\/afebc33e-0020-44fa-8e76-bb7cef07e5db.jpeg?auto=format\" data-video-url=\"https:\/\/youtu.be\/zGwfwlJzaZk\"><source src=\"https:\/\/youtu.be\/zGwfwlJzaZk\" type=\"video\/mp4\"><\/video><\/p>\n<div class=\"video-overlay\">\n<div class=\"play-icon\">\u25b6<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Action Games<\/span><br \/>\n            <span class=\"tag\">Marketing<\/span><br \/>\n            <span class=\"tag\">Advertising<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">\u5e7f\u544a\u7ade\u62cd\u66ff\u4ee3<\/span><br \/>\n            <span class=\"tag\">\u6e38\u620f\u5316\u8425\u9500<\/span><br \/>\n            <span class=\"tag\">\u79ef\u5206\u6392\u540d<\/span><br \/>\n            <span class=\"tag\">\u6d41\u91cf\u53d8\u73b0<\/span><br \/>\n            <span class=\"tag\">\u53bb\u4e2d\u5fc3\u5316\u5e7f\u544a<\/span><br \/>\n            <span class=\"tag\">\u4ea7\u54c1\u63a8\u5e7f\u5de5\u5177<\/span><br \/>\n            <span class=\"tag\">\u96f6\u548c\u535a\u5f08<\/span><br \/>\n            <span class=\"tag\">\u8da3\u5473\u8425\u9500<\/span><br \/>\n            <span class=\"tag\">\u5b9e\u65f6\u6570\u636e<\/span><br \/>\n            <span class=\"tag\">\u6e38\u620f\u5373\u5e7f\u544a<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u7528\u6237\u597d\u5947\u201c\u4e00\u80dc\u5373\u9000\u201d\u89c4\u5219\u8bbe\u8ba1\u52a8\u673a\uff0c\u5e76\u8d28\u7591\u670d\u52a1\u5668\u7aef\u786e\u5b9a\u6027\u91cd\u653e\u673a\u5236\u5982\u4f55\u8de8\u8bbe\u5907\u4fdd\u8bc1\u516c\u5e73\u6027\uff0c\u53e6\u6709\u6570\u636e\u5c55\u793a\u5f53\u524d\u5e73\u53f0\u89c4\u6a21\uff08776\u5bb6\u516c\u53f8\u30019800\u8bbf\u5ba2\u300128800\u5c40\u6e38\u620f\uff09\uff0c\u6574\u4f53\u53cd\u9988\u79ef\u6781\u4f46\u6df1\u5165\u95ee\u9898\u672a\u83b7\u7b54\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                Flappy Bid \u7684\u5de7\u5999\u4e4b\u5904\u5728\u4e8e\u5c06\u5e7f\u544a\u62cd\u5356\u7684\u201c\u91d1\u94b1\u7ade\u4ef7\u201d\u5077\u6362\u6210\u201c\u65f6\u95f4\u4e0e\u6280\u80fd\u7ade\u4ef7\u201d\uff0c\u672c\u8d28\u662f\u6ce8\u610f\u529b\u7ecf\u6d4e\u7684\u9ed1\u8272\u5e7d\u9ed8\u53d8\u4f53\u2014\u2014\u7528\u6e38\u620f\u6210\u763e\u6027\u66ff\u4ee3\u9884\u7b97\u6d88\u8017\uff0c\u8ba9\u53c2\u8d5b\u8005\u514d\u8d39\u4e3a\u5e73\u53f0\u751f\u4ea7\u6d41\u91cf\u4e0e\u5185\u5bb9\u3002\u5176\u201c\u7ec8\u8eab\u4e00\u80dc\u201d\u89c4\u5219\u786e\u5b9e\u675c\u7edd\u4e86\u5934\u90e8\u5784\u65ad\uff0c\u4f46\u8fd9\u4e5f\u66b4\u9732\u81f4\u547d\u77ed\u677f\uff1a\u4ea7\u54c1\u70ed\u5ea6\u9ad8\u5ea6\u4f9d\u8d56\u6e38\u620f\u535a\u5f08\u7684\u6fc0\u60c5\uff0c\u4e00\u65e6\u73a9\u5bb6\u53d1\u73b0\u6280\u80fd\u5929\u82b1\u677f\u6216\u5931\u53bb\u65b0\u9c9c\u611f\uff0c\u793e\u533a\u4fbf\u4f1a\u8fc5\u901f\u51b7\u5374\u3002\u6240\u8c13\u201c\u670d\u52a1\u5668\u7aef\u786e\u5b9a\u6027\u91cd\u653e\u201d\u770b\u4f3c\u9632\u4f5c\u5f0a\uff0c\u5b9e\u5219\u589e\u52a0\u4e86\u6280\u672f\u7ef4\u62a4\u6210\u672c\uff0c\u4e14\u5bf9\u666e\u901a\u7528\u6237\u4e0d\u900f\u660e\uff0c\u5bb9\u6613\u5f15\u53d1\u5bf9\u516c\u5e73\u6027\u7684\u6301\u7eed\u8d28\u7591\u3002\u66f4\u73b0\u5b9e\u7684\u95ee\u9898\u662f\uff0c\u6bcf\u65e5\u53ea\u6709\u7b2c\u4e00\u540d\u80fd\u83b7\u5f97\u66dd\u5149\uff0c\u5176\u4f59776\u4e2a\u966a\u8dd1\u8005\u4e0d\u4ec5\u4e00\u65e0\u6240\u83b7\uff0c\u8fd8\u8d21\u732e\u4e86\u70b9\u51fb\u91cf\uff0c\u8fd9\u672c\u8d28\u662f\u201c\u8d62\u5bb6\u901a\u5403\u201d\u7684\u6d41\u91cf\u5f69\u7968\uff0c\u957f\u671f\u770b\u96be\u4ee5\u5438\u5f15\u7406\u6027\u5546\u5bb6\u6301\u7eed\u6295\u5165\u3002\u82e5\u4e0d\u80fd\u589e\u52a0\u6b21\u7ea7\u5956\u52b1\u6216\u53c2\u4e0e\u611f\u5206\u5c42\uff0cFlappy Bid \u6ce8\u5b9a\u662f\u4e00\u6b3e\u6781\u5ba2\u5708\u5c42\u7684\u73a9\u5177\uff0c\u800c\u975e\u53ef\u89c4\u6a21\u5316\u7684\u5e7f\u544a\u57fa\u7840\u8bbe\u65bd\u3002\u5b83\u6700\u5927\u7684\u4ef7\u503c\uff0c\u6216\u8bb8\u662f\u4e3a\u201c\u5e7f\u544a\u5373\u6e38\u620f\u201d\u63d0\u4f9b\u4e86\u53cd\u8bbd\u5f0f\u8303\u672c\uff0c\u8b66\u793a\u884c\u4e1a\uff1a\u5f53\u62cd\u5356\u6210\u4e86\u6e38\u620f\uff0c\u6e38\u620f\u4e5f\u5c31\u6210\u4e86\u6700\u5ec9\u4ef7\u7684\u52b3\u52a8\u529b\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">Flappy Bid<\/span>\n                <\/div>\n<div class=\"comment-content\">Ad platforms sell the top spot to whoever pays most. FlappyBid gives it to whoever plays best. Enter your product, play Flappy Bird, unlimited runs. At 00:00 UTC the top product owns the whole site for 24h with a live click counter, then retires undefeated.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">Ad auctions decide who goes on top by who pays the most. This one decides by who plays the best.<\/p>\n<p>Enter your product, play Flappy Bird, unlimited runs, your best score today is your rank. At midnight UTC the leader takes the entire site for 24 hours: name, logo, link, and a live counter of the clicks it sends you. Then it retires undefeated. One win, ever, so nobody camps #1.<\/p>\n<p>Every run is replayed server-side from a seeded deterministic sim before it counts, so the board is real.<\/p>\n<p>Built with Agently. Right now agently.dev is sitting at #1 by default, because nobody has won yet. Come take it.<\/p><\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>4<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@omarships\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@omarships<\/a>&nbsp;Great Launch!<\/p>\n<p>What made you pick &#8220;one win, ever&#8221; instead of a recurring daily leaderboard reset?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>2<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Stats as of now:<\/p>\n<ul>\n<li>\n<p>776 Companies <\/p>\n<\/li>\n<li>\n<p>9800 Visitors<\/p>\n<\/li>\n<li>\n<p>28,800 games played<\/p>\n<\/li>\n<li>\n<p>300 clicks for previous day winner<\/p>\n<\/li>\n<\/ul>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@omarships\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@omarships<\/a>&nbsp;I\u2019m intrigued by the deterministic replay mechanic, and how does the seeded simulation ensure fairness across different devices and internet speeds?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#14<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/ZCZCCI2MOER2FY\" class=\"app-title\">roastme.gg<\/a><\/p>\n<div class=\"one-liner\">Get roasted. Publicly.<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">11<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>roastme.gg\u662f\u4e00\u6b3e\u4ed8\u8d39AI\u516c\u5f00\u5632\u8bbd\u5de5\u5177\uff0c\u7528\u6237\u82b11\u52301000+\u7f8e\u5143\uff0c\u63d0\u4ea4X\u8d26\u53f7\u6216\u7f51\u7ad9\uff0c\u7531Claude\u57fa\u4e8e\u540d\u79f0\u4e0e\u201c\u6c14\u573a\u201d\u5199\u51fa\u4e00\u4e24\u53e5\u6bd2\u820c\u8bc4\u8bed\uff0c\u5e76\u516c\u5f00\u5c55\u793a\u5728\u6309\u4ef7\u683c\u6392\u5e8f\u7684\u6392\u884c\u699c\u4e0a\uff0c\u6ee1\u8db3\u201c\u82b1\u94b1\u6c42\u8650\u201d\u7684\u5a31\u4e50\u4e0e\u793e\u4ea4\u66dd\u5149\u9700\u6c42\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/64050d02-9a17-4a6f-a605-9bc09998ba09.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/b838a3a7-88f6-436d-8e34-c895038aef27.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/d3a069b6-48d7-4aab-a259-09e9b1333b69.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/ed363d2d-c2d6-45e0-8e8a-f66f2dc3900c.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/c2b3c88a-459b-4523-b4d5-0f20d485b2ff.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Artificial Intelligence<\/span><br \/>\n            <span class=\"tag\">Entertainment<\/span><br \/>\n            <span class=\"tag\">Social Networking<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">AI\u5a31\u4e50<\/span><br \/>\n            <span class=\"tag\">\u4ed8\u8d39\u6076\u641e<\/span><br \/>\n            <span class=\"tag\">\u516c\u5f00\u7f9e\u8fb1<\/span><br \/>\n            <span class=\"tag\">\u793e\u4ea4\u5a92\u4f53\u73a9\u6cd5<\/span><br \/>\n            <span class=\"tag\">X\u5e73\u53f0<\/span><br \/>\n            <span class=\"tag\">\u8f7b\u91cfSaaS<\/span><br \/>\n            <span class=\"tag\">\u6bd2\u820c\u751f\u6210<\/span><br \/>\n            <span class=\"tag\">\u6392\u884c\u699c\u673a\u5236<\/span><br \/>\n            <span class=\"tag\">\u75c5\u6bd2\u4f20\u64ad<\/span><br \/>\n            <span class=\"tag\">\u51b7\u8bfb\u672f<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u6709\u6548\u8bc4\u8bba\u96c6\u4e2d\u5728\u4e24\u70b9\uff1a1\uff09\u201c\u4e0d\u8d8a\u754c\u201d\u7684\u5c3a\u5ea6\u8fb9\u754c\u4e0d\u6e05\u6670\uff0cAI\u8f93\u51fa\u53ef\u80fd\u5931\u63a7\uff0c\u7f3a\u4e4f\u5185\u5bb9\u5ba1\u6838\u8bf4\u660e\uff1b2\uff09\u5b58\u5728\u6ee5\u7528\u98ce\u9669\u2014\u2014\u7528\u6237\u53ef\u968f\u610f\u63d0\u4ea4\u4ed6\u4eba\u8d26\u53f7\uff0c\u65e0\u8eab\u4efd\u6821\u9a8c\uff0c\u516c\u5f00\u6392\u884c\u699c\u53ef\u80fd\u53d8\u6210\u9488\u5bf9\u7b2c\u4e09\u65b9\u7684\u9a9a\u6270\u5de5\u5177\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                \u8fd9\u4e2a\u4ea7\u54c1\u672c\u8d28\u4e0a\u662f\u7528\u201c\u75bc\u75db\u7ecf\u6d4e\u5b66\u201d\u5305\u88c5\u7684AI\u5671\u5934\uff0c\u6838\u5fc3\u5356\u70b9\u4e0d\u662fAI\u5199\u4f5c\u80fd\u529b\uff0c\u800c\u662f\u201c\u516c\u5f00\u4ed8\u8d39\u6328\u9a82\u201d\u7684\u53cd\u5e38\u7406\u793e\u4ea4\u8d27\u5e01\u3002\u5b83\u806a\u660e\u5730\u6293\u4f4f\u4e86\u4e24\u4e2a\u771f\u5b9e\u5fc3\u7406\uff1a\u4e00\u662f\u521b\u4f5c\u8005\u5bf9\u51b7\u5632\u70ed\u8bbd\u7684\u201c\u8131\u654f\u5feb\u611f\u201d\uff0c\u4e8c\u662f\u56f4\u89c2\u8005\u770b\u522b\u4eba\u82b1\u94b1\u4e22\u4eba\u7684\u730e\u5947\u6b32\u3002\u4f46\u4ea7\u54c1\u8bbe\u8ba1\u4e0a\u6709\u4e00\u5904\u81f4\u547d\u4f24\u2014\u2014\u5b83\u628a\u201c\u81ea\u613f\u53d7\u8650\u201d\u548c\u201c\u88ab\u52a8\u8bcb\u6bc1\u201d\u6df7\u4e3a\u4e00\u8c08\u3002\u8bc4\u8bba\u533a\u7684\u8d28\u7591\u4e00\u9488\u89c1\u8840\uff1a\u6ca1\u6709\u4efb\u4f55\u673a\u5236\u9a8c\u8bc1\u63d0\u4ea4\u8005\u5c31\u662f\u8d26\u53f7\u672c\u4eba\uff0c\u8fd9\u610f\u5473\u7740\u4efb\u4f55\u4eba\u82b11\u7f8e\u5143\u5c31\u80fd\u628a\u7ade\u4e89\u5bf9\u624b\u3001\u524d\u4efb\u6216\u8ba8\u538c\u7684\u7f51\u7ea2\u6302\u4e0a\u516c\u5f00\u6392\u884c\u699c\uff0c\u8ba9AI\u751f\u6210\u770b\u4f3c\u6709\u7406\u6709\u636e\u7684\u8d1f\u9762\u8bc4\u4ef7\uff0c\u5e76\u914d\u4ee5\u53ef\u4f20\u64ad\u7684\u5361\u7247\u3002\u8fd9\u5df2\u7ecf\u4e0d\u662f\u201croast me\u201d\uff0c\u800c\u662f\u201croast anyone\u201d\uff0c\u5728\u4ea7\u54c1\u4f26\u7406\u4e0a\u76f4\u63a5\u8e29\u7ebf\u3002\u4ece\u5546\u4e1a\u89d2\u5ea6\u770b\uff0c\u5b9a\u4ef7\u5206\u5c42\u548c\u6392\u884c\u699c\u673a\u5236\u662f\u597d\u7684\u4f20\u64ad\u94a9\u5b50\uff0c\u4f46\u7f3a\u4e4f\u5185\u5bb9\u8fc7\u6ee4\u4e0e\u6240\u6709\u6743\u9a8c\u8bc1\uff0c\u4f1a\u8ba9\u5b83\u8fc5\u901f\u6ca6\u4e3a\u7f51\u7edc\u9738\u51cc\u5de5\u5177\uff0c\u5e76\u62db\u81f4X\u5e73\u53f0\u7684\u53cd\u6ee5\u7528\u5904\u7f5a\u3002\u771f\u6b63\u7684\u4ef7\u503c\u4e0d\u5728\u4e8e\u201cAI\u6bd2\u820c\u201d\u672c\u8eab\uff0c\u800c\u5728\u4e8e\u5b83\u63d0\u4f9b\u4e86\u4e00\u4e2a\u6781\u4f4e\u95e8\u69db\u7684\u516c\u5171\u620f\u5267\u573a\u2014\u2014\u4f46\u8fd9\u51fa\u620f\u76ee\u524d\u6ca1\u6709\u5b89\u5168\u62a4\u680f\u3002\u5efa\u8bae\u7acb\u5373\u52a0\u5165\u63d0\u4ea4\u8005\u8eab\u4efd\u7ed1\u5b9a\uff08\u5982X OAuth\uff09\u3001\u5141\u8bb8\u88ab\u63d0\u53ca\u8005\u7533\u8bc9\u4e0b\u67b6\uff0c\u5e76\u589e\u52a0AI\u8f93\u51fa\u7684\u4e0d\u9002\u5b9c\u8bcd\u8fc7\u6ee4\uff0c\u5426\u5219\u8fd9\u4e2a\u4ea7\u54c1\u53ea\u4f1a\u706b\u4e00\u628a\uff0c\u7136\u540e\u6b7b\u4e8e\u4e3e\u62a5\u3002\u53e6\u5916\uff0c11\u7968\u7684\u51b7\u542f\u52a8\u8bf4\u660e\u8fde\u65e9\u671f\u7528\u6237\u90fd\u5728\u89c2\u671b\uff0c\u56e2\u961f\u5e94\u5148\u628a\u201c\u5b89\u5168\u6328\u9a82\u201d\u7684\u627f\u8bfa\u505a\u5b9e\uff0c\u518d\u8c08\u4f20\u64ad\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">roastme.gg<\/span>\n                <\/div>\n<div class=\"comment-content\">Pay to get publicly roasted by AI. Drop your X handle or a website, pick how hard it should hurt ($1 to a $1,000+ scorched-earth tier), and Claude writes a roast based on nothing but the name and the vibe it gives off, no bio, no posts, no scraping. Every roast lands on a public leaderboard ranked by price paid, with a shareable card for X.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">Hey Product Hunt \ud83d\udc4b<\/p>\n<p>I got tired of my friends roasting my side projects for free, so I built a way to charge them for it.<\/p>\n<p>roastme.gg takes an X handle or a website, and for whatever you&#8217;re willing to pay ($1 up to actual four figures), Claude rips it apart in one or two sentences based purely on the name and the vibe, no scraping your posts or content, just a cold read. It then posts publicly to a leaderboard ranked by price paid, with a shareable card for X.<\/p>\n<p>The fun part is the economics: pay more, get roasted harder, and your spot on the wall is basically a public confession of how much you wanted to be humbled.<\/p>\n<p>Drop your handle below and let&#8217;s see what it says. Would love feedback on the roasts themselves, I&#8217;m still tuning the prompt to hit harder without crossing lines.<\/p><\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@alexcloudstar\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@alexcloudstar<\/a>&nbsp;the &#8220;without crossing lines&#8221; line is the part I&#8217;d want to understand better before trying it. nothing technically stops someone from dropping a handle that isn&#8217;t their own, right? the fun framing works fine when it&#8217;s your own account you&#8217;re paying to get roasted, but a public leaderboard card that anyone can point at anyone else&#8217;s handle is a different product. is there any check that the person submitting is roasting themselves, or is it fully open by design<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#15<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/O3ISXEJHQTQVYM\" class=\"app-title\">First Verse<\/a><\/p>\n<div class=\"one-liner\">The best new poems, written by real people<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">10<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>First Verse \u662f\u4e00\u4e2a\u8ba9\u771f\u5b9e\u8bd7\u4eba\u5feb\u901f\u53d1\u5e03\u65b0\u4f5c\u3001\u83b7\u5f97\u8bfb\u8005\u5373\u65f6\u53cd\u9988\u4e0e\u6253\u8d4f\u7684\u8bd7\u6b4c\u793e\u533a\uff0c\u89e3\u51b3\u4f20\u7edf\u6295\u7a3f\u5ba1\u6838\u6162\u3001\u8bd7\u6b4c\u8bba\u575b\u4f53\u9a8c\u5dee\u3001\u521b\u4f5c\u8005\u96be\u4ee5\u76f4\u63a5\u9762\u5bf9\u8bfb\u8005\u7684\u75db\u70b9\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/a6271233-84e4-44f1-b605-ce0a7524066e.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/bbac4fde-9b33-437b-b286-34a057345d66.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/90d1bd88-a4c3-4467-98f9-4eea6a5301ee.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/07fecf15-0b98-443d-b348-fc4468199830.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/61503a4c-7f48-4fa7-8106-d9b85679306c.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/95214575-9d2a-421e-a52b-e700e31f4662.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/826d4d3c-78b1-4afb-8922-87825ab8b8fb.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Writing<\/span><br \/>\n            <span class=\"tag\">Tech<\/span><br \/>\n            <span class=\"tag\">Community<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">\u8bd7\u6b4c\u793e\u533a<\/span><br \/>\n            <span class=\"tag\">\u521b\u4f5c\u8005\u5e73\u53f0<\/span><br \/>\n            <span class=\"tag\">\u5185\u5bb9\u53d1\u5e03<\/span><br \/>\n            <span class=\"tag\">\u8bfb\u8005\u53cd\u9988<\/span><br \/>\n            <span class=\"tag\">\u6253\u8d4f\u673a\u5236<\/span><br \/>\n            <span class=\"tag\">\u539f\u521b\u4fdd\u62a4<\/span><br \/>\n            <span class=\"tag\">AI\u8bc4\u4f30<\/span><br \/>\n            <span class=\"tag\">\u53cdAI\u68c0\u6d4b<\/span><br \/>\n            <span class=\"tag\">\u6bcf\u65e5\u7cbe\u9009<\/span><br \/>\n            <span class=\"tag\">\u5c0f\u4f17\u793e\u4ea4<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u7528\u6237\u4e3b\u8981\u5173\u6ce8\u4e09\u70b9\uff1a\u2460\u8bc4\u8bba\u5ef6\u8fdf\u673a\u5236\u662f\u5426\u771f\u7684\u63d0\u5347\u4e86\u53cd\u9988\u8d28\u91cf\uff1b\u2461\u201c\u79c1\u4eba\u5de5\u827a\u8bc4\u5206\u201d\u662f\u5426\u7531AI\u751f\u6210\uff0c\u4ee5\u53ca\u5982\u4f55\u907f\u514d\u521b\u4f5c\u8005\u4e3a\u5237\u5206\u800c\u5199\u4f5c\uff1b\u2462\u201c\u771f\u5b9e\u6027\u68c0\u67e5\u201d\u662f\u5b9e\u9645\u68c0\u6d4b\u8fd8\u662f\u9760\u8363\u8a89\u7cfb\u7edf\uff0c\u80fd\u5426\u6709\u6548\u62e6\u622aAI\u4ee3\u5199\u6216\u6284\u88ad\u8bd7\u6b4c\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                First Verse \u7684\u5b9a\u4f4d\u5f88\u6e05\u6670\uff1a\u5728AI\u5185\u5bb9\u6cdb\u6ee5\u7684\u65f6\u4ee3\uff0c\u53cd\u5411\u4e3b\u6253\u201c\u771f\u4eba\u771f\u8bd7\u201d\uff0c\u5e76\u8bd5\u56fe\u7528\u201c\u5feb\u901f\u53cd\u9988\u201d\u548c\u201c\u76f4\u63a5\u6253\u8d4f\u201d\u64ac\u52a8\u4f20\u7edf\u8bd7\u6b4c\u5708\u7684\u6c89\u75b4\u3002\u8fd9\u4e2a\u5207\u5165\u70b9\u786e\u5b9e\u654f\u9510\u2014\u2014\u8bd7\u6b4c\u7231\u597d\u8005\u7684\u75db\u70b9\u4e0d\u662f\u6ca1\u6709\u4f5c\u54c1\uff0c\u800c\u662f\u88ab\u6587\u5b66\u671f\u520a\u7684\u9ad8\u95e8\u69db\u548c\u6f2b\u957f\u5ba1\u7a3f\u5468\u671f\u529d\u9000\uff0c\u540c\u65f6\u7f3a\u4e4f\u4e00\u4e2a\u5c0a\u91cd\u521b\u4f5c\u3001\u6c1b\u56f4\u53cb\u597d\u7684\u4ea4\u6d41\u573a\u57df\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u4f46\u4ea7\u54c1\u76ee\u524d\u66b4\u9732\u7684\u95ee\u9898\u6bd4\u4eae\u70b9\u66f4\u503c\u5f97\u8b66\u60d5\u3002\u9996\u5148\uff0c10\u7968\u7684\u5f00\u5c40\u5728Product Hunt\u57fa\u672c\u5c5e\u4e8e\u201c\u9759\u9ed8\u53d1\u5e03\u201d\uff0c\u8bf4\u660e\u5176\u51b7\u542f\u52a8\u7b56\u7565\u548c\u4f20\u64ad\u94a9\u5b50\u90fd\u8f83\u5f31\uff0c\u793e\u533a\u578b\u4ea7\u54c1\u6700\u6015\u201c\u7a7a\u57ce\u8ba1\u201d\u2014\u2014\u5982\u679c\u65e9\u671f\u6ca1\u6709\u8db3\u591f\u7684\u4f18\u8d28\u8bd7\u4eba\u548c\u6d3b\u8dc3\u8bfb\u8005\u5f62\u6210\u53cc\u8fb9\u7f51\u7edc\u6548\u5e94\uff0c\u6240\u8c13\u201c\u6bcf\u65e5\u6700\u4f73\u8bd7\u201d\u5f88\u5bb9\u6613\u6ca6\u4e3a\u81ea\u55e8\u3002\u5176\u6b21\uff0c\u8bc4\u8bba\u4e2d\u90a3\u4f4d\u7528\u6237\u5bf9\u201c\u771f\u5b9e\u6027\u68c0\u67e5\u201d\u7684\u8d28\u7591\u4e00\u9488\u89c1\u8840\uff1a\u58f0\u79f0\u201c\u6bcf\u9996\u8bd7\u90fd\u7ecf\u8fc7\u5b89\u5168\u4e0e\u771f\u5b9e\u6027\u6838\u9a8c\u201d\uff0c\u5374\u65e0\u6cd5\u6e05\u6670\u8bf4\u660e\u68c0\u6d4b\u673a\u5236\u662fAI\u8bc6\u522b\u3001\u4eba\u5de5\u5ba1\u6838\u8fd8\u662f\u793e\u533a\u4e3e\u62a5\u3002\u5982\u679c\u53ea\u662f\u8363\u8a89\u7cfb\u7edf\uff0c\u90a3\u4e48\u201c\u771f\u4eba\u539f\u521b\u201d\u7684\u6838\u5fc3\u5356\u70b9\u5c31\u5f62\u540c\u865a\u8bbe\uff1b\u5982\u679c\u771f\u6709\u6280\u672f\u624b\u6bb5\uff0c\u5219\u9700\u660e\u786e\u62ab\u9732\uff0c\u5426\u5219\u4fe1\u4efb\u6210\u672c\u6781\u9ad8\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u66f4\u503c\u5f97\u73a9\u5473\u7684\u662f\u201c\u79c1\u4eba\u5de5\u827a\u8bc4\u5206\u201d\u529f\u80fd\u2014\u2014\u5b83\u5927\u6982\u7387\u7531AI\u6a21\u578b\u751f\u6210\uff0c\u4f46\u4ea7\u54c1\u5374\u523b\u610f\u6a21\u7cca\u8fd9\u4e00\u70b9\uff0c\u53ea\u6a21\u7cca\u8868\u793a\u201c\u65b9\u5411\u4e0a\u6709\u5e2e\u52a9\u201d\u3002\u8fd9\u5176\u5b9e\u662f\u4e2a\u53cc\u5203\u5251\uff1a\u4e00\u65b9\u9762\u80fd\u63d0\u4f9b\u5373\u65f6\u5199\u4f5c\u53cd\u9988\uff0c\u7b26\u5408\u201c\u5feb\u201d\u7684\u5b9a\u4f4d\uff1b\u4f46\u53e6\u4e00\u65b9\u9762\uff0c\u5982\u679c\u8bc4\u5206\u6a21\u578b\u4e0d\u591f\u900f\u660e\uff0c\u7528\u6237\u5f88\u5bb9\u6613\u9677\u5165\u201c\u4e3a\u8bc4\u5206\u800c\u5199\u4f5c\u201d\u7684\u5f02\u5316\u56f0\u5883\uff0c\u8fd9\u4e0e\u793e\u533a\u5f3a\u8c03\u7684\u201c\u771f\u5b9e\u60c5\u611f\u8868\u8fbe\u201d\u672c\u8d28\u4e0a\u662f\u81ea\u76f8\u77db\u76fe\u7684\u3002\u8bc4\u8bba\u4e2d\u90a3\u4f4d\u620f\u8c11\u201c\u5199\u8bd7\u4e3a\u4e86\u5206\u6570\u201d\u7684\u7528\u6237\uff0c\u5176\u5b9e\u5df2\u7ecf\u6233\u7834\u4e86\u8fd9\u5c42\u7a97\u6237\u7eb8\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u518d\u8c08\u6253\u8d4f\u673a\u5236\u3002\u201c100%\u7ed9\u8bd7\u4eba\u3001\u5e73\u53f0\u96f6\u62bd\u6210\u201d\u542c\u8d77\u6765\u9053\u5fb7\u9ad8\u5c1a\uff0c\u4f46\u53ef\u6301\u7eed\u6027\u5b58\u7591\u2014\u2014\u670d\u52a1\u5668\u6210\u672c\u3001\u5ba1\u6838\u6210\u672c\u3001AI\u8bc4\u4f30\u6210\u672c\u90fd\u7531\u5e73\u53f0\u627f\u62c5\uff0c\u5374\u6ca1\u6709\u76c8\u5229\u6a21\u5f0f\u3002\u5982\u679c\u672a\u6765\u5f15\u5165\u62bd\u6210\u6216\u4f1a\u5458\u8d39\uff0c\u65e9\u671f\u7528\u6237\u5fc5\u7136\u611f\u5230\u88ab\u80cc\u53db\uff1b\u5982\u679c\u4e00\u76f4\u70e7\u94b1\uff0c\u4ea7\u54c1\u5219\u5f88\u96be\u505a\u5927\u3002\u8fd9\u79cd\u201c\u7406\u60f3\u4e3b\u4e49\u201d\u5728\u521d\u671f\u53ef\u4ee5\u805a\u62e2\u4eba\u5fc3\uff0c\u4f46\u4f5c\u4e3a\u957f\u671f\u5546\u4e1a\u6a21\u578b\uff0c\u7f3a\u4e4f\u97e7\u6027\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u771f\u6b63\u7684\u4ef7\u503c\u5728\u4e8e\uff1a\u5b83\u5c1d\u8bd5\u91cd\u65b0\u5b9a\u4e49\u201c\u8bd7\u6b4c\u53d1\u8868\u201d\u7684\u8303\u5f0f\u548c\u53cd\u9988\u5faa\u73af\u3002\u4f20\u7edf\u671f\u520a\u662f\u201c\u7f16\u8f91\u7b5b\u9009-\u8bfb\u8005\u88ab\u52a8\u63a5\u6536\u201d\uff0c\u800cFirst Verse\u60f3\u53d8\u6210\u201c\u4f5c\u8005\u76f4\u53d1-\u8bfb\u8005\u5373\u65f6\u4e92\u52a8\u201d\u3002\u8fd9\u4e2a\u65b9\u5411\u662f\u5bf9\u7684\uff0c\u4f46\u9700\u8981\u5728\u771f\u5b9e\u6027\u9a8c\u8bc1\u3001AI\u8bc4\u5206\u900f\u660e\u5ea6\u3001\u793e\u533a\u51b7\u542f\u52a8\u4e09\u4ef6\u4e8b\u4e0a\u62ff\u51fa\u66f4\u786c\u6838\u7684\u89e3\u51b3\u65b9\u6848\u3002\u5426\u5219\uff0c\u5b83\u53ea\u80fd\u662f\u4e00\u4e2a\u5c0f\u800c\u7f8e\u7684\u6587\u827a\u5b9e\u9a8c\uff0c\u800c\u4e0d\u662f\u4e00\u4e2a\u80fd\u7a81\u7834\u5708\u5c42\u7684\u4ea7\u54c1\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">First Verse<\/span>\n                <\/div>\n<div class=\"comment-content\">First Verse is the place to find the best new poems every day; written and read by real people. Post your own work, get popular poems in your inbox, and tip other poets.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">Hey PH, <\/p>\n<p>I built First Verse because I was tired of submitting my poems and not hearing back for months, and because I was really frustrated by the UX on poetry boards. <\/p>\n<p>So this is a place to post your work and get feedback quickly from real people; not from poetry teachers, but from readers. And if you&#8217;re a reader you can check out new poems every day on the site or get them in your inbox. <\/p>\n<p>The goal is for this to become a supportive and constructive community; so comments are gated for a few days to prevent negativity (nod to the old PH days) and you can tip poets directly without fees (we get none of the money). <\/p>\n<p>**A few other points you might want to know:**<br \/>\n&#8211; Post a poem in minutes. No reading fee, no months-long wait. Every poem is checked for safety and authenticity. If it&#8217;s safe for everyone and genuinely yours, it publishes quickly.<br \/>\n&#8211; Build a following. Readers star the poems they love and follow poets they want to hear from again. Every poem gets its own page, and you get your own custom poet profile page.<br \/>\n&#8211; Get a private craft evaluation of your poem: scored, specific, and never shown to anyone but you. It&#8217;s not perfect, but so far it is directionally helpful\/interesting and we&#8217;ll keep improving it.<br \/>\n&#8211; Tips go to the poet. 100% of them. We never handle the money or add a fee.<br \/>\n&#8211; Your poems stay yours. You keep the copyright, and nothing you write is used to train AI.<br \/>\n&#8211; Reading is free and posting is free.<\/p>\n<p>Thanks so much for checking it out!! \ud83d\udc96<\/p><\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@awt\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@awt<\/a>&nbsp;the few-days comment delay is an interesting way to protect the community from random negativity.<br \/>curious if you\u2019ve already seen a difference in the quality of feedback because of it?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@awt\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@awt<\/a>&nbsp;Great Product Andrew!<\/p>\n<p>Is that private craft score AI-generated? <br \/>Also, Curious how you keep people from writing for the score instead of the poem. haha!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@awt\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@awt<\/a>&nbsp;the &#8220;authenticity&#8221; check is the part I&#8217;m most curious about, separate from the craft score question below. if someone pastes an AI-generated poem and claims it as their own, is there an actual detection step, or is it more of an honor-system flag that gets sorted out if readers or other poets call it out after the fact? seems like the hardest thing to enforce given how good AI poetry can sound on a surface read<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#16<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/ST5VTDHMWNGDVP\" class=\"app-title\">Cognitive Biases Academy<\/a><\/p>\n<div class=\"one-liner\">Free, 66 languages, one goal: a billion self-aware minds<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">9<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>Cognitive Biases Academy \u662f\u4e00\u6b3e\u514d\u8d39\u3001\u652f\u630166\u79cd\u8bed\u8a00\u3001\u6db5\u76d6190+\u8ba4\u77e5\u504f\u89c1\u7684\u7cfb\u7edf\u6027\u81ea\u6211\u8ba4\u77e5\u8bfe\u7a0b\uff0c\u5e2e\u52a9\u4f60\u5728\u65e5\u5e38\u51b3\u7b56\u4e2d\u8bc6\u522b\u601d\u7ef4\u9677\u9631\uff0c\u63d0\u5347\u5224\u65ad\u529b\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/438bdff0-c486-4a7f-827c-0280b7b8a554.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/af71ebdd-58ca-4d27-8318-1178df0ea489.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/62f48763-66f1-4b25-946d-89b28dcb36fb.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Health &#038; Fitness<\/span><br \/>\n            <span class=\"tag\">Productivity<\/span><br \/>\n            <span class=\"tag\">Social Impact<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">\u8ba4\u77e5\u504f\u89c1<\/span><br \/>\n            <span class=\"tag\">\u601d\u7ef4\u8bad\u7ec3<\/span><br \/>\n            <span class=\"tag\">\u81ea\u6211\u63d0\u5347<\/span><br \/>\n            <span class=\"tag\">\u5fc3\u7406\u5b66\u8bfe\u7a0b<\/span><br \/>\n            <span class=\"tag\">\u51b3\u7b56\u79d1\u5b66<\/span><br \/>\n            <span class=\"tag\">\u514d\u8d39\u6559\u80b2<\/span><br \/>\n            <span class=\"tag\">\u591a\u8bed\u8a00\u5b66\u4e60<\/span><br \/>\n            <span class=\"tag\">\u903b\u8f91\u601d\u7ef4<\/span><br \/>\n            <span class=\"tag\">\u884c\u4e3a\u7ecf\u6d4e\u5b66<\/span><br \/>\n            <span class=\"tag\">\u793e\u4f1a\u5f71\u54cd\u9879\u76ee<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u521b\u59cb\u4eba\u89e3\u91ca\u4e86\u9879\u76ee\u6e90\u4e8e\u201c10%\u4e34\u754c\u70b9\u201d\u4f20\u64ad\u7814\u7a76\uff0c\u5f3a\u8c03\u514d\u8d39\u4e0e\u591a\u8bed\u8a00\u7684\u793e\u4f1a\u4ef7\u503c\u3002\u7528\u6237\u672a\u63d0\u51fa\u5177\u4f53\u95ee\u9898\u6216\u5efa\u8bae\uff0c\u6838\u5fc3\u53cd\u9988\u4e3a\u5bf9\u9879\u76ee\u4f7f\u547d\u7684\u8ba4\u53ef\uff0c\u4ee5\u53ca\u5bf9\u201c\u6700\u5e38\u89c1\u8ba4\u77e5\u504f\u89c1\u201d\u7684\u4e2a\u4eba\u53cd\u601d\uff08\u521b\u59cb\u4eba\u81ea\u8ff0\u4e3a\u89c4\u5212\u8c2c\u8bef\uff09\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                \u8fd9\u6b3e\u4ea7\u54c1\u627e\u51c6\u4e86\u4e00\u4e2a\u771f\u5b9e\u4e14\u5de8\u5927\u7684\u8ba4\u77e5\u7f3a\u53e3\uff1a\u7edd\u5927\u591a\u6570\u4eba\u6839\u672c\u4e0d\u77e5\u9053\u81ea\u5df1\u201c\u60f3\u9519\u4e86\u201d\uff0c\u66f4\u522b\u63d0\u7cfb\u7edf\u6027\u7ea0\u6b63\u3002\u4ee5\u201c190+\u504f\u89c1+1800+\u53c2\u8003\u6587\u732e+66\u79cd\u8bed\u8a00\u201d\u6784\u5efa\u77e5\u8bc6\u5e93\uff0c\u95e8\u69db\u4f4e\u3001\u53ef\u4fe1\u5ea6\u4e0d\u4f4e\uff0c\u4e14\u514d\u8d39\u6a21\u5f0f\u5951\u5408\u201c\u793e\u4f1a\u5f71\u54cd\u201d\u53d9\u4e8b\uff0c\u6bd4\u5356\u8bfe\u7a0b\u66f4\u6709\u4f20\u64ad\u52bf\u80fd\u3002\u4f46\u95ee\u9898\u4e5f\u660e\u663e\uff1a\u7b2c\u4e00\uff0c\u77e5\u8bc6\u91cf\u4e0e\u884c\u4e3a\u6539\u53d8\u4e4b\u95f4\u9694\u7740\u5de8\u5927\u9e3f\u6c9f\u2014\u2014\u770b\u5b8c\u201c\u786e\u8ba4\u504f\u8bef\u201d\u7684\u5b9a\u4e49\uff0c\u4e0d\u4ee3\u8868\u4e0b\u6b21\u8c08\u5224\u65f6\u80fd\u73b0\u573a\u8bc6\u522b\u5b83\uff1b\u4ea7\u54c1\u7f3a\u5c11\u8bad\u7ec3\u3001\u53cd\u9988\u3001\u60c5\u5883\u5316\u7ec3\u4e60\uff0c\u5bb9\u6613\u6ca6\u4e3a\u201c\u81ea\u6211\u611f\u89c9\u826f\u597d\u7684\u6536\u85cf\u5939\u201d\u3002\u7b2c\u4e8c\uff0c10%\u4e34\u754c\u70b9\u7684\u5b8f\u5927\u53d9\u4e8b\u5f88\u7f8e\uff0c\u4f46\u5b9e\u9645\u8f6c\u5316\u8def\u5f84\u6a21\u7cca\uff1a\u5982\u4f55\u4ece\u201c\u5b66\u8fc7\u201d\u5230\u201c\u80fd\u7528\u201d\uff0c\u518d\u5230\u201c\u5f71\u54cd\u5468\u56f49\u4eba\u201d\uff0c\u6ca1\u6709\u673a\u5236\u8bbe\u8ba1\uff0c\u53ea\u6709\u613f\u666f\u3002\u7b2c\u4e09\uff0c\u6295\u7968\u6570\u4ec59\u4e2a\uff0c\u8bc4\u8bba\u4e5f\u4ee5\u521b\u59cb\u4eba\u81ea\u8ff0\u4e3a\u4e3b\uff0c\u8bf4\u660e\u5f53\u524d\u7f3a\u4e4f\u771f\u5b9e\u7528\u6237\u53cd\u9988\uff0c\u4ea7\u54c1\u53ef\u80fd\u4ecd\u5904\u4e8e\u65e9\u671f\u51b7\u542f\u52a8\u9636\u6bb5\uff0c\u9700\u8b66\u60d5\u201c\u5b64\u82b3\u81ea\u8d4f\u201d\u5f0f\u5f00\u53d1\u3002\u771f\u6b63\u7684\u4ef7\u503c\u4e0d\u5728\u4e8e\u201c\u6536\u5f55\u5168\u90e8\u504f\u89c1\u201d\uff0c\u800c\u5728\u4e8e\u80fd\u5426\u628a\u5fc3\u7406\u5b66\u7814\u7a76\u53d8\u6210\u53ef\u53cd\u590d\u7ec3\u4e60\u7684\u8ba4\u77e5\u808c\u8089\u3002\u82e5\u80fd\u52a0\u5165\u6bcf\u65e5\u4e00\u7ec3\u3001\u60c5\u666f\u6a21\u62df\u3001\u793e\u533a\u4e92\u6279\uff0c\u800c\u975e\u505c\u5728\u767e\u79d1\u5f0f\u957f\u6587\uff0c\u624d\u53ef\u80fd\u4ece\u201c\u77e5\u8bc6\u5e93\u201d\u8fdb\u5316\u4e3a\u201c\u8bad\u7ec3\u573a\u201d\u3002\u5426\u5219\uff0c\u5b83\u53ea\u662f\u53c8\u4e00\u672c\u6ca1\u4eba\u8bfb\u5b8c\u7684\u5fc3\u7406\u5b66\u6570\u5b57\u8bcd\u5178\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">Cognitive Biases Academy<\/span>\n                <\/div>\n<div class=\"comment-content\">Your brain misfires by design: 190+ ways, to be exact. Cognitive Biases Academy is a free library and course covering every documented bias in plain language: where it comes from, how it distorts your decisions, and how to catch it in yourself. Backed by 1,800+ academic references, translated into 66 languages, free forever, no card required. The mission: one billion people who can catch their own thinking going wrong. Science says 10% of us is enough to tip the rest. Be part of the 10%.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">Hey Product Hunt! \ud83d\udc4b<\/p>\n<p>I&#8217;m Volodymyr, maker of Cognitive Biases Academy.<\/p>\n<p>Here&#8217;s the study that started this project. In 2011, researchers at Rensselaer Polytechnic modelled how ideas spread through a network. Below 10% committed believers, an idea basically never takes over; it would take longer than the age of the universe. Cross 10%, and the majority follows fast.<\/p>\n<p>Now apply that to reasoning itself. If one person in ten can name a cognitive bias out loud and refuses to decide on it, the other nine adjust. Not because anyone argued them into it, because sloppy reasoning stops going unchallenged.<\/p>\n<p>That&#8217;s the whole plan: get a billion people through a free course on how the mind misjudges.<\/p>\n<p>What&#8217;s inside:<br \/>\n\ud83e\udde0 190+ cognitive biases explained in plain language: origins, real-life examples, and how to catch each one in yourself<br \/>\n\ud83d\udcda 1,800+ academic references: every article ends with its primary sources<br \/>\n\ud83c\udf0d 66 languages: because bias doesn&#8217;t speak only English<br \/>\n\ud83c\udd93 Free forever, no card, no paywall: it&#8217;s a social-impact project, not a funnel<\/p>\n<p>Right now we&#8217;re heading the wrong way: confidence keeps outrunning knowledge, and most people have never been told their brain misfires by design. This is my attempt to turn that around.<\/p>\n<p>I&#8217;d love your honest feedback: which bias catches YOU most often? Mine is the planning fallacy, every single time. \ud83d\ude05<\/p>\n<p>And if you find the project useful, sharing it in your language helps more than an upvote. That&#8217;s how we get to 10%.<\/p><\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#17<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/WB4KOBVUY2AJA2\" class=\"app-title\">Canned Web<\/a><\/p>\n<div class=\"one-liner\">Lock a Mac to one website. Kiosk mode. No MDM<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">8<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>Canned Web \u662f\u4e00\u6b3e\u5c06 Mac \u9501\u5b9a\u5230\u5355\u4e00\u5168\u5c4f\u7f51\u7ad9\u7684\u65e0 MDM \u5c55\u53f0\u6a21\u5f0f\u5de5\u5177\uff0c\u901a\u8fc7\u5bc6\u7801\u9000\u51fa\u4e0e\u57df\u9650\u5236\uff0c\u89e3\u51b3\u516c\u5171\u573a\u6240\u6f14\u793a\u3001\u5c55\u4f1a\u6216\u5c55\u89c8\u4e2d\u9632\u6b62\u8bbf\u5ba2\u8bef\u64cd\u4f5c\u6216\u7aa5\u63a2\u684c\u9762\u7684\u75db\u70b9\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <video class=\"media-content\" poster=\"https:\/\/ph-files.imgix.net\/5cdcaa72-ebae-4fe7-9882-cffb68225b02.jpeg?auto=format\" data-video-url=\"https:\/\/youtu.be\/XaSnTzUTN_0\"><source src=\"https:\/\/youtu.be\/XaSnTzUTN_0\" type=\"video\/mp4\"><\/video><\/p>\n<div class=\"video-overlay\">\n<div class=\"play-icon\">\u25b6<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/676906cb-8a5d-4f08-8c51-ac49b8266ca8.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/a4f08332-6b3b-4c9a-8d6f-1d7bb7cbe4e2.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/55a90273-700e-4eee-b6d4-85ca1eaf1386.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/7d131d1d-8331-4ee3-b438-31ab599183dc.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/8e014c88-8cf9-4134-b5ae-bdd41c00bdbf.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/e67fd393-dce6-4382-b9bb-9e02926d439a.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Mac<\/span><br \/>\n            <span class=\"tag\">Productivity<\/span><br \/>\n            <span class=\"tag\">Marketing<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">macOS\u5c55\u53f0\u6a21\u5f0f<\/span><br \/>\n            <span class=\"tag\">\u7f51\u7ad9\u9501\u5b9a<\/span><br \/>\n            <span class=\"tag\">\u6570\u5b57\u6807\u724c<\/span><br \/>\n            <span class=\"tag\">\u5c55\u5385\u6f14\u793a<\/span><br \/>\n            <span class=\"tag\">\u8bbf\u5ba2\u6a21\u5f0f<\/span><br \/>\n            <span class=\"tag\">\u65e0MDM<\/span><br \/>\n            <span class=\"tag\">\u4f01\u4e1a\u5b89\u5168<\/span><br \/>\n            <span class=\"tag\">\u5168\u5c4f\u9501\u5b9a<\/span><br \/>\n            <span class=\"tag\">\u5bc6\u7801\u9000\u51fa<\/span><br \/>\n            <span class=\"tag\">Mac\u5de5\u5177<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u6838\u5fc3\u7591\u95ee\u805a\u7126\u5728\u7269\u7406\u7535\u6e90\u952e\u4e0e Apple Silicon \u6062\u590d\u6a21\u5f0f\u7684\u7ed5\u8fc7\u98ce\u9669\uff0c\u5f00\u53d1\u8005\u56de\u5e94\u79f0\u53ef\u901a\u8fc7\u975e\u7ba1\u7406\u5458\u8d26\u6237\u4e0e FileVault \u5b9e\u73b0\u7cfb\u7edf\u7ea7\u515c\u5e95\u3002\u7528\u6237\u8ba4\u53ef\u8be5\u65b9\u6848\u6bd4\u9884\u671f\u5e72\u51c0\uff0c\u4f46\u5efa\u8bae\u5728\u8bf4\u660e\u4e2d\u5f3a\u5316\u6b64\u7c7b\u5b89\u5168\u52a0\u56fa\u6307\u5f15\uff0c\u4ee5\u8d62\u5f97\u5b66\u6821\u3001\u535a\u7269\u9986\u7b49IT\u4eba\u5458\u7684\u4fe1\u4efb\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                Canned Web \u7684\u5de7\u5999\u4e4b\u5904\u5728\u4e8e\u7528\u201c\u4e00\u6b21\u6027\u4e70\u65ad\u3001\u65e0 MDM\u3001\u65e0\u4e91\u201d\u5b8c\u6210\u4e86\u4e00\u6b21\u5bf9 macOS \u7cfb\u7edf\u7f3a\u5931\u80fd\u529b\u7684\u7cbe\u51c6\u8865\u4f4d\u3002\u4ece\u4ea7\u54c1\u672c\u8d28\u770b\uff0c\u5b83\u5356\u7684\u4e0d\u662f\u6280\u672f\u58c1\u5792\uff0c\u800c\u662f\u201c\u4fe1\u4efb\u201d\u4e0e\u201c\u8fb9\u754c\u201d\u2014\u2014\u5728\u4e00\u4e2a\u516c\u5f00\u89e6\u6478\u7684\u8bbe\u5907\u4e0a\uff0c\u7528\u6237\u8981\u7684\u662f\u7edd\u5bf9\u7684\u53ef\u9884\u671f\u884c\u4e3a\u3002\u8fd9\u6b3e\u5de5\u5177\u901a\u8fc7\u62e6\u622a Spotlight\u3001Cmd-Tab\u3001\u622a\u56fe\u4e0e\u57df\u5916\u5bfc\u822a\uff0c\u5b9e\u9645\u4e0a\u521b\u5efa\u4e86\u4e00\u4e2a\u201c\u8f6f\u9694\u79bb\u533a\u201d\uff0c\u628a\u8bbf\u5ba2\u7684\u64cd\u4f5c\u8fb9\u754c\u538b\u7f29\u5230\u4e00\u6839\u7f51\u7ebf\u548c\u4e00\u4e2a URL \u4e4b\u5185\u300249\u6b27\u5143\u7684\u5b9a\u4ef7\u7b56\u7565\u76f8\u5f53\u806a\u660e\uff0c\u5b83\u7784\u51c6\u4e86 MDM \u65b9\u6848\u201c\u6740\u9e21\u7528\u725b\u5200\u201d\u7684\u9884\u7b97\u7f1d\u9699\uff0c\u8ba9\u4e2d\u5c0f\u56e2\u961f\u3001\u535a\u7269\u9986\u7b56\u5c55\u4eba\u751a\u81f3\u4e34\u65f6\u6d3b\u52a8\u7b56\u5212\u8005\u65e0\u9700\u989d\u5916IT\u534f\u52a9\u5c31\u80fd\u5b8c\u6210\u90e8\u7f72\u3002\u4f46\u5b83\u7684\u5929\u82b1\u677f\u540c\u6837\u6e05\u6670\uff1a\u7269\u7406\u7535\u6e90\u952e\u4e0e\u6062\u590d\u6a21\u5f0f\u662f\u6c38\u8fdc\u65e0\u6cd5\u6d88\u9664\u7684\u7269\u7406\u540e\u95e8\uff0c\u8fd9\u610f\u5473\u7740\u5b83\u53ea\u80fd\u9632\u201c\u666e\u901a\u8bbf\u5ba2\u201d\uff0c\u9632\u4e0d\u4e86\u201c\u575a\u5b9a\u7834\u574f\u8005\u201d\u3002\u6b64\u5916\uff0c\u5355\u673a\u6388\u6743\u7684\u5546\u4e1a\u6a21\u5f0f\u9650\u5236\u4e86\u591a\u8bbe\u5907\u90e8\u7f72\u573a\u666f\u7684\u60f3\u8c61\u7a7a\u95f4\uff0c\u4e00\u65e6\u5ba2\u6237\u67095\u53f0\u4ee5\u4e0a\u7ec8\u7aef\uff0cMDM \u7684\u8fb9\u9645\u6210\u672c\u4f18\u52bf\u5c06\u8fc5\u901f\u53cd\u8d85\u3002\u503c\u5f97\u5e86\u5e78\u7684\u662f\uff0c\u5f00\u53d1\u8005\u5bf9\u81ea\u8eab\u5c40\u9650\u5766\u8bda\uff0c\u4e14\u975e\u7ba1\u7406\u5458\u8d26\u6237+FileVault \u7684\u515c\u5e95\u5efa\u8bae\uff0c\u663e\u793a\u5176\u7406\u89e3\u4e86\u4f01\u4e1a\u7ea7\u573a\u666f\u4e2d\u201c\u90e8\u7f72\u540e\u8d23\u4efb\u5f52\u5c5e\u201d\u7684\u6838\u5fc3\u7126\u8651\u3002\u603b\u4f53\u800c\u8a00\uff0c\u8fd9\u662f\u4e00\u4ef6\u6253\u78e8\u7cbe\u51c6\u7684\u201c\u7a84\u5de5\u5177\u201d\uff0c\u4ef7\u503c\u5728\u4e8e\u5feb\u901f\u6784\u5efa\u573a\u666f\u6c89\u6d78\u611f\uff0c\u800c\u975e\u66ff\u4ee3\u5b89\u5168\u7b56\u7565\u3002\u82e5\u672a\u6765\u80fd\u63a8\u51fa\u6279\u91cf\u7ba1\u7406\u63a7\u5236\u53f0\u6216\u591a\u7ad9\u70b9\u8ba2\u9605\uff0c\u6216\u8bb8\u80fd\u7a81\u7834\u5355\u54c1\u5de5\u5177\u7684\u5bbf\u547d\uff0c\u771f\u6b63\u5207\u5165\u6570\u5b57\u6807\u724c\u4e0e\u6559\u80b2\u5e02\u573a\u7684\u8179\u5730\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">Canned Web<\/span>\n                <\/div>\n<div class=\"comment-content\">macOS has no built-in kiosk mode. Canned Web locks a Mac to one website, fullscreen. Spotlight, Cmd-Tab and screenshots blocked, locked to your domain, exit only with a password. Great for product demos, trade-show booths, signage and exhibits. One-time \u20ac49, no MDM.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">Hey Product Hunt \ud83d\udc4b<\/p>\n<p>I&#8217;m David and I run a small design studio. Canned Web came out of a problem I ran into when I built the setup of an exhibit at a museum. Putting a Mac in front of the public and needing it to show exactly one website, nothing else is not that trivial.<\/p>\n<p>macOS has no built-in kiosk mode (no Guided Access like iPad), so your options are usually expensive MDM or fiddly configuration profiles. Total overkill for one screen. So I built the simple version.<\/p>\n<p>Enter a URL, hold \u2318\u21e7S, and the Mac is sealed fullscreen to that site. Spotlight, Cmd-Tab, Cmd-Q and screenshots are blocked, navigation is locked to your domain, it auto-starts back into the site after a reboot, and the only way out is your exit password.<\/p>\n<p>If you&#8217;re a founder: it&#8217;s genuinely great for demos at events; lock your product or demo to a Mac at your booth and hand it to anyone, with no risk of a curious visitor alt-tabbing to your desktop. Also great for reception screens, digital signage, museum\/gallery exhibits.<\/p>\n<p>It&#8217;s a simple one-time purchase, \u20ac49 per machine, no subscription, no cloud, nothing phones home. 14-day free trial. Native, notarized Mac app.<\/p>\n<p>But it&#8217;s not perfect; no app can disable the Mac&#8217;s physical power\/Touch ID button (macOS won&#8217;t expose it).<\/p>\n<p>\ud83c\udf89 For Product Hunt: PH50OFF gets you 50% off this week.<\/p>\n<p>I&#8217;d love your honest feedback. what would make this a no-brainer for your setup? Happy to answer anything.<\/p><\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@david_pfluegl1\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@david_pfluegl1<\/a>&nbsp;the power button caveat you flagged is the interesting one to me. on Apple Silicon, holding it long enough gets you into recovery mode, which in theory could be a path around the whole lock for someone determined enough at a trade show booth. is that actually possible in practice, or does something like the exit password\/FileVault end up blocking that too, just not by design<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>that&#8217;s a much cleaner answer than I expected honestly &#8211; non-admin kiosk account + FileVault means the &#8220;vulnerability&#8221; is really just standard macOS security doing its job, not something you had to build. good call adding the hardening note, that&#8217;s the kind of thing an IT person setting this up in a school or museum would want spelled out before they trust it in an unsupervised space<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#18<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/OONKTHIVIRMEUM\" class=\"app-title\">Mugmoji<\/a><\/p>\n<div class=\"one-liner\">Turn any photo into an animated Slack emoji. Free.<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">8<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>Mugmoji \u662f\u4e00\u6b3e\u7eaf\u6d4f\u89c8\u5668\u7aef\u7684\u514d\u8d39\u5de5\u5177\uff0c\u80fd\u81ea\u52a8\u62a0\u51fa\u7167\u7247\u4e2d\u7684\u4eba\u50cf\uff0c\u5957\u752873\u79cd\u52a8\u6001\u9884\u8bbe\uff0c\u4e00\u952e\u751f\u6210\u7b26\u5408Slack 128KB\u5927\u5c0f\u9650\u5236\u7684\u52a8\u753b\u8868\u60c5\uff0c\u89e3\u51b3\u7528\u6237\u624b\u52a8\u5236\u4f5cGIF\u8868\u60c5\u7e41\u7410\u4e14\u5c61\u6b21\u8d85\u9650\u7684\u75db\u70b9\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <video class=\"media-content\" poster=\"https:\/\/ph-files.imgix.net\/3c62cc9e-6fde-49da-a6ca-45631eb5f124.jpeg?auto=format\" data-video-url=\"https:\/\/youtu.be\/bAPMc5MLJH8\"><source src=\"https:\/\/youtu.be\/bAPMc5MLJH8\" type=\"video\/mp4\"><\/video><\/p>\n<div class=\"video-overlay\">\n<div class=\"play-icon\">\u25b6<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/6de7e28b-4e72-4dd9-87b9-112c7fb8fea3.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/e392d706-db72-491d-8a3e-12e40f171728.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/5e079453-5586-45c1-93e5-71a3239d6f45.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/64509db5-b431-4ae3-bd75-ce6983c0b01f.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/e152e3a4-da58-4d23-ba8a-86761856d530.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/3820122f-0799-4af2-b85d-4536d2fd718d.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/dc173d20-2ab7-485d-b941-918e2f079901.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Slack<\/span><br \/>\n            <span class=\"tag\">Design Tools<\/span><br \/>\n            <span class=\"tag\">Productivity<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">\u5728\u7ebf\u5de5\u5177<\/span><br \/>\n            <span class=\"tag\">\u52a8\u753b\u8868\u60c5<\/span><br \/>\n            <span class=\"tag\">GIF\u5236\u4f5c<\/span><br \/>\n            <span class=\"tag\">AI\u62a0\u56fe<\/span><br \/>\n            <span class=\"tag\">Slack\u96c6\u6210<\/span><br \/>\n            <span class=\"tag\">\u6d4f\u89c8\u5668\u7aef<\/span><br \/>\n            <span class=\"tag\">\u514d\u8d39\u65e0\u8d26\u53f7<\/span><br \/>\n            <span class=\"tag\">\u52a8\u6001\u9884\u8bbe<\/span><br \/>\n            <span class=\"tag\">\u56fe\u7247\u5904\u7406<\/span><br \/>\n            <span class=\"tag\">\u6548\u7387\u5de5\u5177<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u7528\u6237\u53cd\u9988\u6574\u4f53\u79ef\u6781\uff0c\u8ba4\u4e3a\u4ea7\u54c1\u6709\u8da3\u4e14\u590d\u53e4\u3002\u4e24\u6761\u6709\u6548\u5efa\u8bae\uff1a\u4e00\u662f73\u79cd\u52a8\u6548\u662f\u5426\u53ef\u589e\u52a0\u201c\u968f\u673a\u201d\u6309\u94ae\u4ee5\u51cf\u5c11\u9009\u62e9\u6210\u672c\uff1b\u4e8c\u662f\u5e0c\u671b\u672a\u6765\u6709\u793e\u533a\u753b\u5eca\u529f\u80fd\uff0c\u8ba9\u7528\u6237\u53ef\u5206\u4eab\u6216\u53d1\u73b0\u4ed6\u4eba\u5236\u4f5c\u7684\u4f18\u8d28\u8868\u60c5\uff0c\u7c7b\u4f3cGIPHY\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                Mugmoji\u7684\u806a\u660e\u4e4b\u5904\u5728\u4e8e\uff0c\u5b83\u6ca1\u6709\u53bb\u548c\u201cAI\u751f\u6210\u89c6\u9891\u201d\u6216\u201c\u9ad8\u7ea7\u52a8\u6548\u8f6f\u4ef6\u201d\u7ade\u4e89\uff0c\u800c\u662f\u7cbe\u51c6\u5207\u5165\u4e86\u4e00\u4e2a\u6781\u5ea6\u5782\u76f4\u3001\u6781\u5176\u7410\u788e\u3001\u4f46\u771f\u5b9e\u5b58\u5728\u7684\u804c\u573a\u793e\u4ea4\u573a\u666f\u2014\u2014\u8ba9\u6253\u5de5\u4eba\u5feb\u901f\u628a\u81ea\u5df1\u7684\u8138\u53d8\u6210Slack\u91cc\u7684\u52a8\u6001\u8868\u60c5\u3002\u521b\u59cb\u4ebaBen\u5766\u8bda\u7684\u6784\u5efa\u65e5\u5fd7\uff08\u5c24\u5176\u662f\u5bf9128KB\u538b\u7f29\u5faa\u73af\u7684\u6028\u5ff5\uff09\u66b4\u9732\u4e86\u8fd9\u4e2a\u4ea7\u54c1\u7684\u672c\u8d28\uff1a\u5b83\u4e0d\u662f\u4e00\u4e2a\u6280\u672f\u70ab\u6280\u54c1\uff0c\u800c\u662f\u4e00\u4e2a\u201c\u88ab\u81ea\u5df1\u7684\u9700\u6c42\u9a71\u52a8\u201d\u7684\u5b9e\u7528\u5de5\u5177\uff0c\u5176\u6838\u5fc3\u58c1\u5792\u5728\u4e8e\u90a3\u4e00\u5957\u201c\u6570\u5b66\u800c\u975e\u89c6\u9891\u201d\u768473\u79cd\u52a8\u6548\u5f15\u64ce\uff0c\u8fd9\u5e26\u6765\u4e86\u6781\u4f4e\u7684\u8fb9\u9645\u6210\u672c\u548c\u6781\u9ad8\u7684\u81ea\u5b9a\u4e49\u6f5c\u529b\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u4ece\u4ea7\u54c1\u7b56\u7565\u4e0a\u770b\uff0cMugmoji\u7684\u4ea7\u54c1\u5f62\u6001\u514b\u5236\u5f97\u8fd1\u4e4e\u4f18\u96c5\uff1a\u514d\u8d39\u3001\u514d\u767b\u5f55\u3001\u6d4f\u89c8\u5668\u8fd0\u884c\u300130\u79cd\u8bed\u8a00\uff0c\u8fd9\u6781\u5927\u964d\u4f4e\u4e86\u7528\u6237\u8bd5\u7528\u95e8\u69db\uff0c\u4e5f\u7b26\u5408\u201c\u7528\u5b8c\u5373\u8d70\u201d\u7684\u723d\u5feb\u5de5\u5177\u903b\u8f91\u3002\u4f46\u5371\u9669\u4e5f\u85cf\u4e8e\u6b64\u2014\u2014\u4f5c\u4e3a\u4e00\u6b3e\u65e0\u8d26\u53f7\u3001\u65e0\u5b58\u50a8\u3001\u65e0\u5206\u4eab\u94fe\u8def\u7684\u7eaf\u5de5\u5177\uff0c\u5b83\u7f3a\u5c11\u7528\u6237\u7559\u5b58\u548c\u81ea\u4f20\u64ad\u7684\u62a4\u57ce\u6cb3\u3002\u7528\u6237\u8bc4\u8bba\u4e2d\u63d0\u5230\u7684\u201c\u793e\u533a\u753b\u5eca\u201d\u6b63\u662f\u8981\u5bb3\uff1a\u5982\u679c\u7528\u6237\u505a\u5b8c\u8868\u60c5\u540e\u53ea\u80fdGIF\u4e0b\u8f7d\u5e26\u8d70\uff0c\u90a3\u4e48Mugmoji\u5c31\u53ea\u662f\u4e00\u4e2a\u9ad8\u7ea7\u7248\u6a21\u677f\u7f51\u7ad9\uff0c\u7ec8\u5c06\u88ab\u5177\u6709\u6a21\u578b\u5fae\u8c03\u6216\u6279\u91cf\u5904\u7406\u80fd\u529b\u7684\u7ade\u54c1\u590d\u5236\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u771f\u6b63\u7684\u4ef7\u503c\u951a\u70b9\u5728\u4e8e\u201c\u5de5\u4f5c\u6d41\u7ec8\u7ed3\u8005\u201d\u89d2\u8272\uff1a\u5b83\u5c06\u539f\u672c\u9700\u8981\u534a\u5c0f\u65f6\u4e14\u5927\u6982\u7387\u5931\u8d25\u7684\u8fc7\u7a0b\u538b\u7f29\u5230\u5341\u79d2\u5185\uff0c\u8fd9\u4e2a\u6548\u7387\u63d0\u5347\u672c\u8eab\u662f\u786c\u6838\u7684\u3002\u4f46\u672a\u6765\u5982\u679c\u53ea\u505c\u7559\u5728\u201cSlack\u8868\u60c5\u201d\u8fd9\u4e00\u4e00\u4e2a\u51fa\u53e3\uff0c\u5929\u82b1\u677f\u592a\u4f4e\u3002\u8bbd\u523a\u7684\u662f\uff0c\u5b83\u6700\u5f3a\u5927\u7684\u201c\u538b\u7f29\u5faa\u73af\u7b97\u6cd5\u201d\u548c\u201c\u6570\u5b66\u52a8\u6548\u5f15\u64ce\u201d\u5b8c\u5168\u53ef\u4ee5\u53bb\u6311\u6218WhatsApp\u3001Telegram\u3001Discord\u7b49\u66f4\u5e7f\u6cdb\u7684\u8d34\u7eb8\u5e02\u573a\uff0c\u751a\u81f3\u6210\u4e3a\u4e2a\u4ebaIP\u884d\u751f\u7269\u7684\u751f\u6210\u5de5\u5177\u3002\u76ee\u524d\u5b83\u662f\u4e2a\u597d\u7528\u7684\u73a9\u5177\uff0c\u4f46\u79bb\u4e00\u4e2a\u9ad8\u7c98\u6027\u4ea7\u54c1\uff0c\u8fd8\u7f3a\u4e00\u4e2a\u201c\u8ba9\u7528\u6237\u56de\u6765\u201d\u7684\u7406\u7531\u3002Ben\u95ee\u7528\u6237\u201c73\u4e2a\u52a8\u6548\u662f\u5426\u592a\u591a\u201d\uff0c\u5b9e\u9645\u4e0a\u66f4\u8be5\u95ee\u7684\u662f\uff1a\u201c\u5982\u4f55\u8ba9\u7528\u6237\u4e0b\u6b21\u505a\u8868\u60c5\u65f6\uff0c\u7b2c\u4e00\u4e2a\u60f3\u5230\u7684\u4e0d\u662f\u4e0b\u8f7d\uff0c\u800c\u662f\u56de\u5230Mugmoji\uff1f\u201d\u7b54\u6848\u4e0d\u5728\u52a8\u6548\u6570\u91cf\uff0c\u800c\u5728\u793e\u4ea4\u88c2\u53d8\u4e0e\u4f5c\u54c1\u6c89\u6dc0\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">Mugmoji<\/span>\n                <\/div>\n<div class=\"comment-content\">Upload a photo. Mugmoji cuts out the background, you pick from 73 motion presets, and it exports an animated GIF already sized and compressed for Slack&#8217;s 128KB emoji limit. Free, no account, nothing to install. Runs entirely in your browser.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">Hey Product Hunt \ud83d\udc4b<\/p>\n<p>I&#8217;m Ben. I built Mugmoji, and I&#8217;m the whole team.<\/p>\n<p>This started because I wanted one animated emoji of my own face for a Slack workspace, and it took me most of an evening. Cut the background out by hand. Find a bounce that doesn&#8217;t look terrible. Export a GIF. Get told the file is too big. Export again. Get told it&#8217;s still too big. Somewhere around the fourth attempt I stopped wanting the emoji and started wanting the tool.<\/p>\n<p>What it does: you upload a photo, the background comes off automatically, you pick a motion, and you get a GIF that Slack will accept on the first try. In testing the background removal took about a second and the whole flow ran well under ten. There are 73 motions across six categories \u2014 Energetic, Silly, Cute, Cinematic, Menacing and Glitch \u2014 including Headbang, Laser Eyes, Banana Dance, Poop Drop, Coffee Sip, Its Fine and ZZZ Sleep. There&#8217;s also a GIF Remix mode where you search GIPHY for a transparent GIF and layer it behind or in front of your subject.<\/p>\n<p>The parts that were genuinely hard:<\/p>\n<p>The motion presets are math, not video. Each of the 73 is a pure function of time \u2014 you hand it t between 0 and 1 and it returns position, rotation, scale and opacity. The engine samples that function once per frame and paints it onto a canvas. That&#8217;s why there are 73 of them and not 8: adding one is writing a couple of lines of trigonometry, not producing an animation. It also means speed and size are free \u2014 resample the same function differently and you get a different GIF, no re-rendering pipeline required.<\/p>\n<p>The GIF encoding all happens on your machine. Frames are encoded client-side in a web worker via gif.js. Nothing goes to a server to be turned into a GIF.<\/p>\n<p>Slack&#8217;s 128KB ceiling is the actual boss fight. An animated GIF that looks good is almost always too big, and &#8220;almost small enough&#8221; is the same as failing. So the encoder runs a compression loop \u2014 encode, measure, and if it&#8217;s over the line, drop frames and coarsen the palette and go again. Six passes, targeting 96KB so there&#8217;s headroom under Slack&#8217;s 128KB. A real export in my testing came out at 58.5 KB. This one loop is responsible for more of my debugging hours than every visual effect combined, and it&#8217;s the reason the emoji uploads on the first attempt instead of the fourth.<\/p>\n<p>The whole thing is a fake Mac OS Classic desktop, because I wanted it to feel like a toy rather than a tool. Drag the windows around. The icons move too.<\/p>\n<p>What&#8217;s missing, honestly: background removal is good but not perfect on hair and glasses, so there&#8217;s a manual brush (&#8220;Edit Background&#8221;) to erase or restore areas when it misses \u2014 I&#8217;d rather it just never missed. There&#8217;s no bulk export yet, so making the same face in six motions means six trips through the flow. And there&#8217;s no shareable link for an emoji you&#8217;ve made. Those three are what I&#8217;d like to fix next, roughly in that order.<\/p>\n<p>It&#8217;s free, there&#8217;s no account, there&#8217;s no signup, and nothing installs. It&#8217;s localised into 30 languages. There is no paid tier waiting behind a door.<\/p>\n<p>What I&#8217;d love from you: make one, and tell me where the flow annoyed you. Specifically \u2014 is the right motion easy to find among 73, or is that just too many things to scroll past? That&#8217;s the design question I&#8217;m least sure I got right. And if a photo of yours comes out badly, I&#8217;d genuinely like to see it.<\/p>\n<p>Thanks for taking a look. I&#8217;m here all day and I&#8217;ll answer everything.<\/p>\n<p>\u2014 Ben<\/p><\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@ben_shih\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@ben_shih<\/a>&nbsp;Awesome Launch Ben!<\/p>\n<p>On the 73 motions, any thought of a &#8220;surprise me&#8221; shuffle for people who don&#8217;t want to scroll?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Ah this is so fun! Love this concept lol. It reminds me of the 90s web for some reason haha. <\/p>\n<p>Kinda want like a &#8220;community&#8221; gallery where users can publish their stickers for others to embed (but only if they choose so obvs). Sort of like GIPHY &#8211; so users can find cool stickers to use like emotes in Slack etc<\/p>\n<p>Congrats on the launch!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#19<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/OJXZYM2OUD57J7\" class=\"app-title\">Gemini for Students<\/a><\/p>\n<div class=\"one-liner\">Introducing 1 Year Free Google AI for College Students<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">6<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>\u4e3a\u5168\u7403\u5927\u5b66\u751f\u63d0\u4f9b\u6574\u6574\u4e00\u5e74\u514d\u8d39Google AI Pro\/Plus\u8ba2\u9605\uff0c\u5e76\u5728Gemini\u4e2d\u5185\u7f6e\u4e13\u5c5eStudent Hub\uff0c\u5c06\u788e\u7247\u5316\u7684\u5b66\u4e60\u5de5\u5177\u6574\u5408\u4e3a\u201c\u81ea\u9002\u5e94\u7b14\u8bb0+3D\u53ef\u89c6\u5316+\u6df1\u5ea6\u7814\u7a76\u201d\u7684\u4e00\u7ad9\u5f0f\u5b66\u672f\u5de5\u4f5c\u6d41\uff0c\u76f4\u51fb\u5b66\u751f\u591a\u5de5\u5177\u5207\u6362\u3001\u6548\u7387\u4f4e\u4e0b\u7684\u75db\u70b9\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/0528da46-ff80-4047-8e5b-755fe2fd855c.jpeg?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/1322d512-6d61-4bb3-982c-e9e981598749.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/6301e2e7-667c-45b8-9b9f-1b69bea366ae.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/7a2b5b3f-5970-444c-aba9-63c91d2605c9.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/dd9f634a-d71b-48b1-aaa5-0a7051c9648f.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/6ee3874f-cbe2-496b-8c3a-cb8fda29e162.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Productivity<\/span><br \/>\n            <span class=\"tag\">Education<\/span><br \/>\n            <span class=\"tag\">Artificial Intelligence<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">AI\u6559\u80b2<\/span><br \/>\n            <span class=\"tag\">\u5b66\u751f\u4f18\u60e0<\/span><br \/>\n            <span class=\"tag\">\u5b66\u4e60\u5de5\u5177<\/span><br \/>\n            <span class=\"tag\">Gemini<\/span><br \/>\n            <span class=\"tag\">\u5b66\u672f\u52a9\u624b<\/span><br \/>\n            <span class=\"tag\">\u514d\u8d39\u8ba2\u9605<\/span><br \/>\n            <span class=\"tag\">\u77e5\u8bc6\u7ba1\u7406<\/span><br \/>\n            <span class=\"tag\">\u6df1\u5ea6\u7814\u7a76<\/span><br \/>\n            <span class=\"tag\">\u81ea\u9002\u5e94\u5b66\u4e60<\/span><br \/>\n            <span class=\"tag\">\u6548\u7387\u63d0\u5347<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u552f\u4e00\u6709\u6548\u8bc4\u8bba\u6765\u81ea\u730e\u4eba\u81ea\u8ff0\uff1a\u5f3a\u8c03\u5b66\u751f\u5de5\u5177\u788e\u7247\u5316\uff0c\u8d5e\u8d4f\u514d\u8d39\u4e00\u5e74Pro\uff08\u4ef7\u503c$240\uff09\u53ca5TB\u5b58\u50a8\u3001Workspace\u96c6\u6210\u30013D\u53ef\u89c6\u5316\u4e0e\u81ea\u9002\u5e94\u7b14\u8bb0\u672c\uff0c\u5e76\u629b\u51fa\u201c\u5148\u4ea4\u7ed9AI\u54ea\u4e00\u73af\u201d\u7684\u4e92\u52a8\u95ee\u9898\u3002\u65e0\u5b9e\u8d28\u8d1f\u9762\u53cd\u9988\uff0c\u4f46\u4ec5\u4e00\u6761\u8bc4\u8bba\uff0c\u6837\u672c\u6781\u5c11\uff0c\u7f3a\u4e4f\u771f\u5b9e\u7528\u6237\u9a8c\u8bc1\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                \u8fd9\u4e2a\u201c\u4ea7\u54c1\u201d\u672c\u8d28\u4e0a\u4e0d\u662f\u4e00\u6b3e\u65b0APP\uff0c\u800c\u662f\u4e00\u6b21\u7cbe\u51c6\u7684\u6e20\u9053\u8425\u9500\u2014\u2014Google\u7528\u4e00\u5e74\u514d\u8d39Pro\u8ba2\u9605\uff08\u6210\u672c\u7ea6$240\/\u4eba\uff0c\u5168\u7403\u5927\u5b66\u5b58\u91cf\u6570\u767e\u4e07\u7ea7\uff09\u6362\u53d6\u5b66\u751f\u7fa4\u4f53\u7684AI\u4e60\u60ef\u517b\u6210\u548cGemini\u751f\u6001\u9501\u5b9a\u3002\u6218\u7565\u4e0a\u65e0\u53ef\u6311\u5254\uff1a\u5b66\u751f\u662f\u672a\u6765\u9ad8\u4ed8\u8d39\u8f6c\u5316\u7fa4\u4f53\uff0c\u4e14\u5b66\u672f\u573a\u666f\u5929\u7136\u9002\u5408AI\u6e17\u900f\uff08\u68c0\u7d22\u3001\u603b\u7ed3\u3001\u63d0\u7eb2\u6308\u9886\uff09\u3002\u4f46\u9510\u8bc4\u8981\u770b\u672c\u8d28\uff1aStudent Hub\u76ee\u524d\u4ec5\u6709\u201c\u81ea\u9002\u5e94\u7b14\u8bb0\u672c\u30013D\u53ef\u89c6\u5316\u3001Deep Research\u201d\u4e09\u4e2a\u4eae\u70b9\uff0c\u524d\u4e24\u8005\u4ecd\u662f\u751f\u6210\u5f0fAI\u7684\u5e38\u89c4\u6f14\u793a\u7ea7\u529f\u80fd\uff0c\u5e76\u672a\u5c55\u793a\u51fa\u4e0eNotion AI\u3001Quizlet\u6216Perplexity\u7684\u5dee\u5f02\u5316\u58c1\u5792\uff1b\u800c\u201c\u514d\u8d39\u4e00\u5e74\u201d\u80cc\u540e\u662f\u6570\u636e\u8bad\u7ec3\u548c\u7528\u6237\u7c98\u6027\u7684\u9690\u6027\u6210\u672c\uff0c\u5b66\u751f\u7528\u6237\u9700\u8b66\u60d5\u5b66\u672f\u6570\u636e\u88ab\u7528\u4e8e\u6a21\u578b\u8fed\u4ee3\u7684\u9690\u79c1\u6761\u6b3e\u3002\u66f4\u5173\u952e\u7684\u662f\uff0cProduct Hunt\u4e0a\u6295\u7968\u4ec56\u7968\u3001\u8bc4\u8bba\u4ec51\u6761\u4e14\u81ea\u95ee\u81ea\u7b54\uff0c\u8bf4\u660e\u8be5\u201c\u7206\u54c1\u201d\u5728PH\u793e\u533a\u5e76\u672a\u5f15\u53d1\u771f\u5b9e\u70ed\u5ea6\u2014\u2014\u8fd9\u66f4\u50cf\u4e00\u7bc7\u5b98\u65b9\u65b0\u95fb\u7a3f\u800c\u975e\u4ea7\u54c1\u53d1\u5e03\u3002\u771f\u5b9e\u4ef7\u503c\u5728\u4e8e\uff1a\u5b83\u9a8c\u8bc1\u4e86\u201c\u9ad8\u6821\u6e20\u9053+\u9876\u7ea7\u6a21\u578b+\u514d\u8d39\u7b56\u7565\u201d\u662fAI\u6559\u80b2\u8d5b\u9053\u6700\u7c97\u66b4\u6709\u6548\u7684\u83b7\u5ba2\u624b\u6bb5\uff0c\u4f46\u5bf9Google\u800c\u8a00\uff0c\u4e00\u5e74\u540e\u82e5\u4e0d\u80fd\u8f6c\u5316\u4ed8\u8d39\uff0c\u8fd9\u6279\u7528\u6237\u5c06\u8fc5\u901f\u6d41\u5931\u3002\u5bf9\u5b66\u751f\uff0c\u8bf7\u628a\u5b83\u5f53\u4f5c\u9ad8\u914d\u8bd5\u7528\u88c5\uff0c\u800c\u975e\u5b66\u4e60\u6551\u4e16\u4e3b\uff1b\u5bf9\u7ade\u54c1\uff0c\u8fd9\u624d\u662f\u771f\u6b63\u9700\u8981\u8b66\u60d5\u7684\u964d\u7ef4\u6253\u51fb\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">Gemini for Students<\/span>\n                <\/div>\n<div class=\"comment-content\">Supercharge your academic workflow. Google is offering eligible college students worldwide 1 full year of Google AI Pro or Google AI Plus at no cost, paired with an all-new Student Hub inside Gemini. Claim your 12-month free access today at gemini.google.com\/students!<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Excited to hunt the new <strong>Google AI Student Offer &amp; Student Hub<\/strong> today!<\/p>\n<\/p>\n<p>Students juggle too many fragmented tools: chat apps, flashcard tools, PDF summarizers, manual planners. Google&#8217;s fixing that: its most powerful AI tier, completely free for college students.<\/p>\n<\/p>\n<p><strong>The offer:<\/strong> a full 1 year subscription to <strong>Google AI Pro<\/strong> ($240 value, US) or <strong>Google AI Plus<\/strong> internationally, plus a dedicated Student Hub inside Gemini.<\/p>\n<\/p>\n<p><strong>What stood out to me:<\/strong><\/p>\n<ul>\n<li>\n<p><strong>Adaptive Study Notebooks<\/strong> \u2014 quiz you on class material, build custom study plans from the gaps<\/p>\n<\/li>\n<li>\n<p><strong>3D Visualizations<\/strong> \u2014 turn complex topics into interactive simulations, right in chat<\/p>\n<\/li>\n<li>\n<p><strong>Hands free Deep Research<\/strong> \u2014 kick off research via Gemini Live, it scans sources and discusses the report on the go<\/p>\n<\/li>\n<li>\n<p><strong>Instant access<\/strong> \u2014 zero cost for 12 months, expanded usage limits, Workspace integration, 5 TB storage<\/p>\n<\/li>\n<\/ul>\n<p>Claim your 12 month access at <a href=\"http:\/\/gemini.google.com\/students\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">gemini.google.com\/students<\/a>.<\/p>\n<\/p>\n<p>Question for the community: which part of your workflow would you hand to AI first: syllabus organization, research synthesis, or exam prep? \ud83d\udc47<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#20<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/O5O4ZOPJQF6EGY\" class=\"app-title\">Quick RSS<\/a><\/p>\n<div class=\"one-liner\">Private RSS Reader<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">6<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>Quick RSS \u662f\u4e00\u6b3e\u4e3b\u6253\u9690\u79c1\u4fdd\u62a4\u7684\u684c\u9762\u7aef RSS \u9605\u8bfb\u5668\uff0c\u65e8\u5728\u4e3a\u538c\u5026\u4e86\u793e\u4ea4\u5316\u4fe1\u606f\u6d41\u548c\u7b97\u6cd5\u63a8\u8350\u7684\u7528\u6237\uff0c\u63d0\u4f9b\u8f7b\u91cf\u3001\u4e13\u6ce8\u4e14\u65e0\u5e72\u6270\u7684\u8ba2\u9605\u9605\u8bfb\u4f53\u9a8c\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/13d3c121-4376-44e7-bd1e-c24771a64d09.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/88993a28-9821-4387-90df-e3d422b56bf2.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/43ad3610-0217-46fb-b8a2-cf062d6ef561.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/7874a9ad-dbd3-4d65-a689-56a090f0b43e.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/85bcc1d9-58fa-46b5-a5bc-b2d7e158c7d1.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Productivity<\/span><br \/>\n            <span class=\"tag\">News<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">RSS\u9605\u8bfb\u5668<\/span><br \/>\n            <span class=\"tag\">\u684c\u9762\u5e94\u7528<\/span><br \/>\n            <span class=\"tag\">\u9690\u79c1\u4fdd\u62a4<\/span><br \/>\n            <span class=\"tag\">\u65e0\u5e7f\u544a<\/span><br \/>\n            <span class=\"tag\">\u672c\u5730\u5b58\u50a8<\/span><br \/>\n            <span class=\"tag\">\u8ba2\u9605\u7ba1\u7406<\/span><br \/>\n            <span class=\"tag\">OPML\u5bfc\u5165<\/span><br \/>\n            <span class=\"tag\">\u6781\u7b80\u5de5\u5177<\/span><br \/>\n            <span class=\"tag\">\u65b0\u95fb\u805a\u5408<\/span><br \/>\n            <span class=\"tag\">\u6548\u7387\u5de5\u5177<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u7528\u6237\u6000\u5ff5 Google Reader \u65f6\u4ee3\u7684\u7eaf\u7cb9\u9605\u8bfb\uff0c\u53cd\u611f\u73b0\u4ee3 RSS \u4ea7\u54c1\u5f3a\u884c\u793e\u4ea4\u5316\u548c\u7b97\u6cd5\u63a8\u8350\u3002\u6838\u5fc3\u7591\u8651\u662f\u201c\u9690\u79c1\u201d\u7684\u5177\u4f53\u5b9e\u73b0\u2014\u2014\u662f\u5426\u4ec5\u6307\u65e0\u5e7f\u544a\uff0c\u8fd8\u662f\u9605\u8bfb\u72b6\u6001\u4e0e\u8ba2\u9605\u5217\u8868\u5b8c\u5168\u672c\u5730\u5316\uff1b\u540c\u65f6\u5173\u6ce8\u662f\u5426\u652f\u6301 OPML \u5bfc\u5165\u4ee5\u964d\u4f4e\u8fc1\u79fb\u6210\u672c\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                Quick RSS \u7684\u5207\u5165\u70b9\u7cbe\u51c6\u8e29\u5728\u4e86\u8001\u6d3e RSS \u7528\u6237\u7684\u75db\u70b9\u4e0a\uff1a\u53cd\u793e\u4ea4\u3001\u53cd\u63a8\u8350\u3001\u53cd\u8ffd\u8e2a\u3002\u5728\u4fe1\u606f\u8fc7\u8f7d\u548c\u7b97\u6cd5\u8327\u623f\u7684\u53cc\u91cd\u56f4\u527f\u4e0b\uff0c\u201c\u56de\u5f52\u539f\u59cb\u8ba2\u9605\u201d\u786e\u5b9e\u662f\u4e00\u80a1\u6e05\u6d41\uff0c\u4e14\u684c\u9762\u7aef\u5b9a\u4f4d\u4e5f\u5de7\u5999\u907f\u5f00\u4e86\u79fb\u52a8\u7aef\u7ea2\u6d77\u3002\u7136\u800c\uff0c\u8fd9\u6b3e\u4ea7\u54c1\u76ee\u524d\u66b4\u9732\u51fa\u7684\u95ee\u9898\u6bd4\u5176\u5356\u70b9\u66f4\u8010\u4eba\u5bfb\u5473\u3002\u9996\u5148\uff0c6\u7968\u7684\u60e8\u6de1\u6570\u636e\u8bf4\u660e\u5176\u5c1a\u672a\u5f15\u8d77\u5e02\u573a\u6709\u6548\u5173\u6ce8\uff1b\u5176\u6b21\uff0c\u8bc4\u8bba\u533a\u552f\u4e00\u7684\u6df1\u5ea6\u63d0\u95ee\u76f4\u6307\u8981\u5bb3\u2014\u2014\u201c\u9690\u79c1\u201d\u82e5\u53ea\u662f\u6ca1\u6709\u5e7f\u544a\u548c\u7edf\u8ba1\uff0c\u90a3\u4e0d\u8fc7\u662f\u672c\u5206\uff1b\u82e5\u505a\u4e0d\u5230\u9605\u8bfb\u72b6\u6001\u548c\u8ba2\u9605\u6e90\u7684\u5b8c\u5168\u672c\u5730\u5316\uff0c\u6240\u8c13\u7684\u201cPrivate\u201d\u5c31\u662f\u8425\u9500\u8bdd\u672f\u3002\u66f4\u81f4\u547d\u7684\u662f\uff0cRSS \u8d5b\u9053\u672c\u5c31\u5c0f\u4f17\uff0c\u684c\u9762\u7aef\u66f4\u662f\u7a84\u4e2d\u4e4b\u7a84\uff0c\u5982\u679c\u6ca1\u6709 OPML \u4e00\u952e\u8fc1\u79fb\u548c\u8de8\u8bbe\u5907\u540c\u6b65\uff08\u54ea\u6015\u662f\u624b\u52a8\u6587\u4ef6\u540c\u6b65\uff09\uff0c\u5b83\u8fde\u201c\u66ff\u4ee3\u54c1\u201d\u90fd\u7b97\u4e0d\u4e0a\uff0c\u53ea\u80fd\u7b97\u201c\u6000\u65e7\u73a9\u5177\u201d\u3002\u5f53\u524d\u5e02\u9762\u4e0a\u7684\u771f\u6b63\u7ade\u54c1\uff08\u5982 Reeder\u3001NetNewsWire\uff09\u65e9\u5df2\u5728\u672c\u5730\u4f18\u5148\u4e0e\u9690\u79c1\u4e0a\u505a\u5230\u6781\u81f4\uff0cQuick RSS \u82e5\u6ca1\u6709\u66f4\u6fc0\u8fdb\u7684\u5dee\u5f02\u5316\uff08\u5982\u7aef\u5230\u7aef\u52a0\u5bc6\u540c\u6b65\u3001AI \u6458\u8981\u79bb\u7ebf\u5316\uff09\uff0c\u5c06\u5f88\u96be\u9003\u8131\u201c\u53c8\u4e00\u4e2a\u6781\u7b80RSS\u9605\u8bfb\u5668\u201d\u7684\u5bbf\u547d\u3002\u5b83\u7684\u4ef7\u503c\u76ee\u524d\u4ec5\u9650\u4e8e\u9a8c\u8bc1\u201c\u53cd\u7b97\u6cd5\u201d\u9700\u6c42\u4f9d\u7136\u5b58\u5728\uff0c\u4f46\u4ea7\u54c1\u529b\u8fdc\u672a\u5151\u73b0\u8fd9\u4e2a\u9700\u6c42\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">Quick RSS<\/span>\n                <\/div>\n<div class=\"comment-content\">Quick RSS is an easy-to-use, private, and intuitive desktop RSS reader. Whether you&#8217;re a news enthusiast or someone who likes to follow blog posts and headlines, Quick RSS helps you effortlessly manage and read your favorite RSS feeds.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>been wanting a dead-simple RSS reader again since Google Reader days, most &#8220;modern&#8221; ones I&#8217;ve tried try to turn every feed into a social timeline with recommendations and read tracking. curious what &#8220;private&#8221; means concretely here &#8211; is it just no ads\/analytics in the app itself, or does read state and your feed list stay fully local instead of syncing to a server? also does it support OPML import, that&#8217;s usually the first thing that decides if I actually switch or not<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<\/div>\n<p><!-- \u56fe\u7247\u653e\u5927\u6a21\u6001\u6846 --><\/p>\n<div id=\"imageModal\" class=\"modal\">\n    <span class=\"close\">&times;<\/span><br \/>\n    <img class=\"modal-content\" id=\"modalImage\">\n<\/div>\n<p><script>\n    \/\/ \u83b7\u53d6\u6a21\u6001\u6846\u5143\u7d20\n    const modal = document.getElementById(\"imageModal\");\n    const modalImg = document.getElementById(\"modalImage\");\n    const closeBtn = document.getElementsByClassName(\"close\")[0];<\/p>\n<p>    \/\/ \u68c0\u6d4b\u662f\u5426\u4e3a\u79fb\u52a8\u8bbe\u5907\n    const isMobile = \/iPhone|iPad|iPod|Android\/i.test(navigator.userAgent);<\/p>\n<p>    \/\/ \u4e3a\u79fb\u52a8\u8bbe\u5907\u6dfb\u52a0\u89e6\u6478\u4f18\u5316\n    function addTouchOptimization() {\n        if (isMobile) {\n            \/\/ \u4e3a\u6240\u6709\u53ef\u70b9\u51fb\u5143\u7d20\u6dfb\u52a0\u89e6\u6478\u53cd\u9988\n            const clickableElements = document.querySelectorAll(\n                '.media-content, .close, .video-overlay, .play-icon'\n            );<\/p>\n<p>            clickableElements.forEach(el => {\n                el.style.touchAction = 'manipulation'; \/\/ \u9632\u6b62\u53cc\u51fb\u7f29\u653e\n            });\n        }\n    }<\/p>\n<p>    \/\/ \u4e3a\u6240\u6709\u56fe\u7247\u6dfb\u52a0\u70b9\u51fb\u4e8b\u4ef6\n    const images = document.querySelectorAll(\"img.media-content\");\n    images.forEach(img => {\n        img.onclick = function() {\n            modal.style.display = \"block\";\n            modalImg.src = this.src;\n            \/\/ \u963b\u6b62\u80cc\u666f\u6eda\u52a8\n            document.body.style.overflow = \"hidden\";\n        }<\/p>\n<p>        \/\/ \u4e3a\u79fb\u52a8\u8bbe\u5907\u6dfb\u52a0\u89e6\u6478\u4e8b\u4ef6\u652f\u6301\n        if (isMobile) {\n            img.addEventListener('touchstart', function(e) {\n                \/\/ \u9632\u6b62\u89e6\u6478\u4e8b\u4ef6\u89e6\u53d1\u4e0d\u5fc5\u8981\u7684\u884c\u4e3a\n                e.preventDefault();\n                this.click();\n            }, { passive: false });\n        }\n    });<\/p>\n<p>    \/\/ \u4e3a\u89c6\u9891\u6dfb\u52a0\u70b9\u51fb\u4e8b\u4ef6 - \u8df3\u8f6c\u5230\u89c6\u9891URL\n    const videos = document.querySelectorAll(\"video.media-content\");\n    videos.forEach(video => {\n        \/\/ \u70b9\u51fb\u89c6\u9891\u672c\u8eab\u65f6\u8df3\u8f6c\u5230\u89c6\u9891URL\n        video.onclick = function(e) {\n            \/\/ \u68c0\u67e5\u70b9\u51fb\u76ee\u6807\u662f\u5426\u662f\u89c6\u9891\u63a7\u4ef6\u6216\u5176\u5b50\u5143\u7d20\n            let isControlClick = false;\n            let target = e.target;<\/p>\n<p>            \/\/ \u5411\u4e0a\u904d\u5386DOM\uff0c\u68c0\u67e5\u662f\u5426\u70b9\u51fb\u4e86\u63a7\u4ef6\u5143\u7d20\n            while (target && target !== this) {\n                \/\/ \u68c0\u67e5\u662f\u5426\u6709\u63a7\u4ef6\u76f8\u5173\u7684\u7c7b\u540d\u6216\u5c5e\u6027\n                if (target.classList.contains('video-js') || \n                    target.tagName.toLowerCase() === 'button' || \n                    target.tagName.toLowerCase() === 'input' || \n                    target.tagName.toLowerCase() === 'select' ||\n                    target.className.includes('control')) {\n                    isControlClick = true;\n                    break;\n                }\n                target = target.parentElement;\n            }<\/p>\n<p>            \/\/ \u53ea\u6709\u5f53\u70b9\u51fb\u7684\u662f\u89c6\u9891\u672c\u8eab\u800c\u975e\u63a7\u4ef6\u65f6\u624d\u8df3\u8f6c\n            if (!isControlClick && e.target.tagName.toLowerCase() === 'video') {\n                const videoUrl = this.getAttribute('data-video-url') || this.querySelector('source').src;\n                window.open(videoUrl, '_blank');\n            }\n        }<\/p>\n<p>        \/\/ \u4e3a\u79fb\u52a8\u8bbe\u5907\u6dfb\u52a0\u89e6\u6478\u4e8b\u4ef6\u652f\u6301\n        if (isMobile) {\n            video.addEventListener('touchstart', function(e) {\n                \/\/ \u68c0\u67e5\u662f\u5426\u70b9\u51fb\u4e86\u63a7\u4ef6\n                let isControlClick = false;\n                let target = e.target;<\/p>\n<p>                while (target && target !== this) {\n                    if (target.tagName.toLowerCase() === 'button' || \n                        target.tagName.toLowerCase() === 'input' || \n                        target.className.includes('control')) {\n                        isControlClick = true;\n                        break;\n                    }\n                    target = target.parentElement;\n                }<\/p>\n<p>                if (!isControlClick) {\n                    e.preventDefault();\n                    const videoUrl = this.getAttribute('data-video-url') || this.querySelector('source').src;\n                    window.open(videoUrl, '_blank');\n                }\n            }, { passive: false });\n        }\n    });<\/p>\n<p>    \/\/ \u4e3a\u89c6\u9891\u906e\u7f69\u6dfb\u52a0\u70b9\u51fb\u4e8b\u4ef6\uff0c\u786e\u4fdd\u70b9\u51fb\u906e\u7f69\u4e5f\u80fd\u8df3\u8f6c\n    const videoOverlays = document.querySelectorAll('.video-overlay');\n    videoOverlays.forEach(overlay => {\n        overlay.onclick = function(e) {\n            \/\/ \u963b\u6b62\u4e8b\u4ef6\u5192\u6ce1\u5230\u89c6\u9891\u5143\u7d20\n            e.stopPropagation();\n            const video = this.parentElement.querySelector('video.media-content');\n            if (video) {\n                const videoUrl = video.getAttribute('data-video-url') || video.querySelector('source').src;\n                window.open(videoUrl, '_blank');\n            }\n        }<\/p>\n<p>        \/\/ \u4e3a\u79fb\u52a8\u8bbe\u5907\u6dfb\u52a0\u89e6\u6478\u4e8b\u4ef6\u652f\u6301\n        if (isMobile) {\n            overlay.addEventListener('touchstart', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                const video = this.parentElement.querySelector('video.media-content');\n                if (video) {\n                    const videoUrl = video.getAttribute('data-video-url') || video.querySelector('source').src;\n                    window.open(videoUrl, '_blank');\n                }\n            }, { passive: false });\n        }\n    });<\/p>\n<p>    \/\/ \u5173\u95ed\u6a21\u6001\u6846\n    closeBtn.onclick = function() {\n        modal.style.display = \"none\";\n        \/\/ \u6062\u590d\u80cc\u666f\u6eda\u52a8\n        document.body.style.overflow = \"auto\";\n    }<\/p>\n<p>    \/\/ \u4e3a\u79fb\u52a8\u8bbe\u5907\u6dfb\u52a0\u89e6\u6478\u4e8b\u4ef6\u652f\u6301\n    if (isMobile) {\n        closeBtn.addEventListener('touchstart', function(e) {\n            e.preventDefault();\n            modal.style.display = \"none\";\n            document.body.style.overflow = \"auto\";\n        }, { passive: false });\n    }<\/p>\n<p>    \/\/ \u70b9\u51fb\u6a21\u6001\u6846\u5916\u90e8\u5173\u95ed\n    window.onclick = function(event) {\n        if (event.target === modal) {\n            modal.style.display = \"none\";\n            document.body.style.overflow = \"auto\";\n        }\n    }<\/p>\n<p>    \/\/ \u4e3a\u79fb\u52a8\u8bbe\u5907\u6dfb\u52a0\u89e6\u6478\u4e8b\u4ef6\u652f\u6301\n    if (isMobile) {\n        modal.addEventListener('touchstart', function(e) {\n            if (e.target === modal) {\n                modal.style.display = \"none\";\n                document.body.style.overflow = \"auto\";\n            }\n        }, { passive: true });\n    }<\/p>\n<p>    \/\/ \u6309ESC\u952e\u5173\u95ed\u6a21\u6001\u6846\n    document.addEventListener('keydown', function(event) {\n        if (event.key === 'Escape' && modal.style.display === 'block') {\n            modal.style.display = 'none';\n            document.body.style.overflow = \"auto\";\n        }\n    });<\/p>\n<p>    \/\/ \u68c0\u67e5\u6bcf\u4e2a\u5a92\u4f53\u753b\u5eca\u4e2d\u662f\u5426\u53ea\u6709\u4e00\u4e2a\u9879\u76ee\uff0c\u5982\u679c\u662f\uff0c\u6dfb\u52a0single-item\u7c7b\n    document.querySelectorAll('.media-gallery').forEach(gallery => {\n        if (gallery.querySelectorAll('.media-item-wrapper').length === 1) {\n            gallery.classList.add('single-item');\n        }\n    });<\/p>\n<p>    \/\/ \u521d\u59cb\u5316\u89e6\u6478\u4f18\u5316\n    addTouchOptimization();<\/p>\n<p>    \/\/ \u7a97\u53e3\u5927\u5c0f\u53d8\u5316\u65f6\u91cd\u65b0\u68c0\u67e5\u753b\u5eca\u72b6\u6001\n    window.addEventListener('resize', function() {\n        document.querySelectorAll('.media-gallery').forEach(gallery => {\n            if (gallery.querySelectorAll('.media-item-wrapper').length === 1) {\n                gallery.classList.add('single-item');\n            } else {\n                gallery.classList.remove('single-item');\n            }\n        });\n    });<\/p>\n<p>    \/\/ --- \u8bc4\u8bba\u533a\u57df\u6298\u53e0\/\u5c55\u5f00\u529f\u80fd ---\n    const commentToggles = document.querySelectorAll('.comments-toggle');<\/p>\n<p>    commentToggles.forEach(toggle => {\n        toggle.addEventListener('click', function() {\n            \/\/ \u5207\u6362\u5f53\u524dtoggle\u7684open\u72b6\u6001\n            this.classList.toggle('open');<\/p>\n<p>            \/\/ \u83b7\u53d6\u5bf9\u5e94\u7684\u8bc4\u8bba\u5bb9\u5668\n            const commentsContainer = this.nextElementSibling;\n            if (commentsContainer && commentsContainer.classList.contains('comments-container')) {\n                commentsContainer.classList.toggle('open');\n            }\n        });\n    });\n<\/script><\/p>\n<p><\/body><br \/>\n<\/html><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Product Hunt \u6bcf\u65e5\u70ed\u699c 2026-08-22 PH\u70ed\u699c | 2026-08-22 #1 Topli [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"template-clean-canvas.php","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-321","post","type-post","status-publish","format-standard","hentry","category-producthunt"],"_links":{"self":[{"href":"https:\/\/ph.listeningo.cn\/index.php\/wp-json\/wp\/v2\/posts\/321","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ph.listeningo.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ph.listeningo.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ph.listeningo.cn\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ph.listeningo.cn\/index.php\/wp-json\/wp\/v2\/comments?post=321"}],"version-history":[{"count":0,"href":"https:\/\/ph.listeningo.cn\/index.php\/wp-json\/wp\/v2\/posts\/321\/revisions"}],"wp:attachment":[{"href":"https:\/\/ph.listeningo.cn\/index.php\/wp-json\/wp\/v2\/media?parent=321"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ph.listeningo.cn\/index.php\/wp-json\/wp\/v2\/categories?post=321"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ph.listeningo.cn\/index.php\/wp-json\/wp\/v2\/tags?post=321"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}