इस प्रोजेक्ट के बारे में

craft (anacraft) Rust में लिखा गया एक कमांड-लाइन टूल है जो किसी डोमेन के लिए Google Analytics 4 सेटअप करता है और परिणामी मेट्रिक्स को टर्मिनल डैशबोर्ड के रूप में पढ़ता है। इसकी विजुअल भाषा Minecraft-थीम पर आधारित है: इसमें ore-textured बार, सात लाइव पैनल, एक रियलटाइम इवेंट फीड और अचीवमेंट टोस्ट्स हैं, जिसमें osaka-jade (डिफ़ॉल्ट), catppuccin, github, tokyo-night और catppuccin-latte जैसे पैलेट चुनने का विकल्प मिलता है। इसका कमांड craft है; anacraft को एक एलियास के रूप में इंस्टॉल किया जाता है। इंस्टॉलेशन और बुनियादी उपयोग - एक इंस्टॉल स्क्रिप्ट anacraft.dev से उपलब्ध है जो बाइनरी को /usr/local/bin (यदि राइटेबल हो) या ~/.local/bin में बिना sudo के रखती है; INSTALL_DIR से अन्य लोकेशन चुनी जा सकती है। सोर्स बिल्ड्स के लिए cargo install --git का उपयोग करें, और प्रीबिल्ट बाइनरी GitHub Releases में उपलब्ध हैं। - बिना किसी कमांड के anacraft चलाने पर डैशबोर्ड (dash डिफ़ॉल्ट है) खुलता है। बिना सेव की गई प्रॉपर्टी के यह सिंथेटिक डेटा पर काम करता है, ताकि साइन-इन से पहले इसे आज़माया जा सके। - क्विक स्टार्ट पाथ: नए डोमेन के लिए craft configure, या मौजूदा प्रॉपर्टी को जोड़ने के लिए craft login, craft props और craft use का उपयोग करें। - वन-शॉट रिपोर्ट्स प्रिंट होकर एग्जिट हो जाती हैं: overview, pages, portals (ट्रैफ़िक सोर्स), realms (देश), live और demo, जिनमें --days और --theme विकल्प उपलब्ध हैं। - दो ग्लोबल फ्लैग्स: --property सेव किए गए डिफ़ॉल्ट के बजाय अन्य प्रॉपर्टी चुनता है; --theme एक सिंगल रन के लिए पैलेट को ओवरराइड करता है। स्क्रिप्टिंग के लिए आउटपुट फॉर्मेट overview विकल्प --format json (यूनिट्स, पिछले पीरियड, प्रतिशत परिवर्तन, डेली यूजर सीरीज और अचीवमेंट्स के साथ एक लेबल ऑब्जेक्ट) या --format slack (एक Block Kit पेलोड) स्वीकार करता है। दोनों केवल पेलोड प्रिंट करते हैं, इसलिए एक वीकली डाइजेस्ट को वेबहुक में पाइप करने वाली एक सिंगल cron लाइन बनाया जा सकता है। इन दोनों फॉर्मेट के लिए सब्सक्रिप्शन की आवश्यकता नहीं है। डैशबोर्ड सात पैनलों को कीज़ 1 से 7 (या लेटर शॉर्टकट्स) के साथ टॉगल किया जा सकता है, और शेष पैनल टर्मिनल को भरने के लिए रिफ्लो होते हैं: EVENTS, RIGHT NOW (लाइव प्लेयर्स और इवेंट फीड), COUNTRIES (वर्ल्ड मैप प्लॉट), TOP PAGES, VITALS (यूज़र्स, सेशन्स, व्यूज़, कन्वर्शन्स, बाउंस रेट, एवरेज सेशन), TOP COUNTRIES और DAILY USERS। अन्य नियंत्रणों में प्रॉपर्टीज़ को साइकिल करने के लिए tab, ऑन-स्क्रीन प्रॉपर्टी को स्थानीय रूप से हटाने के लिए shift-D, पैलेट साइकिल और सेव करने के लिए t, रिफ़ेच के लिए r, हेल्प ओवरले और क्विट शामिल हैं। अलर्ट्स craft watch सबसे हाल के पूर्ण दिन की तुलना पिछले दिनों के औसत से करता है और साइट के अपने इतिहास से प्राप्त प्रति-मेट्रिक थ्रेशोल्ड से अधिक विचलन की रिपोर्ट करता है। यह गिरावट, स्पाइक्स और "साइलेंस" (जैसे टैग हटा दिए जाने पर काउंट का शून्य होना) को फ्लैग करता है। डिफ़ॉल्ट मेट्रिक्स के अनुसार अलग-अलग होते हैं (उदाहरण के लिए यूज़र्स और सेशन्स के लिए 30 प्रतिशत, कन्वर्शन्स के लिए 40 प्रतिशत, बाउंस रेट के लिए 20 प्रतिशत), थ्रेशोल्ड और बेसलाइन लंबाई को कॉन्फ़िग में प्रति प्रॉपर्टी ट्यून किया जा सकता है। अलर्ट में मेट्रिक वैल्यू, मूवमेंट, बेसलाइन और एक स्पार्कलाइन होती है। स्टेट को ~/.anacraft/watch.json में रखा जाता है ताकि एक ही दिन का अलर्ट एक बार आए; एग्जिट कोड 0 (कुछ नहीं), 2 (अलर्ट) और 1 (एरर) होते हैं। डिलीवरी विकल्पों में बार-बार चेकिंग के लिए --every और POST करने के लिए --webhook शामिल हैं; craft slack --install स्लैक के इंस्टॉलेशन स्क्रीन के माध्यम से गाइड करता है और incoming-webhook URL को सेव करता है। MCP सर्वर (सहायकों के लिए) craft mcp रिपोर्ट्स को Model Context Protocol के माध्यम से एक्सपोज़ करता है, जिससे Claude Desktop, Claude Code या अन्य MCP क्लाइंट्स साइट के बारे में सवालों के जवाब दे सकते हैं। craft mcp --install क्लाइंट कॉन्फ़िगरेशन में एक सर्वर एंट्री लिखता है; Claude Code के लिए claude mcp add का उपयोग करें। टूल्स में site_status, live_visitors, list_pages, list_events, list_referrers, list_traffic_sources, list_countries, list_properties, search_pages, search_events और configure_site शामिल हैं। configure_site एकमात्र राइटर है, जो अनट्रैक्ड डोमेन के लिए प्रॉपर्टी और वेब स्ट्रीम बनाता है और टैग रिटर्न करता है; लॉगिन और प्रॉपर्टी चयन केवल मानवीय कमांड बने रहते हैं। रिस्पॉन्स स्ट्रक्चर्ड JSON होते हैं जिन्हें प्रॉपर्टी आईडी और कवर की गई डेट विंडो के साथ लेबल किया जाता है, और API कोटा उपयोग को सीमित करने के लिए समान रिपोर्ट्स को लगभग एक मिनट तक कैश किया जाता है। कॉन्फ़िगरेशन और क्रेडेंशियल्स प्रॉपर्टीज़ और उनकी सेटिंग्स ~/.config/anacraft/config.toml में रहती हैं (XDG_CONFIG_HOME का सम्मान किया जाता है), जबकि OAuth रिफ्रेश टोकन जानबूझकर उस डायरेक्टरी से बाहर ~/.anacraft/token.json में रखा जाता है। कई प्रॉपर्टीज़ कॉन्फ़िग में जमा होती हैं और tab के साथ साइकिल की जाती हैं। रेजोल्यूशन ऑर्डर --property, फिर ANACRAFT_PROPERTY_ID, और फिर सेव की गई एक्टिव प्रॉपर्टी है। अन्य एनवायरनमेंट वेरिएबल्स में ANACRAFT_WEBHOOK और बिल्ट-इन के बजाय पर्सनल Google Cloud OAuth क्लाइंट का उपयोग करने के लिए ANACRAFT_OAUTH_CLIENT_ID और ANACRAFT_OAUTH_CLIENT_SECRET शामिल हैं। आवश्यकताएं और प्रोजेक्ट नोट्स एक GA4 प्रॉपर्टी, एक truecolor टर्मिनल और सोर्स बिल्ड्स के लिए Rust 1.74 या नया होना आवश्यक है। रिपॉजिटरी Apache License 2.0 के तहत लाइसेंस प्राप्त है; cargo run -- dash --demo बिना गूगल अकाउंट के एक वर्किंग डैशबोर्ड देता है, और .claude/skills/anacraft/ के तहत एक Claude Code स्किल उपलब्ध है। कमर्शियल संदर्भ कई क्षमताएं पेड प्लान्स (Anacrafter और उससे ऊपर के टियर्स, जो प्रोजेक्ट के प्राइसिंग पेज पर 2.99 प्रति माह से शुरू होते हैं) से जुड़ी हैं: craft configure, Slack पर watch अलर्ट भेजना, और MCP सर्वर। डैशबोर्ड, watch और MCP सर्वर के डेमो मोड बिना अकाउंट या सब्सक्रिप्शन के चलते हैं, और overview के लिए JSON और Slack रिपोर्ट फॉर्मेट के लिए किसी सब्सक्रिप्शन की आवश्यकता नहीं बताई गई है। जहाँ प्लान या लॉगिन गायब होता है, MCP सर्वर फिर भी शुरू होता है और उसके टूल्स एग्जिट होने के बजाय यह रिपोर्ट करते हैं कि किसकी आवश्यकता है।