It looks like this is a web page, not a feed. I looked for a feed associated with this page, but couldn't find one. Please enter the address of your feed to validate.

Source: https://www.mesinpintar.com/blog

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.    <meta charset="UTF-8">
  5.    <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6.    <meta name="author" content="Daffa Aminuddin">
  7.    <title>Blog</title>
  8.    <meta name="publisher" content="Mesinpintar">
  9.    <meta property="og:site_name" content="Mesinpintar">
  10.    <meta name="robots" content="index, follow">
  11.    <meta name="description" content="Read our blog articles here, about machine learning and AI to today's IT developments.">
  12.    <meta name="keywords" content="articles, blog, Mesinpintar">
  13.  
  14.    <meta property="og:title" content="Blog" />
  15.    <meta property="og:image" content="https://img.mesinpintar.com/apa-itu-machine-learning.jpg" />
  16.    <meta property="twitter:image" content="https://img.mesinpintar.com/apa-itu-machine-learning.jpg" />
  17.    <meta property="og:url" content="https://www.mesinpintar.com/blog/blog" />
  18.    <meta property="og:site_name" content="Mesinpintar">
  19.    <meta property="og:description" content="Read our blog articles here, about machine learning and AI to today's IT developments." />
  20.    <meta property="twitter:title" content="Blog" />
  21.    <meta property="twitter:url" content="https://www.mesinpintar.com/blog/Blog" />
  22.    <meta name="twitter:card" content="summary_large_image">    
  23.    <meta property="og:type" content="article">
  24.    <!-- Bootstrap CSS -->
  25.    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
  26.    <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css" rel="stylesheet">
  27.    <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@48,400,0,0"/>
  28.    <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL,GRAD@48,400,1,0"/>
  29.    <link rel="stylesheet" href="/styles-2.css">
  30.    <script type="application/ld+json">
  31.    {
  32.    "@context": "https://schema.org",
  33.    "@graph": [
  34.        {
  35.        "@type": "WebPage",
  36.        "@id": "https://www.mesinpintar.com/about",
  37.        "url": "https://www.mesinpintar.com/about",
  38.        "name": "About",
  39.        "description": "Learn more about Mesinpintar and our mission to provide free productivity tools for everyone.",
  40.        "isPartOf": {
  41.            "@id": "https://www.mesinpintar.com/#website"
  42.        },
  43.        "breadcrumb": {
  44.            "@id": "https://www.mesinpintar.com/about#breadcrumb"
  45.        },
  46.        "inLanguage": "en"
  47.        },
  48.        {
  49.        "@type": "BreadcrumbList",
  50.        "@id": "https://www.mesinpintar.com/about#breadcrumb",
  51.        "itemListElement": [
  52.            {
  53.            "@type": "ListItem",
  54.            "position": 1,
  55.            "name": "Home",
  56.            "item": "https://www.mesinpintar.com"
  57.            },
  58.            {
  59.            "@type": "ListItem",
  60.            "position": 2,
  61.            "name": "Blogs",
  62.            "item": "https://www.mesinpintar.com/blog"
  63.            }
  64.        ]
  65.        }
  66.    ]
  67.    }
  68.    </script>
  69.    <!-- Google tag (gtag.js) -->
  70.    <script async src="https://www.googletagmanager.com/gtag/js?id=G-638D1K569H"></script>
  71.    <script>
  72.      window.dataLayer = window.dataLayer || [];
  73.      function gtag(){dataLayer.push(arguments);}
  74.      gtag('js', new Date());
  75.    
  76.      gtag('config', 'G-638D1K569H');
  77.    </script>
  78.    <style>
  79.        .card {
  80.            display: flex;
  81.            flex-direction: row;
  82.            border: 1px solid #ddd;
  83.            border-radius: 8px;
  84.            margin-bottom: 20px;
  85.            overflow: hidden;
  86.            box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
  87.            cursor: pointer;
  88.            height: 200px; /* Tetapkan tinggi tetap untuk kartu */
  89.        }
  90.        .card img {
  91.            width: 300px;
  92.            height: 200px; /* Tetapkan tinggi gambar agar seragam */
  93.            object-fit: cover; /* Potong gambar agar tetap proporsional */
  94.            border-right: 1px solid #ddd; /* Tambahkan batas untuk pemisah gambar dan konten */
  95.        }
  96.        .card-content {
  97.            padding: 40px;
  98.            flex: 1;
  99.        }
  100.        .card-title {
  101.            font-size: 1.3em;
  102.            margin-bottom: 10px;
  103.        }
  104.        .card-date {
  105.            font-size: 0.8em;
  106.            margin-bottom: 10px;
  107.        }
  108.        .card-description {
  109.            font-size: 1.0em;
  110.            color: #555;
  111.            overflow: hidden; /* Sembunyikan teks yang melampaui batas */
  112.            text-overflow: ellipsis; /* Tambahkan "..." jika teks terpotong */
  113.            display: -webkit-box; /* Gunakan layout fleksibel */
  114.            -webkit-line-clamp: 3; /* Batasi hingga 3 baris */
  115.            -webkit-box-orient: vertical;
  116.        }
  117.        .load-more {
  118.            display: block;
  119.            width: 100%;
  120.            padding: 10px;
  121.            text-align: center;
  122.            background-color: #007bff;
  123.            color: white;
  124.            border: none;
  125.            border-radius: 4px;
  126.            cursor: pointer;
  127.        }
  128.        /* Tambahkan media queries untuk perangkat mobile */
  129.        @media (max-width: 768px) {
  130.            .card {
  131.                flex-direction: column; /* Susun vertikal untuk layar kecil */
  132.                height: auto; /* Izinkan tinggi fleksibel */
  133.            }
  134.            .card img {
  135.                width: 100%; /* Gambar memenuhi lebar kartu */
  136.                height: auto;
  137.                border-right: none; /* Hilangkan garis batas untuk desain vertikal */
  138.            }
  139.            .card-content {
  140.                padding: 20px; /* Kurangi padding untuk layar kecil */
  141.            }
  142.            .card-title {
  143.                font-size: 1.2em; /* Sesuaikan ukuran font */
  144.            }
  145.            .card-description {
  146.                font-size: 1em; /* Sesuaikan ukuran font */
  147.            }
  148.        }
  149.    </style>
  150.    <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3735713809451778" crossorigin="anonymous"></script>
  151. </head>
  152. <body>
  153.    <nav class="navbar navbar-expand-lg navbar-light bg-light">
  154.        <div class="container">
  155.            <a class="navbar-brand" href="/">
  156.                <img
  157.                    src="https://img.mesinpintar.com/banner-new-mesinpintar.png"
  158.                    alt="Mesinpintar Logo"
  159.                    style="height: 40px; width: auto;"
  160.                >
  161.            </a>
  162.            <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav"
  163.                aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
  164.                <span class="navbar-toggler-icon"></span>
  165.            </button>
  166.            <div class="collapse navbar-collapse" id="navbarNav">
  167.                <ul class="navbar-nav ms-auto">
  168.                    <!-- Home -->
  169.                    <li class="nav-item"><a class="nav-link" href="/">Home</a></li>
  170.  
  171.                    <!-- Dropdown for Expenses Tracking -->
  172.                    <li class="nav-item"><a class="nav-link" href="/expenses-tracking">Expenses Tracking</a></li>
  173.  
  174.                    <!-- Dropdown for Tools -->
  175.                    <li class="nav-item dropdown">
  176.                        <a class="nav-link dropdown-toggle" href="#" id="toolsDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
  177.                            Tools
  178.                        </a>
  179.                        <ul class="dropdown-menu bg-light" aria-labelledby="toolsDropdown">
  180.                            <li><a class="dropdown-item" href="/cv-extractor">CV Bulk Extractor</a></li>
  181.                            <li><a class="dropdown-item" href="/excel-to-json-xml">Excel to JSON/XML</a></li>
  182.                            <li><a class="dropdown-item" href="/paraphrase">Paraphrase</a></li>
  183.                            <li><a class="dropdown-item" href="/background-remover">Image Background Remover</a></li>
  184.                            <li><a class="dropdown-item" href="/all-tools">All Tools</a></li>
  185.                        </ul>
  186.                    </li>
  187.  
  188.                    <!-- Pricing -->
  189.                    <li class="nav-item"><a class="nav-link" href="/pricing">Pricing</a></li>
  190.  
  191.                    <!-- Profile and Authentication -->
  192.                    <li class="nav-item"><a class="btn btn-outline-primary me-2 gy-3" href="/login">Login</a></li>
  193.                    <li class="nav-item"><a class="btn btn-primary me-2 gy-3" href="/register">Register</a></li>
  194.                </ul>
  195.            </div>
  196.        </div>
  197.    </nav>
  198.  
  199.    <div class="container py-4 pt-5">
  200.        <div class="row justify-content-center pt-5">
  201.            <div id="articles-container">
  202.                <!-- Articles will be populated here -->
  203.            </div>
  204.            <button id="load-more" class="load-more">Load More</button>
  205.        </div>
  206.    </div>
  207.    <div>
  208.        <button class="chatbot-toggler">
  209.        <span class="material-symbols-rounded">comment</span>
  210.        <span class="material-symbols-outlined">close</span>
  211.        </button>
  212.        <div class="chatbot">
  213.        <header>
  214.            <h2>Mesinpintar Chatbot</h2>
  215.            <span class="close-btn material-symbols-outlined">close</span>
  216.        </header>
  217.        <ul class="chatbox">
  218.            <li class="chat incoming">
  219.            <span class="material-symbols-outlined">robot_2</span>
  220.            <p>Hi there 👋, I am a chat assistant powered by meta-Llama-3.1 model. How can I help you today?</p>
  221.            </li>
  222.        </ul>
  223.        <div class="chat-input">
  224.            <textarea placeholder="Enter a message..." spellcheck="false" required></textarea>
  225.            <span id="send-btn" class="material-symbols-rounded">send</span>
  226.        </div>
  227.        </div>
  228.        <script src="/scripts-chat.js"></script>
  229.    </div>
  230.  
  231.    <!-- Footer -->
  232.    <footer class="text-center text-lg-start bg-body-tertiary-white text-muted pt-5">    
  233.        <section class="pt-1" style="background-color: #b6d7ff;">
  234.            <div class="container text-center text-md-start mt-5">
  235.            <!-- Grid row -->
  236.                <div class="row mt-3">
  237.                    <!-- Grid column -->
  238.                    <div class="col-md-3 col-lg-4 col-xl-3 mx-auto mb-4">
  239.                        <!-- Content -->
  240.                        <h6 class="text-uppercase fw-bold mb-4">
  241.                            <i class="fas fa-paper-plane me-3"></i>Mesinpintar
  242.                        </h6>
  243.                        <p>
  244.                            A platform offering a diverse range with AI powered tools, from expense tracking using just your receipt to bulk resume extraction and paraphrasing.
  245.                        </p>
  246.                    </div>
  247.                    <!-- Grid column -->
  248.  
  249.                    <!-- Grid column -->
  250.                    <div class="col-md-2 col-lg-2 col-xl-2 mx-auto mb-4">
  251.                        <!-- Links -->
  252.                        <h6 class="text-uppercase fw-bold mb-4">
  253.                            Tools
  254.                        </h6>
  255.                        <p>
  256.                            <a href="/expenses-tracking" class="text-reset toggle-link">Expenses Tracking</a>
  257.                        </p>
  258.                        <p>
  259.                            <a href="/cv-extractor" class="text-reset toggle-link">CV Bulk Extraction</a>
  260.                        </p>
  261.                        <p>
  262.                            <a href="/excel-to-json-xml" class="text-reset toggle-link">Excel to JSON/XML</a>
  263.                        </p>                        
  264.                        <p>
  265.                            <a href="/paraphrase" class="text-reset toggle-link">Paraphrase</a>
  266.                        </p>
  267.                    </div>
  268.                    <!-- Grid column -->
  269.  
  270.                    <!-- Grid column -->
  271.                    <div class="col-md-3 col-lg-2 col-xl-2 mx-auto mb-4">
  272.                    <!-- Links -->
  273.                        <h6 class="text-uppercase fw-bold mb-4">
  274.                            Useful links
  275.                        </h6>
  276.                        <p>
  277.                            <a href="/terms-of-service" class="text-reset toggle-link">Terms</a>
  278.                        </p>
  279.                        <p>
  280.                            <a href="/privacy-policy" class="text-reset toggle-link">Privacy Policy</a>
  281.                        </p>
  282.                        <p>
  283.                            <a href="/contact" class="text-reset toggle-link">Contact</a>
  284.                        </p>
  285.                        <p>
  286.                            <a href="/about" class="text-reset toggle-link">About</a>
  287.                        </p>
  288.                    </div>
  289.                    <!-- Grid column -->
  290.  
  291.                    <!-- Grid column -->
  292.                    <div class="col-md-4 col-lg-3 col-xl-3 mx-auto mb-md-0 mb-4">
  293.                        <!-- Links -->
  294.                        <h6 class="text-uppercase fw-bold mb-4">Contact</h6>
  295.                        <p><i class="fas fa-home me-3"></i>Surakarta, Central Java, ID</p>
  296.                        <p>
  297.                            <i class="fas fa-envelope me-3"></i>
  298.                            <a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="04676b6a70656770446961776d6a746d6a7065762a676b69">[email&#160;protected]</a>
  299.                        </p>
  300.                        <p><i class="fab fa-twitter me-3"></i> @mesinpintarX</p>
  301.                        <p><i class="fab fa-instagram me-3"></i> @mesinpintar.ig</p>
  302.                    </div>
  303.                    <!-- Grid column -->
  304.                </div>
  305.            
  306.            </div>
  307.        </section>
  308.        <!-- Copyright -->
  309.        <div class="text-center p-4" style="background-color: #95bcff;">
  310.            &copy; 2025 Mesinpintar. All Rights Reserved.
  311.            <a class="text-reset fw-bold toggle-link" href="https://www.mesinpintar.com/">Mesinpintar</a>
  312.        </div>  
  313.    </footer>
  314.  
  315. <!-- Bootstrap JS -->
  316.    <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script><script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/js/bootstrap.bundle.min.js"></script>
  317.    <script>
  318.        let currentPage = 1;
  319.        let totalArticles = 0;
  320.  
  321.        async function fetchArticles(page) {
  322.            try {
  323.                const response = await fetch(`/api/articles?page=${page}`, { method: 'POST' });
  324.                const { articles, total } = await response.json();
  325.                totalArticles = total;
  326.  
  327.                const articlesContainer = document.getElementById('articles-container');
  328.                articlesContainer.innerHTML += articles.map(article => `
  329.                    <div class="card" data-slug="${article.slug}">
  330.                        <img src="https://img.mesinpintar.com/${article.slug}.jpg" alt="${article.title}">
  331.                        <div class="card-content">
  332.                            <p class="card-date"> ${formatDateBlog(article.updated_at)}</p>
  333.                            <h2 class="card-title">${article.title}</h2>
  334.                            <p class="card-description">
  335.                                ${article.description.length > 218
  336.                                    ? article.description.slice(0, 218) + '...'
  337.                                    : article.description}
  338.                            </p>
  339.                        </div>
  340.                    </div>
  341.                `).join('');
  342.  
  343.                // Add click event to each card
  344.                const cards = document.querySelectorAll('.card');
  345.                cards.forEach(card => {
  346.                    card.addEventListener('click', function () {
  347.                        const slug = this.getAttribute('data-slug');
  348.                        window.location.href = `/blog/${slug}`;
  349.                    });
  350.                });
  351.  
  352.                // Hide the "Load More" button if all articles are loaded
  353.                const loadedArticles = document.querySelectorAll('.card').length;
  354.                if (loadedArticles >= totalArticles) {
  355.                    document.getElementById('load-more').style.display = 'none';
  356.                }
  357.            } catch (error) {
  358.                console.error('Error fetching articles:', error);
  359.            }
  360.        }
  361.  
  362.        document.getElementById('load-more').addEventListener('click', () => {
  363.            currentPage++;
  364.            fetchArticles(currentPage);
  365.        });
  366.  
  367.        // Initial fetch
  368.        fetchArticles(currentPage);
  369.  
  370.        // Format date function
  371.        function formatDateBlog(dateString) {
  372.            const options = { year: 'numeric', month: 'long', day: 'numeric' };
  373.            return new Date(dateString).toLocaleDateString('en-US', options);
  374.        }
  375.  
  376.    </script>
  377.    <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3735713809451778"
  378.         crossorigin="anonymous"></script>
  379.    <ins class="adsbygoogle"
  380.         style="display:block"
  381.         data-ad-format="fluid"
  382.         data-ad-layout-key="-e3-89+c1+di-yi"
  383.         data-ad-client="ca-pub-3735713809451778"
  384.         data-ad-slot="4459074049"></ins>
  385.    <script>
  386.         (adsbygoogle = window.adsbygoogle || []).push({});
  387.    </script>
  388. </body>
  389. </html>
  390.  
Copyright © 2002-9 Sam Ruby, Mark Pilgrim, Joseph Walton, and Phil Ringnalda