@admin
Prompt JSON biến ảnh tải lên thành diorama isometric siêu thực của một khối phố được cắt lát, nổi trên nền trắng, giữ kiến trúc và bầu không khí.
{
"prompt": "Create an ultra realistic isometric diorama based strictly on the uploaded image. Analyze the image to extract dominant architecture style, building age, materials, street layout, objects, vehicles and urban density. Rebuild the same scene as a single sliced city block floating on a pure white background. Preserve the original atmosphere, proportions and spatial logic while converting it into a miniature architectural maquette. Use mid rise buildings if present, matching facade textures, balconies, windows, storefronts and street elements seen in the image. Keep only elements visible in the source image. Remove anything not present. Apply 45 degree isometric angle, tilt shift miniature effect, soft natural daylight matching the original lighting conditions, global illumination, PBR materials, extreme micro detail, architectural visualization quality. Clean studio lighting. No sky, no horizon.",
"negative_prompt": "invented objects, extra buildings, fantasy elements, cartoon, anime, illustration, low poly, flat shading, fisheye, distortion, surreal details, inconsistent scale, random props",
"aspect_ratio": "1:1",
"style": "photorealistic",
"quality": "high"
}Prompt JSON mô tả phong cách tranh với mảng màu phẳng, ít chuyển sắc, đường viền rõ; bảng màu hồng san hô, xanh cerulean, xanh ô liu, ba dải ngang.
1{2 "colors": {3 "dominant_palette": [4 "coral_pink",5 "cerulean_blue",6 "olive_green",7 "forest_green",8 "cream_white"9 ],10 "application": "Flat, blocks of color with minimal gradients, defined contours."...+14 dòng nữa
Prompt tạo ảnh minh họa dạng JSON: phòng khách ngập nắng phong cách Fauvist rực rỡ gồm vàng, xanh, đỏ, hồng, nhìn từ trong phòng.
1{2 "colors": {3 "color_temperature": "warm",4 "contrast_level": "high",5 "dominant_palette": [6 "yellow",7 "blue",8 "red",9 "pink",10 "green",...+70 dòng nữa
Prompt tạo ảnh mandala và hình học thiêng đối xứng, tinh xảo gợi bình an, hài hòa; tuyệt đối không có hình người hay tư thế yoga.
# 🌀 Mindful Mandala & Zen Geometric Patterns ## 🎨 Role & Purpose You are an expert **Mandala & Sacred Geometry Artist**. Create intricate, symmetrical, and spiritually meaningful geometric patterns that evoke peace, harmony, and inner tranquility. **NO human figures, yoga poses, or people of any kind.** --- ## 🔷 Geometric Pattern Styles Choose ONE or combine: - **🔵 Symmetrical Mandala** - Perfect 8-fold or 12-fold radial symmetry - **⭕ Zen Circle (Enso)** - Minimalist, intentional, sacred brushwork - **🌸 Flower of Life** - Overlapping circles creating sacred geometry - **🔶 Islamic Mosaic** - Complex tessellation and repeating patterns - **⚡ Fractal Mandala** - Self-similar patterns at different scales - **🌿 Botanical Mandala** - Flowers and nature integrated with geometry - **💎 Chakra Mandala** - Energy centers with spiritual symbols - **🌊 Wave Patterns** - Flowing, organic, meditative designs --- ## 🔷 Geometric Elements to Include ### Core Shapes - **Circles** - Wholeness, unity, infinity - Center and foundation - **Triangles** - Balance, ascension, trinity - Dynamic energy - **Squares** - Stability, grounding, earth - Solid foundation - **Hexagons** - Harmony, natural order - Organic feel - **Stars** - Cosmic connection, light - Spiritual energy - **Spirals** - Growth, transformation, journey - Flowing motion - **Lotus Petals** - Spiritual awakening, enlightenment - Sacred symbolism ### Ornamental Details - ✨ Intricate linework and filigree - ✨ Flowing botanical motifs - ✨ Repeating tessellation patterns - ✨ Kaleidoscopic arrangements - ✨ Central focal point (mandala center) - ✨ Radiating wave patterns - ✨ Interlocking geometric forms --- ## 🎨 Color Palette Options ### 1️⃣ Meditation Monochrome - **Colors**: Black, white, grayscale - **Mood**: Calm, focused, contemplative ### 2️⃣ Earth Tones Zen - **Colors**: Terracotta, warm beige, sage green, stone gray - **Mood**: Grounding, natural, peaceful ### 3️⃣ Jewel Tones Sacred - **Colors**: Deep indigo, amethyst purple, emerald green, sapphire blue, rose gold - **Mood**: Spiritual, mystical, luxurious ### 4️⃣ Chakra Rainbow - **Colors**: Red → Orange → Yellow → Green → Blue → Indigo → Violet - **Mood**: Energizing, balanced, spiritual alignment ### 5️⃣ Ocean Serenity - **Colors**: Soft teals, seafoam, light blues, turquoise, white - **Mood**: Calming, flowing, meditative ### 6️⃣ Sunset Harmony - **Colors**: Soft peach, coral, golden yellow, soft purple, rose pink - **Mood**: Warm, peaceful, transitional --- ## 🖼️ Background Options | Background Type | Description | |-----------------|-------------| | **Clean Solid** | Pure white or soft cream | | **Textured** | Subtle paper, marble, aged parchment | | **Gradient** | Soft color transitions | | **Cosmic** | Deep space, stars, nebula | | **Nature** | Soft bokeh or watercolor wash | --- ## 🎯 Composition Guidelines - ✓ **Perfectly centered** - Symmetrical composition - ✓ **Clear focal point** - Mandala center radiates outward - ✓ **Concentric layers** - Multiple rings of pattern detail - ✓ **Mathematical precision** - Harmonic proportions - ✓ **Breathing room** - Space around the mandala - ✓ **Layered depth** - Sense of depth through pattern complexity --- ## 🚫 CRITICAL RESTRICTIONS ### **ABSOLUTELY NO:** - 🚫 Human figures or faces - 🚫 Yoga poses or bodies - 🚫 People or silhouettes of any kind - 🚫 Realistic objects or photographs - 🚫 Depictions of living beings --- ## ❌ Additional Restrictions - ❌ Chaotic or asymmetrical designs - ❌ Overly cluttered patterns - ❌ Harsh, jarring, or clashing colors - ❌ Modern corporate aesthetic - ❌ 3D rendered effects (unless intentional) - ❌ Graffiti or street art style - ❌ Childish or cartoonish appearance --- ## ✨ Quality Standards ✓ **Professional digital art quality** ✓ **Crisp lines and smooth curves** ✓ **Aesthetically beautiful and compelling** ✓ **Evokes peace, harmony, and meditation** ✓ **Suitable for print and digital use** ✓ **Ultra-high resolution** --- ## 📱 Perfect For - Meditation and mindfulness apps - Wellness and mental health websites - Print-on-demand digital art products - Yoga studio wall art and decor - Adult coloring books - Wallpapers and screensavers - Social media wellness content - Book covers and design elements - Tattoo design inspiration - Sacred geometry education
Thiết kế ứng dụng danh thiếp số truy cập qua link hoặc mã QR: gọi, WhatsApp, email, bản đồ, thư viện ảnh, video, thanh toán, chia sẻ.
Act as a Senior Product Architect, UX Designer, and Full-Stack Engineer. Your task is to design and develop a digital visiting card application that is accessible via a link or QR code. You will: - Focus on creating a paperless visiting card solution with features like click-to-call, WhatsApp, email, location view, website access, gallery, videos, payments, and instant sharing. - Design for scalability, clean UX, and real-world business usage. - Ensure the platform is web-based and mobile-first, with an optional Android app wrapper and QR-code-driven sharing. The application should target: - Individuals - Business owners - Corporate teams (multiple employees) - Sales & marketing professionals Key Goals: - Easy sharing - Lead generation - Business visibility - Admin-controlled updates Rules: - Always think in terms of scalability and clean UX. - Ensure real-world business usage is prioritized. - Include features for easy updates and admin control. Variables: - Individual - Specify the target user group - Web - Specify the platform - QR Code - Key feature to focus on
Prompt tạo poster phim điện ảnh siêu thực của một siêu anh hùng được tái hiện như thể xuất phát từ một quốc gia hoặc nền văn hóa khác.
Create an ultra-realistic, high-budget cinematic movie poster of superhero_name, reimagined as if the character originated from country_or_culture. This image must look like an official theatrical poster for a live-action superhero film released worldwide. The composition, lighting, typography, and tone should match real modern Hollywood movie posters. FORMAT: Aspect ratio: 9:16 (vertical theatrical poster). SETTING: The scene takes place at night in the capital city of country_or_culture. The environment reflects the city’s real architecture, atmosphere, and cultural identity, remaining geographically accurate and believable. COMPOSITION & CAMERA ANGLE: – dramatic low-angle perspective, looking up at the hero – iconic, powerful stance suitable for a main movie poster – medium-to-full body framing – character visually dominant, city subtly visible behind – cinematic depth with slight background blur ATMOSPHERE: – cinematic fog, smoke, and atmospheric haze – rain falling through volumetric light – wet surfaces reflecting city lights – dramatic shadows and contrast – epic but grounded realism CHARACTER REALISM (CRITICAL): – fully photorealistic human anatomy and proportions – practical, wearable costume design – subtle cultural elements from country_or_culture integrated naturally – realistic fabric, leather, metal, armor with wear, scratches, dirt – no comic-book exaggeration, no cosplay look LIGHTING: – dramatic cinematic lighting – strong rim light defining the silhouette – controlled highlights and deep shadows – volumetric light interacting with rain and fog POSTER TEXT (ENGLISH ONLY – REALISTIC): Include realistic, professionally designed movie poster text that matches the character’s origin and tone. Examples of text placement and style: – Main title: "movie_title" – Tagline (origin-related, serious tone): "tagline" – Credits block at the bottom (small, realistic): "A studio_style Production Directed by director_style Starring superhero_name" Typography must be cinematic, clean, modern, and realistic — no fantasy fonts, no comic lettering. STYLE & FINISH: Ultra-photorealistic live-action realism Cinematic color grading High dynamic range (HDR) Premium poster polish Sharp subject, controlled depth NEGATIVE CONSTRAINTS: No cartoon No anime No illustration No comic-book art style No exaggerated colors No unrealistic fantasy elements No watermarks The final image should feel like a real, official movie poster — localized in identity, grounded in realism, cinematic in every detail.
Prompt JSON tạo ảnh phụ nữ trưởng thành bên cây xanh, bó hoa và đèn ấm, tóc tự nhiên rối nhẹ, hướng chân thực.
1{2 "category": "PLANTS_BOUQUET_WARM_LAMP",3 "subject": {4 "demographics": "Adult woman, 21-27, Turkish-looking, youthful vibe but clearly adult.",5 "hair": {6 "color": "Dark brown",7 "style": "Natural, soft, slightly tousled, casual asymmetry",8 "texture": "Realistic strands, flyaways, roots visible",9 "movement": "Falls naturally over shoulders; small motion blur allowed in ends"10 },...+87 dòng nữa
Câu hỏi về tầm quan trọng của việc xây dựng nhóm bạn cùng hỗ trợ sự phát triển của từng người.
How it is important to build an friend group that had to do with each and everyone’s growth
Đóng vai nhà phân tích phần mềm, trích xuất từ văn bản thô ba phần: tính năng đang bàn, hành vi mong đợi và hành vi thực tế.
Act as a senior software analyst.
## Goal
From the given input text, extract and structure the following three elements:
1. describ_feature → What feature or system is being discussed
2. what_should_happen → Expected behavior
3. what_is_happen → Actual behavior / issue
---
## Input
paste_any_raw_text_here
- Could be messy
- Could include logs, chat, code comments, or mixed explanations
---
## Instructions
- Read the entire input carefully
- Infer missing context when reasonably possible
- Do NOT hallucinate unclear details
- If something is missing, return "UNCLEAR"
---
## Extraction Rules
### 1. describ_feature
- Summarize the feature/system in 1–2 lines
- Focus on purpose, not implementation details
### 2. what_should_happen
- Describe ideal/expected behavior
- Include conditions if mentioned
### 3. what_is_happen
- Describe actual issue or incorrect behavior
- Be precise and factual
- Include errors, unexpected results, or failures
---
## Output Format (STRICT)
## Output Format (STRICT)
Return ONLY this points: "describ_feature": "...",
"what_should_happen": "...",
"what_is_happen": "..."
---
## Constraints
- No extra text
- No explanations
- No assumptions beyond reasonable inference
- Keep each field concise but completeYêu cầu xây website tương tác, sang trọng cho SaaPro Marketing, thể hiện công ty tiếp thị, sáng tạo, nội dung và AI hiện đại tầm cỡ toàn cầu.
أنشئ موقعًا إلكترونيًا احترافيًا وفاخرًا وتفاعليًا بالكامل لشركة SaaPro Marketing – سابرو للتسويق. أريد الموقع أن يبدو كأنه موقع لوكالة تسويق وإبداع عالمية، وليس قالب شركة تقليديًا. الانطباع الأول يجب أن يكون قويًا جدًا ومبهرًا بصريًا، بحيث يشعر الزائر منذ الثواني الأولى أن SaaPro شركة حديثة تجمع بين التسويق، الإبداع، المحتوى، التقنية، الذكاء الاصطناعي والإنتاج المرئي. الهوية العامة اسم الشركة: SaaPro Marketing – سابرو للتسويق المجال: شركة تسويق وإبداع رقمي تقدم حلولًا متكاملة لبناء العلامات التجارية وتنميتها. الفكرة الأساسية للعلامة: الفكرة → التجربة → التحويل → النمو والفلسفة التي يجب أن يعكسها الموقع هي أننا لا نقدم مجرد إعلان أو تصميم، بل نبني رحلة متكاملة تبدأ من الفكرة، تتحول إلى تجربة مؤثرة، ثم إلى نتائج وتحويلات، وتنتهي بنمو حقيقي للعلامة التجارية. استخدم هوية بصرية Premium/Futuristic تعتمد على اللون التركوازي/النعناعي الخاص بـ SaaPro مع الأسود والفحمي الداكن والأبيض، مع إضاءات وتدرجات ناعمة تعطي إحساسًا بالتقنية والفخامة. لا أريد ألوانًا كثيرة أو تصميمًا مزدحمًا. المطلوب تصميم راقٍ، مظلم، سينمائي، تقني وإبداعي. اللغة واتجاه الموقع الموقع بالكامل باللغة العربية وباتجاه RTL من اليمين إلى اليسار. يجب الاهتمام جدًا بالخط العربي واستخدام Typography كبيرة وواضحة وحديثة. في الشريط العلوي Header: روابط التنقل تكون في الجهة اليمنى، وشعار SaaPro في الجهة اليسرى. روابط التنقل الرئيسية: الرئيسية – خدماتنا – أعمالنا – من نحن – تواصل معنا مع زر CTA واضح مثل: ابدأ مشروعك تجربة الدخول إلى الموقع عند فتح الموقع أريد تجربة افتتاحية قصيرة ومميزة، وليست شاشة Loading تقليدية. يمكن أن يظهر شعار SaaPro أو حرف S بشكل سينمائي مع حركة بسيطة، ثم تنتقل الشاشة بسلاسة إلى الصفحة الرئيسية. يجب ألا تكون المقدمة طويلة أو مزعجة؛ الهدف منها خلق انطباع Premium خلال ثانية أو ثانيتين. الصفحة الرئيسية – Hero Section أريد Hero ضخمًا يملأ الشاشة تقريبًا. استخدم عنوانًا عربيًا قويًا مثل: نحوّل الأفكار إلى تأثير. ثم: والتأثير إلى نمو. أو صياغة إبداعية مشابهة تناسب شركة تسويق حديثة. مع نص مختصر يشرح SaaPro: استراتيجية، محتوى، تقنية وإبداع بصري تعمل معًا لبناء علامات تجارية تنمو. أضف عنصرًا بصريًا رئيسيًا في منتصف أو جانب الشاشة مستوحى من هوية SaaPro، مثل كرة أو Orb ثلاثية الأبعاد تحمل حرف S أو شعار الشركة، مع حركة خفيفة مرتبطة بحركة الماوس والتمرير. حول العنصر تظهر التسميات الأربع: 01 — الاستراتيجية 02 — المحتوى 03 — التقنية 04 — النمو ويجب أن تكون هذه الكلمات كبيرة وواضحة جدًا، وليست بحجم صغير يصعب قراءته. أريد أيضًا عبارة: نمو متكامل 360° وتحتها: مرّر لتكتشف مع مؤشر بصري بسيط يشجع المستخدم على النزول. الحركة والتفاعل هذه نقطة أساسية جدًا. لا أريد موقعًا ثابتًا. أريد أن تكون تجربة التصفح نفسها جزءًا من هوية الشركة. استخدم Scroll Animations احترافية، Parallax، Reveal Animations، Text Masking، Smooth Transitions، Image Parallax، Hover Effects، Magnetic Buttons، Animated Counters، Sticky Sections، وتغيّر العناصر تدريجيًا أثناء التمرير. بعض النصوص الكبيرة يمكن أن تتحرك ببطء أثناء Scroll، وبعض الصور يمكن أن تدخل من جوانب الشاشة أو تتوسع تدريجيًا. أريد الانتقال بين الأقسام سلسًا وسينمائيًا، وليس مجرد أقسام موضوعة الواحد تحت الآخر. لكن يجب أن تكون الحركة راقية ومدروسة وليست مزعجة. مهم جدًا: لا تستخدم مؤشر Mouse Cursor مخصصًا كبيرًا أو دائرة تتحرك فوق النصوص. استخدم مؤشر الجهاز الطبيعي حتى لا يغطي الكلمات أو الأزرار. قسم ماذا نقدم يظهر عنوان كبير: 01 — ماذا نقدم ثم كلمة كبيرة جدًا: نصنع وتظهر حولها أو معها المجالات: الاستراتيجية المحتوى التقنية النمو الإنتاج المرئي الذكاء الاصطناعي لا تجعل هذه الكلمات صغيرة. Typography جزء رئيسي من التصميم. عند تمرير الماوس أو النزول، يمكن أن يتغير المحتوى البصري والخلفية بحسب الخدمة. خدمات SaaPro أنشئ قسمًا متطورًا للخدمات يشمل على الأقل: الاستراتيجية والتخطيط التسويقي، إدارة منصات التواصل الاجتماعي، صناعة المحتوى، تصميم الهوية والمحتوى البصري، الحملات الإعلانية الرقمية، التصوير والإنتاج المرئي، المونتاج وصناعة الفيديو، حلول الذكاء الاصطناعي للمحتوى والإعلانات، المواقع والتجارب الرقمية، وتحليل الأداء والنمو. لا تعرض الخدمات على شكل Grid تقليدي ممل فقط. يمكن استخدام بطاقات كبيرة تفاعلية، أو Sticky Panels، بحيث تتحول الشاشة أثناء Scroll من خدمة إلى أخرى مع عنوان كبير ووصف مختصر وعنصر بصري. منهجية SaaPro أنشئ قسمًا يحكي رحلة العميل: الفكرة → التجربة → التحويل → النمو 01 الفكرة: نفهم العلامة والسوق والجمهور ونبني الاستراتيجية. 02 التجربة: نحول الاستراتيجية إلى محتوى وتصميم وتجربة رقمية. 03 التحويل: نحول اهتمام الجمهور إلى تفاعل وطلبات ونتائج قابلة للقياس. 04 النمو: نحلل البيانات ونطور الأداء للوصول إلى نمو مستمر. أريد هذا القسم Storytelling وليس أربع بطاقات عادية. قسم المشاريع والأعمال هذا أحد أهم أقسام الموقع. عنوان: أعمال مختارة أو: مشاريع صنعت أثرًا اعرض المشاريع بطريقة Editorial/Cinematic كبيرة. المشروع يحتوي على: اسم المشروع، العميل، التصنيف، وصف مختصر، صورة غلاف، صور متعددة، فيديوهات متعددة، وسنة المشروع عند توفرها. عند Hover على المشروع تتحرك الصورة أو تكبر قليلًا. عند الضغط عليه يتم فتح صفحة تفاصيل المشروع. صفحة المشروع يجب أن تكون فخمة جدًا وتحتوي على صورة غلاف كبيرة، وصف المشروع، الصور، والفيديوهات. يجب توفير Gallery وLightbox لفتح الصور بالحجم الكامل والتنقل بينها. الفيديوهات يجب أن تعمل داخل الموقع بشكل احترافي. يجب دعم رفع فيديو حتى 400MB لكل فيديو. SaaPro AI Lab أنشئ قسمًا خاصًا باسم: مختبر SaaPro أو: SaaPro AI Lab يوضح كيف تستخدم الشركة الذكاء الاصطناعي في صناعة المحتوى، توليد الأفكار، التصميم، إنتاج الفيديو، تحليل البيانات وتطوير الحملات. اجعل تصميم هذا القسم مستقبليًا أكثر من باقي الموقع، مع خطوط أو نقاط أو عناصر بيانات متحركة بشكل خفيف. لا تجعله يبدو مثل واجهة Hacker؛ المطلوب Creative Technology. قسم النتائج والأرقام أنشئ مساحة لعرض مؤشرات الشركة، مثل: المشاريع المنجزة الحملات العملاء المحتوى المنتج نسب النمو الأرقام يجب أن تكون Dynamic Counters ويمكن تعديل قيمها من لوحة الإدارة لاحقًا. لا تضع أرقامًا وهمية على أنها نتائج حقيقية؛ استخدم Placeholder حتى يتم إدخال بيانات الشركة الفعلية. صفحة من نحن لا أريد نصًا تقليديًا مثل "نحن شركة رائدة...". أريد صفحة تعكس شخصية SaaPro. استخدم فكرة مثل: لسنا مجرد وكالة تسويق. نحن فريق يجمع الفكرة والإبداع والتقنية لصناعة نمو يمكن رؤيته وقياسه. ثم اعرض رؤية الشركة، أسلوب العمل، القيم، والتخصصات. يمكن إضافة الفريق لاحقًا من لوحة الإدارة. صفحة التواصل تصميم بسيط وفخم. تحتوي على نموذج: الاسم، اسم الشركة، رقم التواصل، البريد الإلكتروني، الخدمة المطلوبة، الميزانية التقريبية، تفاصيل المشروع. زر: لنبدأ وتصل الطلبات إلى لوحة الإدارة. أضف روابط حسابات التواصل الخاصة بالشركة وWhatsApp. Footer Footer داكن وأنيق يحتوي على شعار SaaPro، وصف قصير، روابط الموقع، وسائل التواصل، البريد الإلكتروني: info@saapro.sa ومعلومات الحقوق. لا تستخدم @saapro360 بشكل افتراضي. يجب أن تكون أسماء وروابط حسابات التواصل قابلة للتعديل من لوحة الإدارة. لوحة الإدارة الموقع ليس واجهة عرض فقط؛ أريد نظام إدارة فعلي. يجب أن يكون هناك Admin Login فقط، ولا يوجد تسجيل حساب للزوار. بعد تسجيل الدخول تظهر لوحة تحكم احترافية يستطيع المسؤول من خلالها إدارة المشاريع والخدمات ومحتوى الموقع وطلبات العملاء وروابط التواصل الاجتماعي والإعدادات. بالنسبة للمشاريع، يستطيع المسؤول إنشاء وتعديل وحذف ونشر وإخفاء المشروع، ورفع عدة صور وعدة فيديوهات للمشروع الواحد، وحذف الوسائط، واختيار صورة الغلاف. دعم الفيديو حتى 400MB. يجب أيضًا توفير قسم للتذكيرات Reminders داخل لوحة الإدارة، بحيث يستطيع المسؤول إضافة تذكير مرتبط بعميل أو حساب أو مهمة، مع التاريخ والوقت والأولوية والحالة، وإظهار المتأخر منها بوضوح. أضف إمكانية تغيير كلمة مرور المسؤول وإعدادات الشركة. المتطلبات التقنية أريد الموقع Responsive بالكامل. يجب اختباره على: Desktop كبير، Laptop، Tablet أفقي وعمودي، iPhone، Android، وشاشات الجوال الصغيرة. لا أريد أي نص يخرج خارج الشاشة أو عناصر تتداخل مع بعضها. استخدم clamp() للأحجام المهمة حتى تتكيف Typography تلقائيًا مع حجم الشاشة. على الكمبيوتر تكون التجربة كاملة بالحركات، أما على الجوال فيجب تبسيط الحركات الثقيلة مع المحافظة على جمال التصميم. أضف prefers-reduced-motion لإمكانية تقليل الحركة. اهتم جدًا بالأداء وLazy Loading للصور والفيديو. يجب ألا تتسبب الحركات أو العناصر ثلاثية الأبعاد في جعل الموقع بطيئًا. بالنسبة للفيديوهات الكبيرة، استخدم Video Streaming / HTTP Range Requests بدل تحميل ملف الفيديو كاملًا في الذاكرة. الموقع يجب أن يكون مناسبًا لاحقًا لتحسين SEO، مع عناوين ووصف Meta مناسبين، Open Graph، Semantic HTML، وتهيئة جيدة لمحركات البحث. المعيار النهائي للتصميم عندما يدخل شخص إلى الموقع لا أريده أن يقول: "هذا موقع شركة تسويق جميل." أريده أن يشعر: "إذا كانت هذه هي الطريقة التي تقدم بها SaaPro نفسها، فأريد أن أرى ماذا يمكن أن تصنع لعلامتي." اجعل الموقع يعرض قدرات الشركة من خلال التجربة نفسها؛ الحركة تثبت الإبداع، التنظيم يثبت الاستراتيجية، التقنية تظهر الاحتراف، والمشاريع تثبت النتائج. لا تستخدم Template جاهزًا واضحًا، ولا Cards متكررة في كل مكان، ولا Stock Photos عشوائية، ولا Animations لمجرد الحركة. المطلوب هو: Premium + Cinematic + Interactive + Creative + Futuristic + Arabic RTL + Marketing Focused. وفي النهاية سلّم مشروعًا كاملاً قابلًا للتشغيل والتعديل، وليس مجرد Mockup أو صورة للواجهة.
Yêu cầu dựng web một trang thuần HTML, CSS, JavaScript chuyển ảnh sang Base64 hoàn toàn phía client, giao diện tối hiện đại, responsive.
You are a senior front-end web developer with strong expertise in Base64 image encoding, HTML rendering, and UI/UX design. Create a single-page, fully client-side web application using pure HTML, CSS, and vanilla JavaScript only (preferably in one HTML file, no backend, no external libraries) with a modern, fully responsive, dark black theme. The site must correctly convert images (JPG/PNG/WEBP) to Base64 and ensure the output works in any HTML editor preview, meaning the app must provide both the raw Base64 Data URL and a ready-to-use HTML <img> tag output (e.g. <img src="data:image/jpeg;base64,..." />) so that pasting the HTML snippet into an editor visually renders the image instead of showing plain text. Include two main flows: Image to Base64 (upload or drag-and-drop image, instant in-app preview, correct MIME detection, copy buttons, optional download as .txt) and Base64 to Image Preview (users paste a Data URL or raw Base64, click a Preview button, and see the image rendered, with automatic MIME correction and clear validation errors). The header must display the title “Convert images ↔ Base64 with HTML-ready output”, and directly underneath it show “prompts.chat” in bold, phosphor green color, linking to https://promts.chat. The footer must replace any default text with “2026” in bold, phosphor green, linking to https://promts.chat . The overall UI should be dark black, while all primary buttons use a dark orange color with subtle glow/hover effects, smooth transitions, rounded cards, clear section separation (tabs or cards), accessible contrast, copy-success feedback, handling of very long Base64 strings without freezing, and perfect usability across desktop, tablet, and mobile.
Đọc biểu đồ bằng công cụ phân tích kỹ thuật, diễn giải môi trường kinh tế vĩ mô và đưa ra nhận định rõ ràng để khách hàng có lợi thế dài hạn.
Want assistance provided by qualified individuals enabled with experience on understanding charts using technical analysis tools while interpreting macroeconomic environment prevailing across world consequently assisting customers acquire long term advantages requires clear verdicts therefore seeking same through informed predictions written down precisely! First statement contains following content- Can you tell us what future stock market looks like based upon current conditions ?""."
Đóng vai chuyên gia phân tích năng lượng, xem xét Độ-Ngày Hợp nhất (DJU), mức tiêu thụ và chi phí giai đoạn 2024 đến 2025.
Agissez en tant qu'expert en analyse énergétique. Vous êtes chargé d'analyser des données énergétiques en vous concentrant sur les Degrés-Jours Unifiés (DJU), la consommation et les coûts associés entre 2024 et 2025. Votre tâche consiste à : - Analyser les données de Degrés-Jours Unifiés (DJU) pour comprendre les fluctuations saisonnières de la demande énergétique. - Comparer les tendances de consommation d'énergie sur la période spécifiée. - Évaluer les tendances de coûts et identifier les domaines potentiels d'optimisation des coûts. - Préparer un rapport complet résumant les conclusions, les idées et les recommandations. Exigences : - Utiliser le fichier Excel téléchargé contenant les données pertinentes. Contraintes : - Assurer l'exactitude dans l'interprétation et le rapport des données. - Maintenir la confidentialité des données fournies. La sortie doit inclure des graphiques, des tableaux de données et un résumé écrit de l'analyse.
Prompt tạo ảnh render studio siêu thực của một vật thể (ví dụ xe hơi) nền trắng, góc ba phần tư, ánh sáng và phản chiếu chuẩn catalog.
Ultra-photorealistic studio render of a object_name, front three-quarter view, placed on a pure white seamless studio background.The car must look like a high-end automotive catalog photograph: physically accurate lighting, realistic global illumination, soft studio shadows under the tires, correct reflections on paint, glass, and chrome, sharp focus, natural perspective, true-to-life proportions, no stylization. Over the realistic car image, overlay hand-drawn technical annotation graphics in black ink only, as if sketched with a technical pen or architectural marker directly on top of the photograph. Include:• Key component labels (engine, AWD system, turbocharger, brakes, suspension)• Internal cutaway and exploded-view outline sketches (semi-transparent, schematic style)• Measurement lines, dimensions, scale indicators• Material callouts and part quantities• Arrows showing airflow, power transmission, torque distribution, mechanical force• Simple sectional or schematic diagrams where relevant The annotations must feel hand-sketched, technical, and architectural, slightly imperfect linework, educational engineering-manual aesthetic. The realistic car remains clearly visible beneath the annotations at all times.Clean, balanced composition with generous negative space. Place the title “object_name” inside a hand-drawn technical annotation box in one corner of the image. Visual style: museum exhibit / engineering infographicColor palette: white background, black annotation lines and text only (no other colors)Output: ultra-crisp, high detail, social-media optimized square compositionAspect ratio: 1:1 (1080×1080)No watermark, no logo, no UI, no decorative illustration style
Đóng vai lập trình viên Next.js và React xây ứng dụng web hiệu năng cao, responsive, tương thích trình duyệt và phối hợp với UI/UX.
Act as a Next.js Specialized Front-End Developer. You are an expert in building dynamic and efficient web applications using Next.js and React. Your task is to: - Develop high-performance web applications using Next.js and React - Collaborate with UI/UX designers to enhance user experience - Implement responsive design and ensure cross-browser compatibility - Optimize applications for maximum speed and scalability - Integrate RESTful APIs and ensure seamless data flow Tools and Technologies: - Next.js - React - JavaScript (ES6+) - CSS and Styled-components - Git for version control Rules: - Follow best practices in code structure and design patterns - Ensure all code is documented and maintainable - Stay updated with the latest trends and updates in Next.js and front-end development
Skill (nội dung tiếng Trung) hiển thị xu hướng dự án GitHub nổi bật và tạo bảng điều khiển trực quan, có kiểm tra tùy chỉnh người dùng trước khi chạy.
---
name: GitHubTrends
description: 显示GitHub热门项目趋势,生成可视化仪表板。USE WHEN github trends, trending projects, hot repositories, popular github projects, generate dashboard, create webpage.
version: 2.0.0
---
## Customization
**Before executing, check for user customizations at:**
`~/.claude/skills/CORE/USER/SKILLCUSTOMIZATIONS/GitHubTrends/`
If this directory exists, load and apply any PREFERENCES.md, configurations, or resources found there. These override default behavior. If the directory does not exist, proceed with skill defaults.
# GitHubTrends - GitHub热门项目趋势
**快速发现GitHub上最受欢迎的开源项目。**
---
## Philosophy
GitHub trending是发现优质开源项目的最佳途径。这个skill让老王我能快速获取当前最热门的项目列表,按时间周期(每日/每周)和编程语言筛选,帮助发现值得学习和贡献的项目。
---
## Quick Start
```bash
# 查看本周最热门的项目(默认)
bun ~/.claude/skills/GitHubTrends/Tools/GetTrending.ts weekly
# 查看今日最热门的项目
bun ~/.claude/skills/GitHubTrends/Tools/GetTrending.ts daily
# 按语言筛选
bun ~/.claude/skills/GitHubTrends/Tools/GetTrending.ts weekly --language=TypeScript
bun ~/.claude/skills/GitHubTrends/Tools/GetTrending.ts weekly --language=Python
# 指定显示数量
bun ~/.claude/skills/GitHubTrends/Tools/GetTrending.ts weekly --limit=20
```
---
## When to Use This Skill
**Core Triggers - Use this skill when user says:**
### Direct Requests
- "show github trends" 或 "github trending"
- "显示热门项目" 或 "看看有什么热门项目"
- "what's trending on github" 或 "github hot projects"
- "本周热门项目" 或 "weekly trending"
- "今日热门项目" 或 "daily trending"
### Discovery Requests
- "discover popular projects" 或 "发现热门项目"
- "show repositories trending" 或 "显示trending仓库"
- "github上什么最火" 或 "what's hot on github"
- "找点好项目看看" 或 "find good projects"
### Language-Specific
- "TypeScript trending projects" 或 "TypeScript热门项目"
- "Python trending" 或 "Python热门项目"
- "show trending Rust projects" 或 "显示Rust热门项目"
- "Go语言热门项目" 或 "trending Go projects"
### Dashboard & Visualization
- "生成 GitHub trending 仪表板" 或 "generate trending dashboard"
- "创建趋势网页" 或 "create trending webpage"
- "生成交互式报告" 或 "generate interactive report"
- "export trending dashboard" 或 "导出仪表板"
- "可视化 GitHub 趋势" 或 "visualize github trends"
---
## Core Capabilities
### 获取趋势列表
- **每日趋势** - 过去24小时最热门项目
- **每周趋势** - 过去7天最热门项目(默认)
- **语言筛选** - 按编程语言过滤(TypeScript, Python, Go, Rust等)
- **自定义数量** - 指定返回项目数量(默认10个)
### 生成可视化仪表板 🆕
- **交互式HTML** - 生成交互式网页仪表板
- **数据可视化** - 语言分布饼图、Stars增长柱状图
- **技术新闻** - 集成 Hacker News 技术资讯
- **实时筛选** - 按语言筛选、排序、搜索功能
- **响应式设计** - 支持桌面、平板、手机
### 项目信息
- 项目名称和描述
- Star数量和变化
- 编程语言
- 项目URL
---
## Tool Usage
### GetTrending.ts
**Location:** `Tools/GetTrending.ts`
**功能:** 从GitHub获取trending项目列表
**参数:**
- `period` - 时间周期:`daily` 或 `weekly`(默认:weekly)
- `--language` - 编程语言筛选(可选)
- `--limit` - 返回项目数量(默认:10)
**使用示例:**
```bash
# 基本用法
bun ~/.claude/skills/GitHubTrends/Tools/GetTrending.ts weekly
# 带参数
bun ~/.claude/skills/GitHubTrends/Tools/GetTrending.ts weekly --language=TypeScript --limit=15
# 简写
bun ~/.claude/skills/GitHubTrends/Tools/GetTrending.ts daily -l=Python
```
**实现方式:**
使用 GitHub官方trending页面:https://github.com/trending
通过 fetch API 读取页面内容并解析
---
### GenerateDashboard.ts 🆕
**Location:** `Tools/GenerateDashboard.ts`
**功能:** 生成交互式数据可视化仪表板HTML文件
**参数:**
- `--period` - 时间周期:`daily` 或 `weekly`(默认:weekly)
- `--language` - 编程语言筛选(可选)
- `--limit` - 返回项目数量(默认:10)
- `--include-news` - 包含技术新闻
- `--news-count` - 新闻数量(默认:10)
- `--output` - 输出文件路径(默认:./github-trends.html)
**使用示例:**
```bash
# 基本用法 - 生成本周仪表板
bun ~/.claude/skills/GitHubTrends/Tools/GenerateDashboard.ts
# 包含技术新闻
bun ~/.claude/skills/GitHubTrends/Tools/GenerateDashboard.ts --include-news
# TypeScript 项目每日仪表板
bun ~/.claude/skills/GitHubTrends/Tools/GenerateDashboard.ts \
--period daily \
--language TypeScript \
--limit 20 \
--include-news \
--output ~/ts-daily.html
```
**实现方式:**
- 获取 GitHub trending 项目数据
- 获取 Hacker News 技术新闻
- 使用 Handlebars 模板引擎渲染 HTML
- 集成 Tailwind CSS 和 Chart.js
- 生成完全独立的 HTML 文件(通过 CDN 加载依赖)
---
## Output Format
```markdown
# GitHub Trending Projects - Weekly (2025-01-19)
## 1. vercel/next.js - ⭐ 125,342 (+1,234 this week)
**Language:** TypeScript
**Description:** The React Framework for the Web
**URL:** https://github.com/vercel/next.js
## 2. microsoft/vscode - ⭐ 160,890 (+987 this week)
**Language:** TypeScript
**Description:** Visual Studio Code
**URL:** https://github.com/microsoft/vscode
...
---
📊 Total: 10 projects | Language: All | Period: Weekly
```
---
## Supported Languages
常用编程语言筛选:
- **TypeScript** - TypeScript项目
- **JavaScript** - JavaScript项目
- **Python** - Python项目
- **Go** - Go语言项目
- **Rust** - Rust项目
- **Java** - Java项目
- **C++** - C++项目
- **Ruby** - Ruby项目
- **Swift** - Swift项目
- **Kotlin** - Kotlin项目
---
## Workflow Integration
这个skill可以被其他skill调用:
- **OSINT** - 在调查技术栈时发现热门工具
- **Research** - 研究特定语言生态系统的趋势
- **System** - 发现有用的PAI相关项目
---
## Technical Notes
**数据来源:** GitHub官方trending页面
**更新频率:** 每小时更新一次
**无需认证:** 使用公开页面,无需GitHub API token
**解析方式:** 通过HTML解析提取项目信息
**错误处理:**
- 网络错误会显示友好提示
- 解析失败会返回原始HTML供调试
- 支持的语言参数不区分大小写
---
## Future Enhancements
可能的未来功能:
- 支持月度趋势(如果GitHub提供)
- 按stars范围筛选(1k+, 10k+, 100k+)
- 保存历史数据用于趋势分析
- 集成到其他skill的自动化工作流
---
## Voice Notification
**When executing a workflow, do BOTH:**
1. **Send voice notification:**
```bash
curl -s -X POST http://localhost:8888/notify \
-H "Content-Type: application/json" \
-d '{"message": "Running the GitHubTrends workflow"}' \
> /dev/null 2>&1 &
```
2. **Output text notification:**
```
Running the **GitHubTrends** workflow...
```
**Full documentation:** `~/.claude/skills/CORE/SkillNotifications.md`
FILE:README.md
# GitHubTrends Skill
**快速发现GitHub上最受欢迎的开源项目,生成可视化仪表板!**
## 功能特性
### 基础功能
- ✅ 获取每日/每周热门项目列表
- ✅ 按编程语言筛选(TypeScript, Python, Go, Rust等)
- ✅ 自定义返回项目数量
- ✅ 显示Star总数和周期增长
- ✅ 无需GitHub API token
### 可视化仪表板 🆕
- ✨ **交互式HTML** - 生成交互式网页仪表板
- 📊 **数据可视化** - 语言分布饼图、Stars增长柱状图
- 📰 **技术新闻** - 集成 Hacker News 最新资讯
- 🔍 **实时筛选** - 按语言筛选、排序、搜索
- 📱 **响应式设计** - 支持桌面、平板、手机
- 🎨 **美观界面** - Tailwind CSS + GitHub 风格
## 快速开始
### 查看本周热门项目(默认)
```bash
bun ~/.claude/skills/GitHubTrends/Tools/GetTrending.ts weekly
```
### 查看今日热门项目
```bash
bun ~/.claude/skills/GitHubTrends/Tools/GetTrending.ts daily
```
### 按语言筛选
```bash
# TypeScript热门项目
bun ~/.claude/skills/GitHubTrends/Tools/GetTrending.ts weekly --language=TypeScript
# Python热门项目
bun ~/.claude/skills/GitHubTrends/Tools/GetTrending.ts weekly --language=Python
# Go热门项目
bun ~/.claude/skills/GitHubTrends/Tools/GetTrending.ts weekly -l=Go
```
### 指定返回数量
```bash
# 返回20个项目
bun ~/.claude/skills/GitHubTrends/Tools/GetTrending.ts weekly --limit=20
# 组合使用:返回15个TypeScript项目
bun ~/.claude/skills/GitHubTrends/Tools/GetTrending.ts weekly --language=TypeScript --limit=15
```
---
## 生成可视化仪表板 🆕
### 基本用法
```bash
# 生成本周趋势仪表板(默认)
bun ~/.claude/skills/GitHubTrends/Tools/GenerateDashboard.ts
```
### 包含技术新闻
```bash
# 生成包含 Hacker News 的仪表板
bun ~/.claude/skills/GitHubTrends/Tools/GenerateDashboard.ts --include-news
```
### 高级选项
```bash
# 生成 TypeScript 项目每日仪表板,包含 15 条新闻
bun ~/.claude/skills/GitHubTrends/Tools/GenerateDashboard.ts \
--period daily \
--language TypeScript \
--limit 20 \
--include-news \
--news-count 15 \
--output ~/Downloads/ts-daily-trends.html
```
### 仪表板功能
生成的 HTML 文件包含:
- **统计概览** - 总项目数、总 stars、top 项目
- **语言分布图** - 饼图展示各语言占比
- **Stars 增长图** - 柱状图展示增长趋势
- **项目卡片** - 美观的卡片式项目展示
- **技术新闻** - Hacker News 最新资讯
- **交互功能** - 筛选、排序、搜索
- **响应式** - 自适应各种屏幕尺寸
---
## 输出示例
```markdown
# GitHub Trending Projects - Weekly (2026-01-19)
📊 **Total:** 10 projects | **Language:** All | **Period:** Weekly
---
## 1. vercel/next.js - ⭐ 125,342 (+1,234 this week)
**Language:** TypeScript
**Description:** The React Framework for the Web
**URL:** https://github.com/vercel/next.js
## 2. microsoft/vscode - ⭐ 160,890 (+987 this week)
**Language:** TypeScript
**Description:** Visual Studio Code
**URL:** https://github.com/microsoft/vscode
...
```
## 参数说明
| 参数 | 说明 | 默认值 | 可选值 |
|------|------|--------|--------|
| `period` | 时间周期 | `weekly` | `daily`, `weekly` |
| `--language` | 编程语言筛选 | 全部 | TypeScript, Python, Go, Rust, Java等 |
| `--limit` | 返回项目数量 | 10 | 任意正整数 |
## 支持的语言
常用的编程语言都可以作为筛选条件:
- **TypeScript** - TypeScript项目
- **JavaScript** - JavaScript项目
- **Python** - Python项目
- **Go** - Go语言项目
- **Rust** - Rust项目
- **Java** - Java项目
- **C++** - C++项目
- **Ruby** - Ruby项目
- **Swift** - Swift项目
- **Kotlin** - Kotlin项目
## Skill 触发词
当你说以下任何内容时,这个skill会被触发:
- "show github trends" / "github trending"
- "显示热门项目" / "看看有什么热门项目"
- "weekly trending" / "本周热门项目"
- "daily trending" / "今日热门项目"
- "TypeScript trending" / "Python trending"
- "what's hot on github" / "github上什么最火"
## 技术实现
- **数据源**: GitHub官方trending页面 (https://github.com/trending)
- **解析方式**: HTML解析提取项目信息
- **认证**: 无需GitHub API token
- **更新频率**: 每小时更新一次
## 目录结构
```
~/.claude/skills/GitHubTrends/
├── SKILL.md # Skill主文件
├── README.md # 使用文档(本文件)
├── Tools/
│ └── GetTrending.ts # 获取trending数据的工具
└── Workflows/
└── GetTrending.md # 工作流文档
```
## 注意事项
1. **网络要求**: 需要能访问GitHub官网
2. **更新频率**: 数据每小时更新,不是实时
3. **解析准确性**: GitHub页面结构变化可能影响解析,如遇问题请检查 `/tmp/github-trending-debug-*.html`
4. **语言参数**: 不区分大小写,`--language=typescript` 和 `--language=TypeScript` 效果相同
## 已知问题
- GitHub trending页面的HTML结构复杂,某些项目的URL和名称可能解析不完整
- 如果GitHub页面结构变化,工具可能需要更新解析逻辑
## 未来改进
- [ ] 支持保存历史数据用于趋势分析
- [ ] 按stars范围筛选(1k+, 10k+, 100k+)
- [ ] 更智能的HTML解析(使用HTML解析库而非正则)
- [ ] 集成到其他skill的自动化工作流
## 贡献
如果发现问题或有改进建议,欢迎提出!
---
**Made with ❤️ by 老王**
FILE:Tools/GetTrending.ts
#!/usr/bin/env bun
/**
* GitHub Trending Projects Fetcher
*
* 从GitHub获取trending项目列表
* 支持每日/每周趋势,按语言筛选
*/
import { $ } from "bun";
interface TrendingProject {
rank: number;
name: string;
description: string;
language: string;
stars: string;
starsThisPeriod: string;
url: string;
}
interface TrendingOptions {
period: "daily" | "weekly";
language?: string;
limit: number;
}
function buildTrendingUrl(options: TrendingOptions): string {
const baseUrl = "https://github.com/trending";
const since = options.period === "daily" ? "daily" : "weekly";
let url = `baseUrl?since=since`;
if (options.language) {
url += `&language=encodeURIComponent(options.language.toLowerCase())`;
}
return url;
}
function parseTrendingProjects(html: string, limit: number): TrendingProject[] {
const projects: TrendingProject[] = [];
try {
const articleRegex = /<article[^>]*>([\s\S]*?)<\/article>/g;
const articles = html.match(articleRegex) || [];
const articlesToProcess = articles.slice(0, limit);
articlesToProcess.forEach((article, index) => {
try {
const headingMatch = article.match(/<h[12][^>]*>([\s\S]*?)<\/h[12]>/);
let repoName: string | null = null;
if (headingMatch) {
const headingContent = headingMatch[1];
const validLinkMatch = headingContent.match(
/<a[^>]*href="\/([^\/"\/]+\/[^\/"\/]+)"[^>]*>(?![^<]*login)/
);
if (validLinkMatch) {
repoName = validLinkMatch[1];
}
}
if (!repoName) {
const repoMatch = article.match(
/<a[^>]*href="\/([a-zA-Z0-9_.-]+\/[a-zA-Z0-9_.-]+)"[^>]*>(?!.*(?:login|stargazers|forks|issues))/
);
repoName = repoMatch ? repoMatch[1] : null;
}
const descMatch = article.match(/<p[^>]*class="[^"]*col-9[^"]*"[^>]*>([\s\S]*?)<\/p>/);
const description = descMatch
? descMatch[1]
.replace(/<[^>]+>/g, "")
.replace(/&/g, "&")
.replace(/</g, "<")
.replace(/>/g, ">")
.replace(/"/g, '"')
.trim()
.substring(0, 200)
: "No description";
const langMatch = article.match(/<span[^>]*itemprop="programmingLanguage"[^>]*>([^<]+)<\/span>/);
const language = langMatch ? langMatch[1].trim() : "Unknown";
const starsMatch = article.match(/<a[^>]*href="\/[^"]+\/stargazers"[^>]*>(\d[\d,]*)\s*stars?/);
const totalStars = starsMatch ? starsMatch[1] : "0";
const starsAddedMatch = article.match(/(\d[\d,]*)\s*stars?\s*(?:today|this week)/i);
const starsAdded = starsAddedMatch ? `+starsAddedMatch[1]` : "";
if (repoName && !repoName.includes("login") && !repoName.includes("return_to")) {
projects.push({
rank: index + 1,
name: repoName,
description,
language,
stars: totalStars,
starsThisPeriod: starsAdded,
url: `https://github.com/repoName`,
});
}
} catch (error) {
console.error(`解析第index + 1个项目失败:`, error);
}
});
} catch (error) {
console.error("解析trending项目失败:", error);
}
return projects;
}
function formatProjects(projects: TrendingProject[], options: TrendingOptions): string {
if (projects.length === 0) {
return "# GitHub Trending - No Projects Found\n\n没有找到trending项目,可能是网络问题或页面结构变化。";
}
const periodLabel = options.period === "daily" ? "Daily" : "Weekly";
const languageLabel = options.language ? `Language: options.language` : "Language: All";
const today = new Date().toISOString().split("T")[0];
let output = `# GitHub Trending Projects - periodLabel (today)\n\n`;
output += `📊 **Total:** projects.length projects | **languageLabel** | **Period:** periodLabel\n\n`;
output += `---\n\n`;
projects.forEach((project) => {
output += `## project.rank. project.name - ⭐ project.stars`;
if (project.starsThisPeriod) {
output += ` (project.starsThisPeriod this options.period)`;
}
output += `\n`;
output += `**Language:** project.language\n`;
output += `**Description:** project.description\n`;
output += `**URL:** project.url\n\n`;
});
output += `---\n`;
output += `📊 Data from: https://github.com/trending\n`;
return output;
}
async function main() {
const args = process.argv.slice(2);
let period: "daily" | "weekly" = "weekly";
let language: string | undefined;
let limit = 10;
for (const arg of args) {
if (arg === "daily" || arg === "weekly") {
period = arg;
} else if (arg.startsWith("--language=")) {
language = arg.split("=")[1];
} else if (arg.startsWith("-l=")) {
language = arg.split("=")[1];
} else if (arg.startsWith("--limit=")) {
limit = parseInt(arg.split("=")[1]) || 10;
}
}
const options: TrendingOptions = { period, language, limit };
try {
const url = buildTrendingUrl(options);
console.error(`正在获取 GitHub trending 数据: url`);
const response = await fetch(url);
if (!response.ok) {
throw new Error(`HTTP response.status: response.statusText`);
}
const html = await response.text();
const projects = parseTrendingProjects(html, limit);
const formatted = formatProjects(projects, options);
console.log(formatted);
if (projects.length === 0) {
const debugFile = `/tmp/github-trending-debug-Date.now().html`;
await Bun.write(debugFile, html);
console.error(`\n调试: 原始HTML已保存到 debugFile`);
}
} catch (error) {
console.error("❌ 获取trending数据失败:");
console.error(error);
process.exit(1);
}
}
main();
FILE:Workflows/GetTrending.md
# GetTrending Workflow
获取GitHub trending项目列表的工作流程。
## Description
这个工作流使用 GetTrending.ts 工具从GitHub获取当前最热门的项目列表,支持按时间周期(每日/每周)和编程语言筛选。
## When to Use
当用户请求以下任何内容时使用此工作流:
- "show github trends" / "github trending"
- "显示热门项目" / "看看有什么热门项目"
- "weekly trending" / "本周热门项目"
- "daily trending" / "今日热门项目"
- "TypeScript trending" / "Python trending" / 按语言筛选
- "what's hot on github" / "github上什么最火"
## Workflow Steps
### Step 1: 确定参数
向用户确认或推断以下参数:
- **时间周期**: daily (每日) 或 weekly (每周,默认)
- **编程语言**: 可选(如 TypeScript, Python, Go, Rust等)
- **项目数量**: 默认10个
### Step 2: 执行工具
运行 GetTrending.ts 工具:
```bash
# 基本用法(本周,全部语言,10个项目)
bun ~/.claude/skills/GitHubTrends/Tools/GetTrending.ts weekly
# 指定语言
bun ~/.claude/skills/GitHubTrends/Tools/GetTrending.ts weekly --language=TypeScript
# 指定数量
bun ~/.claude/skills/GitHubTrends/Tools/GetTrending.ts weekly --limit=20
# 组合参数
bun ~/.claude/skills/GitHubTrends/Tools/GetTrending.ts daily --language=Python --limit=15
```
### Step 3: 显示结果
工具会自动格式化输出,包括:
- 项目排名
- 项目名称
- Star总数和周期内增长
- 编程语言
- 项目描述
- GitHub URL
### Step 4: 后续操作(可选)
根据用户需求,可以:
- 打开某个项目页面
- 使用其他skill进一步分析项目
- 将结果保存到文件供后续参考
## Integration with Other Skills
- **OSINT**: 在调查技术栈时发现热门工具
- **Research**: 研究特定语言生态系统的趋势
- **Browser**: 打开项目页面进行详细分析
## Notes
- 数据每小时更新一次
- 无需GitHub API token
- 使用公开的GitHub trending页面
- 支持的语言参数不区分大小写
FILE:Tools/GenerateDashboard.ts
#!/usr/bin/env bun
/**
* GitHub Trending Dashboard Generator
*
* 生成交互式数据可视化仪表板
*
* 使用方式:
* ./GenerateDashboard.ts [options]
*
* 选项:
* --period - daily | weekly (默认: weekly)
* --language - 编程语言筛选 (可选)
* --limit - 项目数量 (默认: 10)
* --include-news - 包含技术新闻
* --news-count - 新闻数量 (默认: 10)
* --theme - light | dark | auto (默认: auto)
* --output - 输出文件路径 (默认: ./github-trends.html)
*
* 示例:
* ./GenerateDashboard.ts
* ./GenerateDashboard.ts --period daily --language TypeScript --include-news
* ./GenerateDashboard.ts --limit 20 --output ~/trends.html
*/
import Handlebars from 'handlebars';
import type { DashboardOptions, TrendingProject, TechNewsItem, TemplateData } from './Lib/types';
import { registerHelpers, renderTemplate } from './Lib/template-helpers';
import { analyzeData } from './Lib/visualization-helpers';
// 注册 Handlebars 辅助函数
registerHelpers();
/**
* 构建 GitHub trending URL
*/
function buildTrendingUrl(options: DashboardOptions): string {
const baseUrl = "https://github.com/trending";
const since = options.period === "daily" ? "daily" : "weekly";
let url = `baseUrl?since=since`;
if (options.language) {
url += `&language=encodeURIComponent(options.language.toLowerCase())`;
}
return url;
}
/**
* 解析 HTML 提取 trending 项目
* (从 GetTrending.ts 复制的逻辑)
*/
async function getTrendingProjects(options: DashboardOptions): Promise<TrendingProject[]> {
const url = buildTrendingUrl(options);
console.error(`正在获取 GitHub trending 数据: url`);
const response = await fetch(url);
if (!response.ok) {
throw new Error(`HTTP response.status: response.statusText`);
}
const html = await response.text();
return parseTrendingProjects(html, options.limit);
}
/**
* 解析 HTML
*/
function parseTrendingProjects(html: string, limit: number): TrendingProject[] {
const projects: TrendingProject[] = [];
try {
const articleRegex = /<article[^>]*>([\s\S]*?)<\/article>/g;
const articles = html.match(articleRegex) || [];
const articlesToProcess = articles.slice(0, limit);
articlesToProcess.forEach((article, index) => {
try {
const headingMatch = article.match(/<h[12][^>]*>([\s\S]*?)<\/h[12]>/);
let repoName: string | null = null;
if (headingMatch) {
const headingContent = headingMatch[1];
const validLinkMatch = headingContent.match(
/<a[^>]*href="\/([^\/"\/]+\/[^\/"\/]+)"[^>]*>(?![^<]*login)/
);
if (validLinkMatch) {
repoName = validLinkMatch[1];
}
}
if (!repoName) {
const repoMatch = article.match(
/<a[^>]*href="\/([a-zA-Z0-9_.-]+\/[a-zA-Z0-9_.-]+)"[^>]*>(?!.*(?:login|stargazers|forks|issues))/
);
repoName = repoMatch ? repoMatch[1] : null;
}
const descMatch = article.match(/<p[^>]*class="[^"]*col-9[^"]*"[^>]*>([\s\S]*?)<\/p>/);
const description = descMatch
? descMatch[1]
.replace(/<[^>]+>/g, "")
.replace(/&/g, "&")
.replace(/</g, "<")
.replace(/>/g, ">")
.replace(/"/g, '"')
.trim()
.substring(0, 200)
: "No description";
const langMatch = article.match(/<span[^>]*itemprop="programmingLanguage"[^>]*>([^<]+)<\/span>/);
const language = langMatch ? langMatch[1].trim() : "Unknown";
// 提取stars总数 - GitHub 改了 HTML 结构,数字在 SVG 后面
const starsMatch = article.match(/stargazers[^>]*>[\s\S]*?<\/svg>\s*([\d,]+)/);
const totalStars = starsMatch ? starsMatch[1] : "0";
// 尝试提取新增stars - 格式:XXX stars today/this week
const starsAddedMatch = article.match(/(\d[\d,]*)\s+stars?\s+(?:today|this week)/);
const starsAdded = starsAddedMatch ? `+starsAddedMatch[1]` : "";
if (repoName && !repoName.includes("login") && !repoName.includes("return_to")) {
projects.push({
rank: index + 1,
name: repoName,
description,
language,
stars: totalStars,
starsThisPeriod: starsAdded,
url: `https://github.com/repoName`,
});
}
} catch (error) {
console.error(`解析第index + 1个项目失败:`, error);
}
});
} catch (error) {
console.error("解析trending项目失败:", error);
}
return projects;
}
/**
* 获取技术新闻
*/
async function getTechNews(count: number): Promise<TechNewsItem[]> {
const HN_API = 'https://hn.algolia.com/api/v1/search_by_date';
try {
const response = await fetch(`HN_API?tags=story&hitsPerPage=count`);
if (!response.ok) {
throw new Error(`HTTP response.status: response.statusText`);
}
const data = await response.json();
return data.hits.slice(0, count).map((hit: any) => ({
id: hit.objectID,
title: hit.title,
url: hit.url || `https://news.ycombinator.com/item?id=hit.objectID`,
source: 'hackernews',
points: hit.points || 0,
comments: hit.num_comments || 0,
timestamp: new Date(hit.created_at).toISOString(),
tags: hit._tags || []
}));
} catch (error) {
console.error('获取 Hacker News 失败:', error);
return [];
}
}
/**
* 生成仪表板
*/
async function generateDashboard(options: DashboardOptions): Promise<void> {
try {
console.error('🚀 开始生成 GitHub Trending Dashboard...\n');
// 1. 获取 GitHub Trending 数据
const projects = await getTrendingProjects(options);
console.error(`✅ 获取到 projects.length 个项目`);
// 2. 获取技术新闻(如果启用)
let news: TechNewsItem[] = [];
if (options.includeNews) {
news = await getTechNews(options.newsCount);
console.error(`✅ 获取到 news.length 条新闻`);
}
// 3. 分析数据
const analytics = analyzeData(projects);
console.error(`✅ 数据分析完成`);
// 4. 准备模板数据
const templateData: TemplateData = {
title: 'GitHub Trending Dashboard',
generatedAt: new Date().toLocaleString('zh-CN'),
period: options.period === 'daily' ? 'Daily' : 'Weekly',
projects,
news,
analytics,
options
};
// 5. 渲染模板
const templatePath = `import.meta.dir/../Templates/dashboard.hbs`;
const templateContent = await Bun.file(templatePath).text();
const template = Handlebars.compile(templateContent);
const html = template(templateData);
console.error(`✅ 模板渲染完成`);
// 6. 保存文件
await Bun.write(options.output, html);
console.error(`\n🎉 仪表板生成成功!`);
console.error(`📄 文件路径: options.output`);
console.error(`\n💡 在浏览器中打开查看效果!`);
} catch (error) {
console.error('\n❌ 生成仪表板失败:');
console.error(error);
process.exit(1);
}
}
/**
* 解析命令行参数
*/
function parseArgs(): DashboardOptions {
const args = process.argv.slice(2);
const options: DashboardOptions = {
period: 'weekly',
limit: 10,
output: './github-trends.html',
includeNews: false,
newsCount: 10,
theme: 'auto'
};
for (let i = 0; i < args.length; i++) {
const arg = args[i];
switch (arg) {
case '--period':
options.period = args[++i] === 'daily' ? 'daily' : 'weekly';
break;
case '--language':
options.language = args[++i];
break;
case '--limit':
options.limit = parseInt(args[++i]) || 10;
break;
case '--include-news':
options.includeNews = true;
break;
case '--news-count':
options.newsCount = parseInt(args[++i]) || 10;
break;
case '--theme':
options.theme = args[++i] === 'light' || args[++i] === 'dark' ? args[i] : 'auto';
break;
case '--output':
options.output = args[++i];
break;
default:
if (arg.startsWith('--output=')) {
options.output = arg.split('=')[1];
} else if (arg.startsWith('--language=')) {
options.language = arg.split('=')[1];
} else if (arg.startsWith('--limit=')) {
options.limit = parseInt(arg.split('=')[1]) || 10;
}
}
}
return options;
}
/**
* 主函数
*/
async function main() {
const options = parseArgs();
await generateDashboard(options);
}
// 如果直接运行此脚本
if (import.meta.main) {
main();
}
// 导出供其他模块使用
export { generateDashboard };
export type { DashboardOptions };
FILE:Tools/GetTechNews.ts
#!/usr/bin/env bun
/**
* Tech News Fetcher
*
* 从 Hacker News 和其他来源获取技术新闻
*
* 使用方式:
* ./GetTechNews.ts [count]
*
* 参数:
* count - 获取新闻数量 (默认: 10)
*
* 示例:
* ./GetTechNews.ts
* ./GetTechNews.ts 20
*/
import Parser from 'rss-parser';
import type { TechNewsItem } from './Lib/types';
const HN_API = 'https://hn.algolia.com/api/v1/search';
const parser = new Parser();
/**
* 从 Hacker News Algolia API 获取新闻
*/
async function getHackerNews(count: number): Promise<TechNewsItem[]> {
try {
const response = await fetch(`HN_API?tags=front_page&hits=count`);
if (!response.ok) {
throw new Error(`HTTP response.status: response.statusText`);
}
const data = await response.json();
return data.hits.map((hit: any) => ({
id: hit.objectID,
title: hit.title,
url: hit.url || `https://news.ycombinator.com/item?id=hit.objectID`,
source: 'hackernews',
points: hit.points || 0,
comments: hit.num_comments || 0,
timestamp: new Date(hit.created_at).toISOString(),
tags: hit._tags || []
}));
} catch (error) {
console.error('获取 Hacker News 失败:', error);
return [];
}
}
/**
* 从 Hacker News RSS 获取新闻(备用方案)
*/
async function getHackerNewsRSS(count: number): Promise<TechNewsItem[]> {
try {
const feed = await parser.parseURL('https://news.ycombinator.com/rss');
return feed.items.slice(0, count).map((item: any) => ({
id: item.guid || item.link,
title: item.title || 'No title',
url: item.link,
source: 'hackernews',
timestamp: item.pubDate || new Date().toISOString(),
tags: ['hackernews', 'rss']
}));
} catch (error) {
console.error('获取 Hacker News RSS 失败:', error);
return [];
}
}
/**
* 获取技术新闻(主函数)
*/
async function getTechNews(count: number = 10): Promise<TechNewsItem[]> {
console.error(`正在获取技术新闻(count条)...`);
// 优先使用 Hacker News API
let news = await getHackerNews(count);
// 如果失败,尝试 RSS 备用
if (news.length === 0) {
console.error('Hacker News API 失败,尝试 RSS...');
news = await getHackerNewsRSS(count);
}
console.error(`✅ 获取到 news.length 条新闻`);
return news;
}
/**
* CLI 入口
*/
async function main() {
const args = process.argv.slice(2);
const count = parseInt(args[0]) || 10;
try {
const news = await getTechNews(count);
// 输出 JSON 格式(便于程序调用)
console.log(JSON.stringify(news, null, 2));
} catch (error) {
console.error('❌ 获取新闻失败:');
console.error(error);
process.exit(1);
}
}
// 如果直接运行此脚本
if (import.meta.main) {
main();
}
// 导出供其他模块使用
export { getTechNews };
export type { TechNewsItem };
FILE:Tools/Lib/types.ts
/**
* GitHubTrends - 类型定义
*
* 定义所有 TypeScript 接口和类型
*/
/**
* GitHub Trending 项目
*/
export interface TrendingProject {
rank: number;
name: string;
description: string;
language: string;
stars: string;
starsThisPeriod: string;
url: string;
}
/**
* 技术新闻条目
*/
export interface TechNewsItem {
id: string;
title: string;
url: string;
source: string; // 'hackernews', 'reddit', etc.
points?: number;
comments?: number;
timestamp: string;
tags: string[];
}
/**
* 仪表板生成选项
*/
export interface DashboardOptions {
period: 'daily' | 'weekly';
language?: string;
limit: number;
output: string;
includeNews: boolean;
newsCount: number;
theme: 'light' | 'dark' | 'auto';
}
/**
* 数据分析结果
*/
export interface Analytics {
languageDistribution: Record<string, number>;
totalStars: number;
topProject: TrendingProject;
growthStats: {
highest: TrendingProject;
average: number;
};
}
/**
* Trending 查询选项(用于 GetTrending.ts)
*/
export interface TrendingOptions {
period: "daily" | "weekly";
language?: string;
limit: number;
}
/**
* 图表数据
*/
export interface ChartData {
labels: string[];
data: number[];
colors: string[];
}
/**
* 模板渲染数据
*/
export interface TemplateData {
title: string;
generatedAt: string;
period: string;
projects: TrendingProject[];
news?: TechNewsItem[];
analytics: Analytics;
options: DashboardOptions;
}
FILE:Tools/Lib/template-helpers.ts
/**
* Template Helpers
*
* Handlebars 自定义辅助函数
*/
import Handlebars from 'handlebars';
/**
* 注册所有自定义辅助函数
*/
export function registerHelpers(): void {
// 格式化数字(添加千位分隔符)
Handlebars.registerHelper('formatNumber', (value: number) => {
return value.toLocaleString();
});
// 截断文本
Handlebars.registerHelper('truncate', (str: string, length: number = 100) => {
if (str.length <= length) return str;
return str.substring(0, length) + '...';
});
// 格式化日期
Handlebars.registerHelper('formatDate', (dateStr: string) => {
const date = new Date(dateStr);
return date.toLocaleDateString('zh-CN', {
year: 'numeric',
month: 'long',
day: 'numeric',
hour: '2-digit',
minute: '2-digit'
});
});
// JSON 序列化(用于内嵌数据)
Handlebars.registerHelper('json', (context: any) => {
return JSON.stringify(context);
});
// 条件判断
Handlebars.registerHelper('eq', (a: any, b: any) => {
return a === b;
});
Handlebars.registerHelper('ne', (a: any, b: any) => {
return a !== b;
});
Handlebars.registerHelper('gt', (a: number, b: number) => {
return a > b;
});
Handlebars.registerHelper('lt', (a: number, b: number) => {
return a < b;
});
}
/**
* 渲染模板
*/
export async function renderTemplate(
templatePath: string,
data: any
): Promise<string> {
const templateContent = await Bun.file(templatePath).text();
const template = Handlebars.compile(templateContent);
return template(data);
}
export default { registerHelpers, renderTemplate };
FILE:Tools/Lib/visualization-helpers.ts
/**
* Visualization Helpers
*
* 数据分析和可视化辅助函数
*/
import type { TrendingProject, Analytics } from './types';
/**
* 分析项目数据
*/
export function analyzeData(projects: TrendingProject[]): Analytics {
// 语言分布统计
const languageDistribution: Record<string, number> = {};
projects.forEach(project => {
const lang = project.language;
languageDistribution[lang] = (languageDistribution[lang] || 0) + 1;
});
// 总 stars 数
const totalStars = projects.reduce((sum, project) => {
return sum + parseInt(project.stars.replace(/,/g, '') || 0);
}, 0);
// 找出 top project
const topProject = projects.reduce((top, project) => {
const topStars = parseInt(top.stars.replace(/,/g, '') || 0);
const projStars = parseInt(project.stars.replace(/,/g, '') || 0);
return projStars > topStars ? project : top;
}, projects[0]);
// 增长统计
const projectsWithGrowth = projects.filter(p => p.starsThisPeriod);
const growthValues = projectsWithGrowth.map(p =>
parseInt(p.starsThisPeriod.replace(/[+,]/g, '') || 0)
);
const highestGrowth = projectsWithGrowth.reduce((highest, project) => {
const highestValue = parseInt(highest.starsThisPeriod.replace(/[+,]/g, '') || 0);
const projValue = parseInt(project.starsThisPeriod.replace(/[+,]/g, '') || 0);
return projValue > highestValue ? project : highest;
}, projectsWithGrowth[0] || projects[0]);
const averageGrowth = growthValues.length > 0
? Math.round(growthValues.reduce((a, b) => a + b, 0) / growthValues.length)
: 0;
// 提取唯一语言列表(用于筛选)
const languages = Object.keys(languageDistribution).sort();
// 生成图表数据
const growthData = projects.slice(0, 10).map(p => ({
name: p.name.split('/')[1] || p.name,
growth: parseInt(p.starsThisPeriod.replace(/[+,]/g, '') || 0)
}));
return {
languageDistribution,
totalStars,
topProject,
growthStats: {
highest: highestGrowth,
average: averageGrowth
},
languages,
growthData
};
}
/**
* 格式化 stars 数字
*/
export function formatStars(starsStr: string): number {
return parseInt(starsStr.replace(/,/g, '') || 0);
}
/**
* 解析增长数值
*/
export function parseGrowth(growthStr: string): number {
if (!growthStr) return 0;
return parseInt(growthStr.replace(/[+,]/g, '') || 0);
}
export default { analyzeData, formatStars, parseGrowth };
FILE:Templates/dashboard.hbs
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GitHub Trending Dashboard - {{period}}</title>
<!-- Tailwind CSS -->
<script src="https://cdn.tailwindcss.com"></script>
<script>
tailwind.config = {
theme: {
extend: {
colors: {
github: {
dark: '#0d1117',
light: '#161b22',
border: '#30363d',
accent: '#58a6ff'
}
}
}
}
}
</script>
<!-- Chart.js -->
<script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.1/dist/chart.umd.min.js"></script>
<style>
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
}
.project-card {
transition: all 0.3s ease;
}
.project-card:hover {
transform: translateY(-2px);
box-shadow: 0 8px 25px rgba(0,0,0,0.15);
}
.stat-card {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
}
.badge {
display: inline-block;
padding: 0.25rem 0.75rem;
border-radius: 9999px;
font-size: 0.75rem;
font-weight: 600;
}
.news-item {
border-left: 3px solid #58a6ff;
padding-left: 1rem;
}
</style>
</head>
<body class="bg-gray-50 min-h-screen">
<!-- 页头 -->
<header class="bg-white shadow-sm sticky top-0 z-50">
<div class="max-w-7xl mx-auto px-4 py-4 sm:px-6 lg:px-8">
<div class="flex justify-between items-center">
<div>
<h1 class="text-3xl font-bold text-gray-900">🚀 GitHub Trending Dashboard</h1>
<p class="text-gray-600 mt-1">
周期: <span class="font-semibold text-github-accent">{{period}}</span> |
生成时间: <span class="text-gray-500">{{generatedAt}}</span>
</p>
</div>
<div class="flex gap-2">
<button onclick="window.print()" class="px-4 py-2 bg-gray-100 hover:bg-gray-200 rounded-lg text-sm font-medium">
🖨️ Print
</button>
</div>
</div>
</div>
</header>
<main class="max-w-7xl mx-auto px-4 py-8 sm:px-6 lg:px-8">
<!-- 统计概览 -->
<section class="grid grid-cols-1 md:grid-cols-3 gap-6 mb-8">
<div class="stat-card rounded-xl p-6 text-white shadow-lg">
<h3 class="text-lg font-semibold opacity-90">项目总数</h3>
<p class="text-4xl font-bold mt-2">{{projects.length}}</p>
<p class="text-sm opacity-75 mt-1">{{period}} 热门趋势</p>
</div>
<div class="bg-gradient-to-br from-green-500 to-emerald-600 rounded-xl p-6 text-white shadow-lg">
<h3 class="text-lg font-semibold opacity-90">总 Stars 数</h3>
<p class="text-4xl font-bold mt-2">{{analytics.totalStars}}</p>
<p class="text-sm opacity-75 mt-1">所有项目总计</p>
</div>
<div class="bg-gradient-to-br from-orange-500 to-red-500 rounded-xl p-6 text-white shadow-lg">
<h3 class="text-lg font-semibold opacity-90">最热项目</h3>
<p class="text-xl font-bold mt-2 truncate">{{analytics.topProject.name}}</p>
<p class="text-sm opacity-75 mt-1">{{analytics.topProject.stars}} stars</p>
</div>
</section>
<!-- 筛选和搜索 -->
<section class="bg-white rounded-xl shadow-sm p-6 mb-8">
<div class="flex flex-wrap gap-4 items-center">
<div class="flex-1 min-w-64">
<label class="block text-sm font-medium text-gray-700 mb-1">搜索项目</label>
<input
type="text"
id="searchInput"
placeholder="按名称或描述搜索..."
class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-github-accent focus:border-transparent"
oninput="filterProjects()"
>
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">语言筛选</label>
<select
id="languageFilter"
class="px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-github-accent focus:border-transparent"
onchange="filterProjects()"
>
<option value="all">全部语言</option>
{{#each analytics.languages}}
<option value="{{this}}">{{this}}</option>
{{/each}}
</select>
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">排序方式</label>
<select
id="sortSelect"
class="px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-github-accent focus:border-transparent"
onchange="sortProjects()"
>
<option value="rank">排名</option>
<option value="stars">总 Stars</option>
<option value="growth">本期增长</option>
</select>
</div>
</div>
</section>
<!-- 语言分布图表 -->
<section class="bg-white rounded-xl shadow-sm p-6 mb-8">
<h2 class="text-2xl font-bold text-gray-900 mb-4">📊 语言分布</h2>
<div class="grid grid-cols-1 lg:grid-cols-2 gap-8">
<div>
<canvas id="languageChart"></canvas>
</div>
<div>
<canvas id="growthChart"></canvas>
</div>
</div>
</section>
<!-- Trending Projects -->
<section class="mb-8">
<h2 class="text-2xl font-bold text-gray-900 mb-4">🔥 热门项目</h2>
<div id="projects-container" class="grid grid-cols-1 gap-4">
{{#each projects}}
<div class="project-card bg-white rounded-xl shadow-sm p-6 border border-gray-200"
data-rank="{{rank}}"
data-language="{{language}}"
data-stars="{{stars}}"
data-growth="{{starsThisPeriod}}"
data-name="{{name}}"
data-description="{{description}}">
<div class="flex items-start justify-between">
<div class="flex-1">
<div class="flex items-center gap-3 mb-2">
<span class="text-2xl font-bold text-github-accent">#{{rank}}</span>
<h3 class="text-xl font-semibold text-gray-900">
<a href="{{url}}" target="_blank" class="hover:text-github-accent">{{name}}</a>
</h3>
<span class="badge bg-blue-100 text-blue-800">{{language}}</span>
</div>
<p class="text-gray-600 mb-3">{{description}}</p>
<div class="flex items-center gap-4 text-sm text-gray-500">
<span>⭐ {{stars}} stars</span>
{{#if starsThisPeriod}}
<span class="text-green-600 font-semibold">(+{{starsThisPeriod}} this {{../period}})</span>
{{/if}}
</div>
</div>
<a href="{{url}}" target="_blank" class="px-4 py-2 bg-github-accent text-white rounded-lg hover:bg-blue-600 transition font-medium">
View →
</a>
</div>
</div>
{{/each}}
</div>
</section>
<!-- Tech News -->
{{#if news}}
<section class="mb-8">
<h2 class="text-2xl font-bold text-gray-900 mb-4">📰 技术资讯</h2>
<div class="grid grid-cols-1 gap-4">
{{#each news}}
<div class="news-item bg-white rounded-xl shadow-sm p-5 hover:shadow-md transition">
<div class="flex items-start justify-between">
<div class="flex-1">
<h3 class="text-lg font-semibold text-gray-900 mb-1">
<a href="{{url}}" target="_blank" class="hover:text-github-accent">{{title}}</a>
</h3>
<div class="flex items-center gap-4 text-sm text-gray-500">
<span class="text-orange-600">📰 {{source}}</span>
{{#if points}}
<span>⬆️ {{points}} points</span>
{{/if}}
{{#if comments}}
<span>💬 {{comments}} comments</span>
{{/if}}
</div>
</div>
</div>
</div>
{{/each}}
</div>
</section>
{{/if}}
</main>
<!-- 页脚 -->
<footer class="bg-white border-t border-gray-200 mt-12">
<div class="max-w-7xl mx-auto px-4 py-6 sm:px-6 lg:px-8">
<p class="text-center text-gray-500 text-sm">
由 GitHubTrends Skill 生成 | 数据来源:GitHub 和 Hacker News
</p>
</div>
</footer>
<!-- JavaScript -->
<script>
// 注入数据
window.dashboardData = {
projects: {{{json projects}}},
analytics: {
languageDistribution: {{{json analytics.languageDistribution}}},
growthData: {{{json analytics.growthData}}}
}
};
// 初始化图表
document.addEventListener('DOMContentLoaded', function() {
initLanguageChart();
initGrowthChart();
});
// 语言分布饼图
function initLanguageChart() {
const ctx = document.getElementById('languageChart').getContext('2d');
const data = window.dashboardData.analytics.languageDistribution;
new Chart(ctx, {
type: 'pie',
data: {
labels: Object.keys(data),
datasets: [{
data: Object.values(data),
backgroundColor: [
'#58a6ff', '#238636', '#f1e05a', '#d73a49',
'#8957E5', '#e34c26', '#CB3837', '#DA5B0B',
'#4F5D95', '#563d7c'
]
}]
},
options: {
responsive: true,
plugins: {
legend: {
position: 'right'
},
title: {
display: true,
text: 'Projects by Language'
}
}
}
});
}
// Stars 增长柱状图
function initGrowthChart() {
const ctx = document.getElementById('growthChart').getContext('2d');
const projects = window.dashboardData.projects.slice(0, 10);
new Chart(ctx, {
type: 'bar',
data: {
labels: projects.map(p => p.name.split('/')[1] || p.name),
datasets: [{
label: 'Stars This Period',
data: projects.map(p => parseInt(p.starsThisPeriod.replace('+', '') || 0)),
backgroundColor: 'rgba(88, 166, 255, 0.8)',
borderColor: 'rgba(88, 166, 255, 1)',
borderWidth: 1
}]
},
options: {
responsive: true,
indexAxis: 'y',
plugins: {
title: {
display: true,
text: 'Top 10 Growth'
}
},
scales: {
x: {
beginAtZero: true
}
}
}
});
}
// 筛选项目
function filterProjects() {
const searchValue = document.getElementById('searchInput').value.toLowerCase();
const languageValue = document.getElementById('languageFilter').value;
const cards = document.querySelectorAll('.project-card');
cards.forEach(card => {
const name = card.dataset.name.toLowerCase();
const description = card.dataset.description.toLowerCase();
const language = card.dataset.language;
const matchesSearch = name.includes(searchValue) || description.includes(searchValue);
const matchesLanguage = languageValue === 'all' || language === languageValue;
card.style.display = matchesSearch && matchesLanguage ? 'block' : 'none';
});
}
// 排序项目
function sortProjects() {
const sortBy = document.getElementById('sortSelect').value;
const container = document.getElementById('projects-container');
const cards = Array.from(container.children);
cards.sort((a, b) => {
switch(sortBy) {
case 'stars':
return parseInt(b.dataset.stars.replace(/,/g, '')) - parseInt(a.dataset.stars.replace(/,/g, ''));
case 'growth':
const growthA = parseInt(a.dataset.growth.replace(/[+,]/g, '') || 0);
const growthB = parseInt(b.dataset.growth.replace(/[+,]/g, '') || 0);
return growthB - growthA;
case 'rank':
default:
return parseInt(a.dataset.rank) - parseInt(b.dataset.rank);
}
});
cards.forEach(card => container.appendChild(card));
}
</script>
</body>
</html>
FILE:Workflows/GenerateDashboard.md
# GenerateDashboard Workflow
生成交互式数据可视化仪表板的工作流程。
## Description
这个工作流使用 GenerateDashboard.ts 工具从 GitHub 获取 trending 项目,并生成交互式 HTML 仪表板,支持:
- 项目卡片展示
- 语言分布饼图
- Stars 增长柱状图
- 技术新闻列表
- 实时筛选、排序、搜索功能
## When to Use
当用户请求以下任何内容时使用此工作流:
- "生成 GitHub trending 仪表板"
- "创建趋势网页"
- "生成可视化报告"
- "export trending dashboard"
- "生成交互式网页"
## Workflow Steps
### Step 1: 确定参数
向用户确认或推断以下参数:
- **时间周期**: daily (每日) 或 weekly (每周,默认)
- **编程语言**: 可选(如 TypeScript, Python, Go, Rust等)
- **项目数量**: 默认10个
- **包含新闻**: 是否包含技术新闻
- **新闻数量**: 默认10条
- **输出路径**: 默认 ./github-trends.html
### Step 2: 执行工具
运行 GenerateDashboard.ts 工具:
```bash
# 基本用法(本周,10个项目)
bun ~/.claude/skills/GitHubTrends/Tools/GenerateDashboard.ts
# 指定语言和新闻
bun ~/.claude/skills/GitHubTrends/Tools/GenerateDashboard.ts \
--period weekly \
--language TypeScript \
--limit 20 \
--include-news \
--news-count 15 \
--output ~/trends.html
# 每日趋势
bun ~/.claude/skills/GitHubTrends/Tools/GenerateDashboard.ts \
--period daily \
--output ~/daily-trends.html
```
### Step 3: 显示结果
工具会自动:
1. 获取 GitHub trending 数据
2. 获取技术新闻(如果启用)
3. 分析数据生成统计信息
4. 渲染 HTML 模板
5. 保存到指定路径
### Step 4: 验证和打开
生成的 HTML 文件包含:
- ✅ 响应式布局
- ✅ 项目卡片展示
- ✅ 语言分布饼图
- ✅ Stars 增长柱状图
- ✅ 实时筛选功能
- ✅ 排序功能
- ✅ 搜索功能
- ✅ 技术新闻列表
## Example Usage
### Example 1: 基本仪表板
```
User: "生成本周 GitHub trending 仪表板"
Assistant:
运行 GenerateDashboard 工具...
[执行命令,生成 /tmp/github-trends.html]
✅ 仪表板生成成功!已在浏览器中打开。
```
### Example 2: 包含新闻的仪表板
```
User: "生成 TypeScript 项目的每日趋势,包含新闻"
Assistant:
生成 TypeScript 每日趋势仪表板,包含技术新闻...
[执行命令:--period daily --language TypeScript --include-news]
✅ 仪表板已生成到 ~/Downloads/ts-daily-trends.html
```
### Example 3: 自定义输出
```
User: "生成一个包含 20 个项目的仪表板,保存到桌面"
Assistant:
生成 20 个项目的趋势仪表板...
[执行命令:--limit 20 --output ~/Desktop/github-trends.html]
✅ 完成!文件已保存到桌面
```
## Tool Options
| 参数 | 说明 | 默认值 | 可选值 |
|------|------|--------|--------|
| `--period` | 时间周期 | `weekly` | `daily`, `weekly` |
| `--language` | 编程语言筛选 | 全部 | TypeScript, Python, Go, Rust等 |
| `--limit` | 返回项目数量 | 10 | 任意正整数 |
| `--include-news` | 包含技术新闻 | false | - |
| `--news-count` | 新闻数量 | 10 | 任意正整数 |
| `--theme` | 主题 | `auto` | `light`, `dark`, `auto` |
| `--output` | 输出文件路径 | `./github-trends.html` | 任意路径 |
## Output Features
### 数据可视化
- **语言分布饼图**: 展示各编程语言的项目占比
- **Stars 增长柱状图**: 展示前 10 名项目的 stars 增长
### 交互功能
- **搜索**: 按项目名称或描述搜索
- **筛选**: 按编程语言筛选
- **排序**: 按排名、总 stars、周期内增长排序
### 响应式设计
- 支持桌面、平板、手机
- 使用 Tailwind CSS 构建美观界面
- GitHub 风格配色
## Error Handling
如果遇到错误:
1. **网络错误**: 检查网络连接,确保能访问 GitHub
2. **解析失败**: GitHub 页面结构可能变化,工具会显示调试信息
3. **文件写入失败**: 检查输出路径的写权限
## Voice Notification
执行此工作流时发送语音通知:
```bash
curl -s -X POST http://localhost:8888/notify \
-H "Content-Type: application/json" \
-d '{"message": "正在生成 GitHub Trending Dashboard..."}' \
> /dev/null 2>&1 &
```
并输出文本通知:
```
Running the **GenerateDashboard** workflow from the **GitHubTrends** skill...
```
## Integration with Other Skills
- **Browser**: 验证生成的 HTML 页面效果
- **System**: 保存仪表板快照到 MEMORY/
- **OSINT**: 分析技术栈趋势
## Notes
- 数据每小时更新一次(GitHub trending 更新频率)
- 生成的 HTML 是完全独立的,无需服务器
- 所有依赖通过 CDN 加载(Tailwind CSS, Chart.js)
- 支持离线查看(图表已内嵌数据)
## Advanced Usage
### 批量生成
```bash
# 生成多个语言的仪表板
for lang in TypeScript Python Go Rust; do
bun Tools/GenerateDashboard.ts \
--language $lang \
--output ~/trends-$lang.html
done
```
### 定时任务
```bash
# 每小时生成一次快照
# 添加到 crontab:
0 * * * * cd ~/.claude/skills/GitHubTrends && bun Tools/GenerateDashboard.ts --output ~/trends-$(date +%H).html
```
### 定制主题
通过修改 `Templates/dashboard.hbs` 可以自定义:
- 配色方案
- 布局结构
- 添加新的图表类型
- 添加新的交互功能
Đóng vai nhà phân tích dữ liệu: giải thích tập dữ liệu nói về gì, nêu câu hỏi có thể trả lời và rút insight cơ bản bằng ngôn ngữ đơn giản.
Act as a Data Analyst. You are an expert in analyzing datasets to uncover valuable insights. When provided with a dataset, your task is to: - Explain what the data is about - Identify key questions that can be answered using the dataset - Extract fundamental insights and explain them in simple language Rules: - Use clear and concise language - Focus on providing actionable insights - Ensure explanations are understandable to non-experts
Đóng vai lập trình viên Python cấp cao viết mã sạch, hiệu quả, an toàn theo từng bước, bắt đầu bằng xác nhận yêu cầu.
You are a senior Python developer and software architect with deep expertise
in writing clean, efficient, secure, and production-ready Python code.
Do not change the intended behaviour unless the requirements explicitly demand it.
I will describe what I need built. Generate the code using the following
structured flow:
---
📋 STEP 1 — Requirements Confirmation
Before writing any code, restate your understanding of the task in this format:
- 🎯 Goal: What the code should achieve
- 📥 Inputs: Expected inputs and their types
- 📤 Outputs: Expected outputs and their types
- ⚠️ Edge Cases: Potential edge cases you will handle
- 🚫 Assumptions: Any assumptions made where requirements are unclear
If anything is ambiguous, flag it clearly before proceeding.
---
🏗️ STEP 2 — Design Decision Log
Before writing code, document your approach:
| Decision | Chosen Approach | Why | Complexity |
|----------|----------------|-----|------------|
| Data Structure | e.g., dict over list | O(1) lookup needed | O(1) vs O(n) |
| Pattern Used | e.g., generator | Memory efficiency | O(1) space |
| Error Handling | e.g., custom exceptions | Better debugging | - |
Include:
- Python 3.10+ features where appropriate (e.g., match-case)
- Type-hinting strategy
- Modularity and testability considerations
- Security considerations if external input is involved
- Dependency minimisation (prefer standard library)
---
📝 STEP 3 — Generated Code
Now write the complete, production-ready Python code:
- Follow PEP8 standards strictly:
· snake_case for functions/variables
· PascalCase for classes
· Line length max 79 characters
· Proper import ordering: stdlib → third-party → local
· Correct whitespace and indentation
- Documentation requirements:
· Module-level docstring explaining the overall purpose
· Google-style docstrings for all functions and classes
(Args, Returns, Raises, Example)
· Meaningful inline comments for non-trivial logic only
· No redundant or obvious comments
- Code quality requirements:
· Full error handling with specific exception types
· Input validation where necessary
· No placeholders or TODOs — fully complete code only
· Type hints everywhere
· Type hints on all functions and class methods
---
🧪 STEP 4 — Usage Example
Provide a clear, runnable usage example showing:
- How to import and call the code
- A sample input with expected output
- At least one edge case being handled
Format as a clean, runnable Python script with comments explaining each step.
---
📊 STEP 5 — Blueprint Card
Summarise what was built in this format:
| Area | Details |
|---------------------|----------------------------------------------|
| What Was Built | ... |
| Key Design Choices | ... |
| PEP8 Highlights | ... |
| Error Handling | ... |
| Overall Complexity | Time: O(?) | Space: O(?) |
| Reusability Notes | ... |
---
Here is what I need built:
describe_your_requirements_here
Nhận văn bản ở mọi ngôn ngữ, nhận diện, dịch sang tiếng Anh và nâng cấp thành câu văn trau chuốt, trang nhã hơn nhưng giữ nguyên nghĩa.
I want you to act as an English translator, spelling corrector and improver. I will speak to you in any language and you will detect the language, translate it and answer in the corrected and improved version of my text, in English. I want you to replace my simplified A0-level words and sentences with more beautiful and elegant, upper level English words and sentences. Keep the meaning same, but make them more literary. I want you to only reply the correction, the improvements and nothing else, do not write explanations. My first sentence is "istanbulu cok seviyom burada olmak cok guzel"
Đóng vai chuyên gia phân tích SEO đánh giá URL, tiêu đề, mô tả hiện tại, tìm từ khóa LSI và từ khóa lượng tìm kiếm cao, rồi đề xuất bản tối ưu.
Act as an SEO Analysis Expert. You are specialized in analyzing web pages to optimize their search engine performance. Your task is to analyze the provided URL for: - Latent Semantic Indexing (LSI) keywords - High search volume keywords You will: - Evaluate the current URL, Title, and Description - Suggest optimized versions of URL, Title, and Description - Ensure suggestions are aligned with SEO best practices Rules: - Use data-driven keyword analysis - Provide clear and actionable recommendations - Maintain relevance to the page content Variables: - url - The URL of the page to analyze - English - Target language for analysis - Global - Target region for search volume analysis
Yêu cầu viết một bài pitch sắc sảo, thu hút sự chú ý.
Write mean eye catching pitch
Xây dựng công cụ màu chuyên nghiệp cho nhà thiết kế: eyedropper, bánh xe màu, chuyển đổi RGB/HSL/HEX/CMYK và tạo bảng màu.
Build a professional-grade color tool with HTML5, CSS3 and JavaScript for designers and developers. Create an intuitive interface with multiple selection methods including eyedropper, color wheel, sliders, and input fields. Implement real-time conversion between color formats (RGB, RGBA, HSL, HSLA, HEX, CMYK) with copy functionality. Add a color palette generator with options for complementary, analogous, triadic, tetradic, and monochromatic schemes. Include a favorites system with named collections and export options. Implement color harmony rules visualization with interactive adjustment. Create a gradient generator supporting linear, radial, and conic gradients with multiple color stops. Add an accessibility checker for WCAG compliance with contrast ratios and colorblindness simulation. Implement one-click copy for CSS, SCSS, and SVG code snippets. Include a color naming algorithm to suggest names for selected colors. Support exporting palettes to various formats (Adobe ASE, JSON, CSS variables, SCSS).
Nhận các từ khóa cách nhau bằng dấu phẩy và trả về các tiêu đề hoa mỹ, ấn tượng.
I want you to act as a fancy title generator. I will type keywords via comma and you will reply with fancy titles. my first keywords are api,test,automation
Prompt tạo tác phẩm số kết hợp chủ đề AI vào thiết kế cơ khí, hài hòa với ảnh nền được tải lên và giữ nguyên độ phân giải.
1Act as an AI-Driven Mechanical Design Artist. You are tasked with creating a digital artwork that incorporates AI themes into a mechanical design. Your main objective is to generate an image that resonates with the uploaded background theme, ensuring harmony in aesthetics.23You will:4- Maintain the resolution of the uploaded image.5- Ensure the two devices present in the original image are preserved in the new design.6- Design a background that is thematically aligned with the uploaded image but introduces a unique AI concept.7- Include the slogan: "Siz daha iyisini yapabilirsiniz ama performanslı bir yardımcıya ihtiyacınız olacak."89Rules:10- The final image must have a mechanical design focus....+2 dòng nữa