<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Catatan Mustofin]]></title><description><![CDATA[Catatan Mustofin]]></description><link>https://blog.mustofin.com</link><generator>RSS for Node</generator><lastBuildDate>Fri, 10 Apr 2026 12:09:19 GMT</lastBuildDate><atom:link href="https://blog.mustofin.com/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[🚀 Membangun Website Pribadi Dinamis dengan GitHub Pages dan Google Sheets API. Studi Kasus: mustofin.com]]></title><description><![CDATA[💡
Bagaimana aku membuat website pribadi yang gratis, cepat, dan tetap bisa diperbarui otomatis — tanpa backend dan tanpa hosting berbayar?


Sebagai seorang profesional di bidang teknologi dan manajemen, serta memiliki ketertarikan di bidang pendidi...]]></description><link>https://blog.mustofin.com/membangun-website-pribadi-dinamis-dengan-github-pages-dan-google-sheets-api-studi-kasus-mustofincom</link><guid isPermaLink="true">https://blog.mustofin.com/membangun-website-pribadi-dinamis-dengan-github-pages-dan-google-sheets-api-studi-kasus-mustofincom</guid><category><![CDATA[portfolio]]></category><category><![CDATA[website]]></category><category><![CDATA[google apps script]]></category><dc:creator><![CDATA[Misbakhul Mustofin]]></dc:creator><pubDate>Thu, 16 Oct 2025 02:10:56 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1760580840696/008d87e0-d603-44e1-9ad9-aca9ff80620f.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div data-node-type="callout">
<div data-node-type="callout-emoji">💡</div>
<div data-node-type="callout-text">Bagaimana aku membuat website pribadi yang gratis, cepat, dan tetap bisa diperbarui otomatis — tanpa backend dan tanpa hosting berbayar?</div>
</div>

<p>Sebagai seorang profesional di bidang teknologi dan manajemen, serta memiliki ketertarikan di bidang pendidikan, aku ingin punya website pribadi yang dapat menampilkan data profil dan portfolio yang selalu mutakhir, tanpa perlu login ke CMS atau menyentuh kode setiap kali memperbarui informasi.</p>
<p>Akhirnya, tercetus proyek sederhana namun efisien:</p>
<blockquote>
<p><a target="_blank" href="http://mustofin.com">mustofin.com</a> — website statis dengan data dinamis dari Google Sheets API</p>
</blockquote>
<h2 id="heading-arsitektur-solusi">🧩 Arsitektur Solusi</h2>
<pre><code class="lang-plaintext">Google Sheets (data profil &amp; portfolio)
         ↓ API via Google Apps Script
Website Statis (HTML + Tailwind + JS)
         ↓
Hosted on GitHub Pages
</code></pre>
<p>🟢 <strong>GitHub Pages</strong> digunakan sebagai hosting statis — gratis, cepat, dan mudah di-deploy langsung dari repository.<br />🟢 <strong>Google Sheets</strong> berperan sebagai “database ringan” yang bisa diperbarui kapan saja.<br />🟢 <strong>Google Apps Script</strong> menyediakan endpoint API untuk mengubah data Sheet menjadi JSON.<br />🟢 <strong>Vanilla JavaScript + TailwindCSS</strong> untuk menampilkan data di halaman web.</p>
<h2 id="heading-langkah-implementasi">⚙️ Langkah Implementasi</h2>
<h3 id="heading-1-merancang-tampilan-web-profil-amp-portofolio">1️⃣ Merancang Tampilan Web Profil &amp; Portofolio</h3>
<p>Pertama yang dilakukan adalah membuat struktur dan tampilan website utama.</p>
<pre><code class="lang-plaintext">/index.html          → Beranda dan hero section
/about.html          → Profil &amp; pengalaman (CV Online) → diambil dari Google Sheets)
/portfolio.html      → Daftar proyek dan hasil karya → diambil dari Google Sheets
/blog                → redirect ke hashnode
/community.html      → Keterlibatan di komunitas
/class.html          → Kelas &amp; Produk Digital → embed mayar.id
/contact.html        → Kontak email dan sosial media
</code></pre>
<p>Tampilan menggunakan TailwindCSS agar tetap ringan tanpa framework besar.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1760579205757/627cf401-ccc1-42be-840d-0a2dba527f56.png" alt class="image--center mx-auto" /></p>
<h3 id="heading-2-merancang-google-sheet-sebagai-database">2️⃣ Merancang Google Sheet sebagai Database</h3>
<p>Membuat satu Google Sheet dengan beberapa sheet (tab) seperti: Portfolio, Profile, Experience, Education, Licenses, Skills, dan Master.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1760579412490/903fab53-add2-4091-a2c1-2f8d881a6f3b.png" alt class="image--center mx-auto" /></p>
<h3 id="heading-3-membuat-api-dari-google-apps-script">3️⃣ Membuat API dari Google Apps Script</h3>
<p>Selanjutnya, menulis Google Apps Script untuk membaca data dari Sheet dan mengembalikannya dalam format JSON.</p>
<pre><code class="lang-javascript"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">doGet</span>(<span class="hljs-params">e</span>) </span>{
  <span class="hljs-keyword">try</span> {
    <span class="hljs-keyword">const</span> page = e.parameter.page;
    <span class="hljs-keyword">let</span> result;
    <span class="hljs-keyword">if</span> (page === <span class="hljs-string">'about'</span>) {
      result = getProfileData();
    } <span class="hljs-keyword">else</span> {
      result = getPortfolioData(e);
    }

    <span class="hljs-keyword">return</span> createJsonResponse(result);

  } <span class="hljs-keyword">catch</span> (error) {
    <span class="hljs-keyword">return</span> createJsonResponse({ <span class="hljs-attr">error</span>: <span class="hljs-string">"An unexpected error occurred."</span>, <span class="hljs-attr">details</span>: error.message }, <span class="hljs-number">500</span>);
  }
}
</code></pre>
<p>Kemudian:</p>
<ol>
<li><p>Klik <strong>Deploy → New Deployment → Web App</strong></p>
</li>
<li><p>Pilih <strong>Execute as:</strong> <em>Me (your account)</em></p>
</li>
<li><p>Pilih <strong>Who has access:</strong> <em>Anyone</em></p>
</li>
<li><p>Klik <strong>Deploy</strong> dan salin URL API seperti:</p>
</li>
</ol>
<pre><code class="lang-bash">https://script.google.com/macros/s/.../<span class="hljs-built_in">exec</span>
</code></pre>
<h3 id="heading-4-menampilkan-data-ke-website">4️⃣ Menampilkan Data ke Website</h3>
<p>Di halaman <code>about.html</code> dan <code>portfolio.html</code> ditambah kode JavaScript untuk memanggil API dari Google Apps Script tadi, lalu menampilkan hasilnya ke halaman web.</p>
<pre><code class="lang-javascript"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">fetchFromAPI</span>(<span class="hljs-params"></span>) </span>{
                grid.innerHTML = <span class="hljs-string">`&lt;div class="loader-container col-span-3"&gt;&lt;div class="loader"&gt;&lt;/div&gt;&lt;p class="text-center text-gray-500"&gt;Memuat portofolio...&lt;/p&gt;&lt;/div&gt;`</span>;

                fetch(apiUrl)
                    .then(<span class="hljs-function"><span class="hljs-params">response</span> =&gt;</span> {
                        <span class="hljs-keyword">if</span> (!response.ok) <span class="hljs-keyword">throw</span> <span class="hljs-keyword">new</span> <span class="hljs-built_in">Error</span>(<span class="hljs-string">`HTTP error! status: <span class="hljs-subst">${response.status}</span>`</span>);
                        <span class="hljs-keyword">return</span> response.json();
                    })
                    .then(<span class="hljs-function"><span class="hljs-params">response</span> =&gt;</span> {
                        <span class="hljs-keyword">if</span> (response.status === <span class="hljs-string">'success'</span> &amp;&amp; response.data.length &gt; <span class="hljs-number">0</span>) {
                            <span class="hljs-comment">// Simpan data dan timestamp ke cache</span>
                            <span class="hljs-keyword">const</span> itemToCache = {
                                <span class="hljs-attr">data</span>: response.data,
                                <span class="hljs-attr">timestamp</span>: <span class="hljs-keyword">new</span> <span class="hljs-built_in">Date</span>().getTime()
                            };
                            <span class="hljs-built_in">localStorage</span>.setItem(CACHE_KEY, <span class="hljs-built_in">JSON</span>.stringify(itemToCache));

                            <span class="hljs-comment">// Inisialisasi halaman dengan data baru</span>
                            initializePage(response.data);
                        } <span class="hljs-keyword">else</span> {
                            grid.innerHTML = <span class="hljs-string">'&lt;p class="col-span-3 text-center text-gray-500"&gt;Tidak ada data portofolio untuk ditampilkan.&lt;/p&gt;'</span>;
                            filterContainer.style.display = <span class="hljs-string">'none'</span>;
                        }
                    })
                    .catch(<span class="hljs-function"><span class="hljs-params">error</span> =&gt;</span> {
                        <span class="hljs-built_in">console</span>.error(<span class="hljs-string">'Error fetching portfolio data:'</span>, error);
                        grid.innerHTML = <span class="hljs-string">'&lt;p class="col-span-3 text-center text-red-500"&gt;Gagal memuat data. Silakan coba muat ulang halaman.&lt;/p&gt;'</span>;
                        filterContainer.style.display = <span class="hljs-string">'none'</span>;
                    });
            }
</code></pre>
<h3 id="heading-5-membuat-fitur-tambahan-download-cv-otomatis">5️⃣ Membuat Fitur Tambahan: Download CV Otomatis</h3>
<p>Fitur terakhir yang dibuat adalah fitur <strong>Generate CV</strong> berdasarkan data profil yang sudah update di google sheet. Fitur dipasang langsung di file Google Sheet karena ada data sensitif yang akan tampil di CV hasil generate.</p>
<p>Hal pertama yang harus dilakukan untuk fitur ini adalah membuat <strong>template CV menggunakan google doc.</strong></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1760580140757/18e30009-b3a3-4be1-8395-82740693674e.png" alt class="image--center mx-auto" /></p>
<p>Lalu membuat google apps script untuk generate CV</p>
<pre><code class="lang-javascript"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">generateCvPdf</span>(<span class="hljs-params"></span>) </span>{
  <span class="hljs-keyword">const</span> data = getProfileDataFull();
  <span class="hljs-keyword">const</span> { profile, experience, education, licenses, skills } = data;

  experience.reverse();
  education.reverse();

  <span class="hljs-keyword">const</span> templateFile = DriveApp.getFileById(CV_TEMPLATE_ID);
  <span class="hljs-keyword">const</span> newFileName = <span class="hljs-string">`CV - <span class="hljs-subst">${profile.full_name || <span class="hljs-string">'Resume'</span>}</span>.pdf`</span>;
  <span class="hljs-keyword">const</span> outputFolder = DriveApp.getFolderById(FOLDER_OUTPUT_ID);

  <span class="hljs-comment">// Hapus file lama jika ada dengan nama yang sama agar tidak menumpuk</span>
  <span class="hljs-keyword">const</span> oldFiles = outputFolder.getFilesByName(<span class="hljs-string">`<span class="hljs-subst">${newFileName}</span>.pdf`</span>);
  <span class="hljs-keyword">while</span> (oldFiles.hasNext()) {
    oldFiles.next().setTrashed(<span class="hljs-literal">true</span>);
  }

  <span class="hljs-keyword">const</span> tempFile = templateFile.makeCopy(newFileName);
  <span class="hljs-keyword">const</span> docId = tempFile.getId();

  <span class="hljs-keyword">try</span> {
    <span class="hljs-keyword">const</span> doc = DocumentApp.openById(docId);
    <span class="hljs-keyword">const</span> body = doc.getBody();

    <span class="hljs-comment">// 1. Ganti placeholder simpel (Profile)</span>
    <span class="hljs-keyword">for</span> (<span class="hljs-keyword">const</span> key <span class="hljs-keyword">in</span> profile) {
      body.replaceText(<span class="hljs-string">`{{<span class="hljs-subst">${key}</span>}}`</span>, profile[key] || <span class="hljs-string">''</span>);
    }

    <span class="hljs-comment">// 2. Ganti placeholder daftar (Skills)</span>
    <span class="hljs-keyword">const</span> skillsText = skills.map(<span class="hljs-function"><span class="hljs-params">s</span> =&gt;</span> s.skill_name).join(<span class="hljs-string">' • '</span>);
    body.replaceText(<span class="hljs-string">`{{skills}}`</span>, skillsText);

    <span class="hljs-comment">// 3. Proses bagian berulang dengan data yang urutannya sudah benar</span>
    processParagraphSection(body, experience, <span class="hljs-string">'exp'</span>, <span class="hljs-string">'start_date'</span>, <span class="hljs-string">'description'</span>); 
    processParagraphSection(body, education, <span class="hljs-string">'edu'</span>, <span class="hljs-string">'institution_name'</span>, <span class="hljs-string">'end_year'</span>);
    processTableSection(body, licenses, <span class="hljs-string">'lic'</span>, <span class="hljs-string">'certification_name'</span>);

    <span class="hljs-comment">// Hapus placeholder yang tidak terisi agar bersih</span>
    body.replaceText(<span class="hljs-string">"\\{\\{.*?\\}\\}"</span>, <span class="hljs-string">""</span>);

    doc.saveAndClose();

     <span class="hljs-comment">// Buat file PDF di folder tujuan</span>
    <span class="hljs-keyword">const</span> pdfFile = outputFolder.createFile(tempFile.getAs(MimeType.PDF)).setName(<span class="hljs-string">`<span class="hljs-subst">${newFileName}</span>.pdf`</span>);
    <span class="hljs-keyword">return</span> pdfFile;
  } <span class="hljs-keyword">catch</span> (error) {
    Logger.log(<span class="hljs-string">`Gagal membuat PDF: <span class="hljs-subst">${error.toString()}</span>\n<span class="hljs-subst">${error.stack}</span>`</span>);
    <span class="hljs-keyword">return</span> ContentService.createTextOutput(<span class="hljs-string">`Gagal membuat PDF: <span class="hljs-subst">${error.toString()}</span>`</span>);
  } <span class="hljs-keyword">finally</span> {
    <span class="hljs-comment">// Pastikan file sementara selalu dihapus</span>
    DriveApp.getFileById(docId).setTrashed(<span class="hljs-literal">true</span>);
  }
}
</code></pre>
<p>Fitur dipanggil melalui custom menu di google sheet, agar hanya kita yang memiliki akses.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1760580346853/883ec336-89be-4bdb-874a-cb4694bac95f.png" alt class="image--center mx-auto" /></p>
<h3 id="heading-6-deployment">6️⃣ Deployment</h3>
<p>Untuk deploy website, menggunakan github page agar gratis, lalu beli domain <code>mustofin.com</code> untuk custom domain dari github page.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1760580551841/0eddfb5f-644b-4416-9e45-f5cf6bb13fc5.png" alt class="image--center mx-auto" /></p>
<h2 id="heading-hasil-akhir">💡 Hasil Akhir</h2>
<p>Dengan kombinasi GitHub Pages + Google Sheets API, akhirnya berhasil membangun:</p>
<ul>
<li><p>🌐 <strong>Website profesional</strong> dengan domain custom (<a target="_blank" href="http://mustofin.com"><code>mustofin.com</code></a>)</p>
</li>
<li><p>⚙️ <strong>Konten dinamis</strong> (profil &amp; portofolio) tanpa CMS</p>
</li>
<li><p>💰 <strong>Tanpa biaya hosting</strong></p>
</li>
<li><p>💡 <strong>Low maintenance</strong>, mudah diperbarui langsung dari Google Sheets</p>
</li>
</ul>
<blockquote>
<p>Bangun solusi kecil yang memberikan nilai nyata dan dapat berkembang secara iteratif.</p>
</blockquote>
]]></content:encoded></item><item><title><![CDATA[Ngobrol Karier di Warung Kopi]]></title><description><![CDATA[Tiba-tiba dapet whatsapp dari temen, katanya ada temennya yang pengen konsultasi tentang karir. Pain point-nya adalah, ingin segera dapet pekerjaan. Yah, aku bukan career coach, tapi kalau untuk ngobrol santai, sharing sambil ngopi, skuy lah. Dan kar...]]></description><link>https://blog.mustofin.com/ngobrol-karier-di-warung-kopi</link><guid isPermaLink="true">https://blog.mustofin.com/ngobrol-karier-di-warung-kopi</guid><category><![CDATA[1on1]]></category><category><![CDATA[#Coaching]]></category><category><![CDATA[Career]]></category><dc:creator><![CDATA[Misbakhul Mustofin]]></dc:creator><pubDate>Wed, 11 Jun 2025 02:49:49 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1749606347208/ec176f5e-e1d4-4648-90e8-75fc64cf5528.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Tiba-tiba dapet whatsapp dari temen, katanya ada temennya yang pengen konsultasi tentang karir. <em>Pain point</em>-nya adalah, ingin segera dapet pekerjaan. Yah, aku bukan <em>career coach</em>, tapi kalau untuk ngobrol santai, sharing sambil ngopi, skuy lah. Dan karena menurutku ada beberapa obrolan yang menarik, maka aku coba catat 6 poin yang menarik.</p>
<ol>
<li><h2 id="heading-apa-yang-kamu-jual">Apa yang Kamu Jual?</h2>
<p> Pertanyaan pertama yang langsung aku lontarkan. Ya, benar, mencari pekerjaan itu sama seperti berjualan. Dan yang menarik adalah, apa yang dijual? Jawaban ini akan berpengaruh dari cara kita berusaha maupun hal yang lain. Apakah jawabannya adalah skill tertentu yang kita jual? Sayangnya kurang tepat. Karena yang kita harusnya bukan sekedar skill, melainkan “solusi”. Sebagai contoh, alih-alih menjual kemampuan desain, maka akan lebih baik jika yang kita jual adalah solusi bagi perusahaan yang mempunyai masalah dalam hal desain marketing mereka agar omsetnya meningkat.</p>
<p> Contoh lain, jika dalam menyusun profil linkedin, alih-alih menjelaskan <em>jobdesc</em> kita di pengalaman kerja, maka akan lebih menjual jika yang kita cantumkan justru adalah masalah yang berhasil kita selesaikan saat menjabat peran tersebut. Karena perusahaan tidak <em>hire</em> karyawan karena skillnya, melainkan karena perusahaan tersebut sedang memiliki sebuah masalah, dan mencari calon karyawan yang bisa membantu menyelesaikan masalah tersebut. Yah meski ujung-ujungnya juga tetap butuh skill untuk menyelesaikan hal tersebut, hanya saja berbeda cara pandang.</p>
</li>
<li><h2 id="heading-kebanyakan-orang-sekitarmu-meminta-bantuanmu-tentang-apa-yang-bahkan-mereka-berani-bayar">Kebanyakan orang sekitarmu meminta bantuanmu tentang Apa, yang bahkan mereka berani bayar?</h2>
<p> Sebenernya skill, pengalaman dan pendidikannya sangat mumpuni. Jadi sudah ada diskusi kalau butuh meningkatkan personal brand agar lebih bisa dapat pekerjaan. Namun, alih-alih membahas brand persona apa yang ingin dibangun, aku coba arahkan pembahasannya ke sebenernya seperti apa persepsi orang terhadap kita saat ini. Karena tujuan utama branding adalah tentang persepsi, maka daripada kita terlalu <em>effort</em> untuk membangun brand baru, mengapa kita tidak memperkuat brand yang sudah ada saat ini. Meng-<em>utilize</em> persepsi orang yang sudah terbangun akan lebih cepat menghasilkan daripada harus membangun persepsi baru.</p>
</li>
<li><h2 id="heading-perbanyak-daun-terlebih-dahulu-tanaman-belum-bisa-berbuah-kalau-daunnya-baru-satu">“Perbanyak Daun terlebih dahulu. Tanaman belum bisa berbuah kalau daunnya baru satu.”</h2>
<p> Mungkin ini sedikit filosofis. Daun berfungsi untuk fotosintesis dari cahaya matahari yang dia dapatkan. Dan untuk menghasilkan 1 biji buah saja, dia harus memperbanyak daunnya terlebih dahulu agar bisa menerima sebanyak mungkin cahaya. Saat daunnya sudah cukup banyak, maka buah pertama akan muncul, lalu disusul buah-buah selanjutnya. Jika cahaya matahari kita ibaratkan kesempatan dalam mendapatkan rezeki, termasuk pekerjaan, maka daun juga bisa kita ibaratkan jumlah dan jenis upaya yang telah kita bangun. Bangun upaya, bangun channel, bangun relasi, bangun wadah, untuk siap menerima kesempatan sebaik mungkin. Sebagai salah satu contoh, tidak sedikit contoh kasus berhasilnya seseorang mendapatkan pekerjaan atau proyek melalui relasinya yang banyak. Karena sudah terjalin <em>trust</em>, maka dia bisa mendapatkan pekerjaan tanpa harus melalui proses seleksi yang rumit.</p>
</li>
<li><h2 id="heading-solusi-mungkin-sangat-dekat-dan-sangat-sederhana-hanya-kita-yang-belum-sadar-aja">Solusi mungkin sangat dekat dan sangat sederhana. Hanya kita yang belum sadar Aja.</h2>
<p> Saat sudah mulai memahami hal besar apa yang ingin dilakukan dan mulai membahas langkah teknis, sering kali yang terpikirkan adalah langkah hebat, besar, ideal dan keren. Sebagai contoh, ketika ingin membangun studi kasus, sering kali mencoba mencari-cari kasus yang dimiliki oleh orang lain atau perusahaan lain untuk bisa diangkat. Akhirnya mencoba mencari dan masih belum menemukan poin yang diinginkan. Namun, alih-alih mencari studi kasus orang lain yang belum tentu dapat, kita bisa mengangkat studi kasus kita sendiri terlebih dahulu. Kita bisa awali dari diri sendiri, dari hal yang terkecil, remeh dan mungkin selama ini kita pandang tidak penting. Karena seringkali, solusi itu dekat dan sederhana, kitanya aja yang belum menyadarinya, atau tidak mau mengakuinya.</p>
</li>
<li><h2 id="heading-tugas-kita-cuman-berusaha-udah-ada-yang-maha-ngatur">Tugas kita cuman berusaha. Udah ada yang Maha Ngatur.</h2>
<p> Ini soal mental dan menata ekspektasi. Jangan sampai kita merasa, kalau kita udah berusaha keras, maksimal, banyak hal yang sudah kita lakukan dan ideal, maka serta merta kita harus berhasil. Karena jika gagal, bisa-bisa kita akan menyalahkan usaha dan proses yang sudah kita lakukan dengan baik. Jangan lupa, ada Yang Ngatur. Selama kita udah berusaha yang terbaik, kalau belum berhasil, ya karena belum waktunya aja. Dan biasanya saat waktunya tiba, akan ada hal yang jauh lebih baik yang kita dapatkan, yang mungkin tidak kita duga sama sekali. Pun juga sebaliknya, kalau usaha kita belum maksimal, maka jangan bilang belum berhasil karena belum waktunya, tapi fokus perbaiki diri dulu. Karena tugas kita adalah berusaha yang terbaik.</p>
</li>
<li><h2 id="heading-lalu-apa-langkah-yang-harus-dilakukan">Lalu, apa Langkah yang harus dilakukan?</h2>
<p> Di penghujung obrolan, aku ditanya, “<em>lalu langkah awal apa yang harus dilakukan?</em>” Dan pertanyaan itu tidak aku jawab, dan malah aku tanya balik 😂. Lalu aku jelaskan, kalau semua yang aku <em>share</em> dan omongkan, itu adalah subjektifitasku saja, dan bisa banget kalau itu bias, maka jadikanlah sebatas referensi aja. Untuk langkah selanjutnya? Hanya kita sendiri yang paling tau apa yang paling bisa kita lakukan saat ini. Jadi tentuin sendiri, cobain, evaluasi.</p>
</li>
</ol>
<p>Obrolan semalam mungkin hanya berlangsung singkat, tapi semoga bisa membantu untuk mendapatkan yang terbaik. Semoga apa pun yang ada dalam doa kita, dapat terkabulkan. Aamiin…</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1749610097820/cc8fec67-9c2b-43a4-997a-ad7ab2c7953c.jpeg" alt class="image--right mx-auto mr-0" /></p>
]]></content:encoded></item><item><title><![CDATA[Menembus 1 Juta Penonton: Peran E-Marketing dalam Fenomena Film ‘JUMBO’ 2025]]></title><description><![CDATA[Mungkin sudah tidak asing di telinga warga Indonesia dengan nama film ‘Jumbo’. Ya, film yang sempat heboh di industri film tanah air di tahun 2025 ini. Film yang disutradarai Ryan Adriandhy merupakan produk evergreen IP yang dirancang oleh Visinema t...]]></description><link>https://blog.mustofin.com/menembus-1-juta-penonton-peran-e-marketing-dalam-fenomena-film-jumbo-2025</link><guid isPermaLink="true">https://blog.mustofin.com/menembus-1-juta-penonton-peran-e-marketing-dalam-fenomena-film-jumbo-2025</guid><category><![CDATA[manajemen pemasaran]]></category><category><![CDATA[tugas kuliah]]></category><category><![CDATA[E-marketing]]></category><category><![CDATA[filmjumbo]]></category><dc:creator><![CDATA[Misbakhul Mustofin]]></dc:creator><pubDate>Fri, 06 Jun 2025 11:16:37 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1749208722418/8ce556de-c7d5-42c5-89a0-36af5dfb3a4e.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Mungkin sudah tidak asing di telinga warga Indonesia dengan nama film ‘Jumbo’. Ya, film yang sempat heboh di industri film tanah air di tahun 2025 ini. Film yang disutradarai Ryan Adriandhy merupakan produk <em>evergreen IP</em> yang dirancang oleh Visinema telah sukses menembus 1 Juta penonton dalam waktu singkat dan mencetak rekor sebagai film animasi lokal terlaris sepanjang masa (Disway, 2025). Selain karena faktor kualitas film, tentu strategi pemaksimalan pemasaran menggunakan internet (E-Marketing) juga berperan penting dalam kesuksesannya. Namun sebelum kita membahas bagaimana strategi E-Marketing film Jumbo, mari kita bahas dulu apa itu E-Marketing.</p>
<h2 id="heading-apa-sih-e-marketing-itu">🤔 Apa sih E-Marketing itu?</h2>
<p>E-Marketing, atau yang punya nama lengkap Electronic Marketing, merupakan pendekatan pemasaran yang memanfaatkan teknologi digital untuk menjangkau dan berinteraksi dengan konsumen secara lebih efektif dan efisien. Kotler dan Keller (2012) dalam bukunya “Marketing Management” menjelaskan bahwa <em>marketer</em> dapat menggunakan Internet sebagai saluran informasi dan penjualan yang ampuh. Internet memperluas jangkauan geografis pemasar untuk memberi tahu pelanggan dan mempromosikan produk di seluruh dunia.</p>
<p>Ada beberapa contoh E-Marketing, seperti:</p>
<ol>
<li><p>SEO (Search Engine Optimization)<br /> <em>Proses mengoptimalkan situs web agar mendapatkan peringkat tinggi di mesin pencari seperti Google, Bing, atau Yahoo</em></p>
</li>
<li><p>SMM (Social Media Marketing)<br /> <em>pemanfaatan media sosial seperti Facebook, Twitter, Instagram, atau YouTube untuk membangun merek, meningkatkan kesadaran, dan berinteraksi dengan audiens.</em></p>
</li>
<li><p>Email Marketing<br /> <em>pengiriman pesan email yang dipersonalisasi dan relevan kepada pelanggan potensial atau saat ini untuk meningkatkan loyalitas, konversi, dan penjualan.</em></p>
</li>
<li><p>Content Marketing<br /> <em>pembuatan dan distribusi konten yang bermanfaat, informatif, atau menghibur kepada audiens sasaran untuk menarik perhatian, membangun kepercayaan, dan mendorong tindakan.</em></p>
</li>
<li><p>Influencer Marketing<br /> <em>kolaborasi dengan orang-orang yang memiliki pengaruh besar di media sosial atau industri tertentu untuk mempromosikan produk atau layanan kepada pengikut mereka.</em></p>
</li>
<li><p>Video Marketing<br /> <em>penggunaan video untuk menyampaikan pesan merek, produk, atau layanan kepada audiens sasaran.</em></p>
</li>
</ol>
<p>(Sumber: BMG Indonesia, 2024)</p>
<p>Lalu, bagaimana tim film ‘Jumbo’ memaksimalkan strategi E-Marketing?</p>
<h2 id="heading-studi-kasus-e-marketing-film-animasi-indonesia-jumbo-2025">🎬 Studi Kasus: E-Marketing Film Animasi Indonesia ‘Jumbo’ (2025)</h2>
<p>Keberhasilan film ‘Jumbo’ tidak lepas dari strategi E-Marketing yang inovatif dan kolaboratif.</p>
<h3 id="heading-pemaksimalan-content-marketing">Pemaksimalan Content Marketing</h3>
<p>Visinema merilis trailer dan poster resmi ‘JUMBO’ melalui platform media sosial resminya, <a target="_blank" href="https://www.instagram.com/visinemastudios/">@visinemastudios</a>. Hal tersebut menciptakan antusiasme sebelum penayangan . Langkah ini memperkenalkan karakter dan cerita kepada audiens secara luas (<a target="_blank" href="http://Suara.com">Suara.com</a>, 2025).</p>
<p>Bukan hanya dengan merilis trailer, akun media sosial resmi juga digunakan untuk membagikan konten interaktif, termasuk cuplikan film, aktivitas di balik layar, dan kampanye yang mendorong partisipasi penggemar.</p>
<h3 id="heading-kolaborasi-dalam-influencer-marketing">Kolaborasi dalam Influencer Marketing</h3>
<p>Dalam melakukan <em>campaign</em>, Visinema berkolaborasi dengan Gushcloud, agency di bidang Influencer Marketing. Ada enam influencer yang digandeng Gushcloud untuk menciptakan sensasi di awal pada Gala Premiere – Family Day Out, yang diselenggarakan pada 16 Maret 2025. Enam influencer tersebut meliputi: Amel Carla, Tiara Dalimunthe, Ricko Ramli, Aldi Bemby, Fadyah Syifa, dan Yogi Saputra, semuanya dipandu oleh Gushcloud dan divisi talent-nya, Fast Fluence (Marketing Interactive, 2025).</p>
<p>Untuk memperluas kampanye, Gushcloud menyelenggarakan pemutaran khusus bersama Abe Cekut, seorang influencer anak yang digemari. Bersama dengan teman-teman sekelas, guru, dan keluarga di XXI Malang, momen itu diabadikan dalam sebuah video (Marketing Interactive, 2025).</p>
<p>Bukan hanya dengan mengajak influencer ikut menonton film agar menarik perhatian, namun juga strategi influencer marketing ini dilakukan dengan cara lain yang menarik, yaitu dengan mengajak influencer terkenal untuk menjadi pengisi suara. Beberapa influencer yang terlibat untuk mengisi suara seperti Ariel NOAH, Bunga Citra Lestari, dan Cinta Laura Kiehl. Hal tersebut tidak hanya menambah daya tarik film, tetapi juga memperluas jangkauan promosi melalui basis penggemar mereka di media sosial (<a target="_blank" href="http://Prudensi.com">Prudensi.com</a>, 2025).</p>
<h3 id="heading-alhasil">Alhasil…</h3>
<p>Film JUMBO mencatatkan lebih dari 1 juta penonton, menjadikannya film animasi lokal terlaris sepanjang masa di Indonesia.</p>
<h2 id="heading-kesimpulan">✍️ Kesimpulan</h2>
<p>Keberhasilan film JUMBO sebagai film animasi lokal terlaris sepanjang masa di Indonesia, dengan lebih dari 1 juta penonton, tidak hanya ditentukan oleh kualitas film itu sendiri, tetapi juga oleh penerapan strategi E-Marketing yang cerdas, terintegrasi dan kolaboratif.</p>
<p>Dengan memanfaatkan berbagai pendekatan digital seperti content marketing (melalui trailer dan konten interaktif di media sosial), influencer marketing (melalui kolaborasi dengan influencer serta penempatan mereka sebagai pengisi suara), dan kerja sama dengan agensi seperti Gushcloud, JUMBO berhasil menciptakan antusiasme tinggi dan menjangkau audiens yang luas, terutama generasi muda dan keluarga.</p>
<p>Penerapan strategi E-Marketing yang efektif ini membuktikan bahwa digital marketing bukan hanya alat promosi pelengkap, tetapi menjadi faktor kunci dalam kesuksesan komersial industri hiburan, khususnya film. JUMBO menjadi contoh nyata bagaimana pemanfaatan internet dan media sosial dapat memperkuat merek, memperluas jangkauan pasar, dan meningkatkan daya tarik konsumen secara signifikan.</p>
<h3 id="heading-referensi">📚 Referensi:</h3>
<ul>
<li><p><a target="_blank" href="https://harian.disway.id/read/866428/jumbo-jadi-film-animasi-terlaris-sepanjang-masa-di-indonesia-sukses-raih1jutapenonton?utm_source=chatgpt.com">https://harian.disway.id/read/866428/jumbo-jadi-film-animasi-terlaris-sepanjang-masa-di-indonesia-sukses-raih1jutapenonton</a></p>
</li>
<li><p>Kotler, P., &amp; Keller, K. L. (2012). Marketing management (14th [ed.]). Prentice Hall.</p>
</li>
<li><p><a target="_blank" href="https://bmgindonesia.com/id/blog/digital-marketing/jenis-digital-marketing">https://bmgindonesia.com/id/blog/digital-marketing/jenis-digital-marketing</a></p>
</li>
<li><p><a target="_blank" href="https://www.suara.com/entertainment/2025/02/13/132320/film-animasi-jumbo-rilis-official-trailer-dan-poster-tayang-lebaran-2025">https://www.suara.com/entertainment/2025/02/13/132320/film-animasi-jumbo-rilis-official-trailer-dan-poster-tayang-lebaran-2025</a></p>
</li>
<li><p><a target="_blank" href="https://prudensi.com/visinema-studios-siapkan-jumbo-sebagai-evergreen-ip-animasi-indonesia">https://prudensi.com/visinema-studios-siapkan-jumbo-sebagai-evergreen-ip-animasi-indonesia</a></p>
</li>
<li><p><a target="_blank" href="https://www.marketing-interactive.com/gushcloud-hosts-special-screenings-to-support-jumbo-s-box-office-success">https://www.marketing-interactive.com/gushcloud-hosts-special-screenings-to-support-jumbo-s-box-office-success</a></p>
</li>
</ul>
<hr />
<p>Artikel ini merupakan bagian dari tugas individu di mata kuliah Manajemen Pemasaran.</p>
<p><strong>Nama:</strong> Misbakhul Mustofin<br /><strong>NIM:</strong> 24071000038<br /><strong>Kelas:</strong> B</p>
]]></content:encoded></item><item><title><![CDATA[TikTok vs Instagram: 
Mana yang Lebih Ampuh Dongkrak Penjualanmu?]]></title><description><![CDATA[Pernah bingung pilih promosi di TikTok atau Instagram?Kalau iya, kamu nggak sendirian. Banyak bisnis juga lagi galau menentukan platform mana yang paling efektif buat jualan.Tapi tenang, ada riset keren dari Kelsey Bishqemi dan Dr. Michael Crowley di...]]></description><link>https://blog.mustofin.com/tiktok-vs-instagram-mana-yang-lebih-ampuh-dongkrak-penjualanmu</link><guid isPermaLink="true">https://blog.mustofin.com/tiktok-vs-instagram-mana-yang-lebih-ampuh-dongkrak-penjualanmu</guid><category><![CDATA[manajemen pemasaran]]></category><category><![CDATA[tugas kuliah]]></category><category><![CDATA[jurnal marketing]]></category><dc:creator><![CDATA[Misbakhul Mustofin]]></dc:creator><pubDate>Thu, 05 Jun 2025 12:10:52 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1749118436740/5ad035b8-501b-4d34-a3e4-f108fd513e2d.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Pernah bingung pilih promosi di TikTok atau Instagram?<br />Kalau iya, kamu nggak sendirian. Banyak bisnis juga lagi galau menentukan platform mana yang paling efektif buat jualan.<br />Tapi tenang, ada riset keren dari <em>Kelsey Bishqemi</em> dan <em>Dr. Michael Crowley</em> di <em>Journal of Student Research</em> yang bantu jawab kegalauan kita.</p>
<p>Yuk, kita kupas tuntas</p>
<p><strong>Apa Sih Intinya?</strong></p>
<p>Di penelitian ini, mereka bikin eksperimen sederhana tapi jenius:</p>
<ul>
<li><p>Mereka buat akun baru di TikTok dan Instagram.</p>
</li>
<li><p>Lalu, posting 10 konten bertema alam (kayak bunga, pemandangan indah, gitu deh).</p>
</li>
<li><p>Setelah itu, mereka lihat mana platform yang lebih jago menyebarkan konten ke orang-orang yang memang <em>suka</em> hal-hal kayak gitu.</p>
</li>
</ul>
<p><strong>Hasilnya?</strong><br />Konten di TikTok dapet ratusan view, sedangkan di Instagram… yah, bisa dibilang kurang nendang.</p>
<p><strong>Kok Bisa TikTok Lebih Jago?</strong></p>
<p>Simpelnya, algoritma TikTok itu kayak sahabat yang ngerti kamu banget.<br />Dia tahu kamu suka apa, lalu dikasih terus konten yang sesuai minatmu — bahkan dari akun yang belum kamu follow!<br />Sementara Instagram masih lebih banyak nunjukkin konten dari akun yang udah kamu ikuti. Jadi, butuh waktu lebih lama buat menjangkau orang baru.</p>
<p><strong>Dalam dunia marketing</strong>, ini ibarat memilih:</p>
<ul>
<li><p><strong>TikTok:</strong> kamu promosi ke orang yang memang tertarik.</p>
</li>
<li><p><strong>Instagram:</strong> kamu promosi ke orang-orang yang sudah kenal kamu.</p>
</li>
</ul>
<p><strong>Lalu, Gimana Caranya Buat Naikkan Omzet?</strong></p>
<p>Kalau kamu mau <em>boost</em> penjualan, berikut trik praktisnya berdasarkan hasil riset ini:</p>
<p>🔹 <strong>Main Agresif di TikTok</strong><br />Buat konten yang <em>fun</em>, <em>relatable</em>, dan gampang nyangkut di hati orang. Konten kamu bisa cepat viral walaupun akun kamu masih sepi pengikut!</p>
<p>🔹 <strong>Bangun Trust di Instagram</strong><br />Gunakan Instagram buat <em>branding</em>. Upload konten yang rapi, storytelling tentang produkmu, dan kasih bukti testimoni pelanggan supaya makin terpercaya.</p>
<p>🔹 <strong>Konten Adalah Raja</strong><br />Di TikTok, kamu harus fokus ke <em>konten</em> bukan ke follower. Karena algoritmanya suka banget bantuin "anak baru" kalau kontennya keren.</p>
<p>🔹 <strong>Konsisten Itu Kunci</strong><br />Algoritma butuh sinyal. Makin sering kamu posting konten yang engaging, makin besar peluang kamu masuk FYP (TikTok) atau Explore (Instagram).</p>
<p><strong>So, TikTok atau Instagram?</strong></p>
<p>Jawabannya... <strong>kenapa nggak dua-duanya?</strong></p>
<ul>
<li><p>Pakai <strong>TikTok</strong> buat menjaring audiens baru, memperluas pasar.</p>
</li>
<li><p>Pakai <strong>Instagram</strong> buat mempertahankan dan mempererat hubungan dengan pelanggan.</p>
</li>
</ul>
<p>Kalau dua platform ini dimanfaatkan dengan strategi yang tepat, bukan cuma view yang naik, <strong>omzet kamu juga bisa melejit</strong>!</p>
<p><strong>Kesimpulan</strong></p>
<p>Di era serba cepat ini, algoritma media sosial bisa jadi sahabat terbaik (atau musuh terbesar) buat bisnismu.<br />Pahami cara kerja mereka, lalu susun strategi marketing yang smart.<br />Ingat, <strong>jualan sekarang bukan cuma soal produk bagus</strong>, tapi juga <strong>bagaimana caranya produkmu ditemukan di tengah keramaian dunia digital</strong>.</p>
<p>Siap tempur di TikTok dan Instagram? 🎯<br />Let's make your brand the next viral sensation!</p>
<p><strong>Referensi</strong></p>
<ul>
<li>Bishqemi, K., &amp; Crowley, M. (2022). TikTok Vs. Instagram: Algorithm Comparison. Journal of Student Research, Vol. 11(1). <a target="_blank" href="https://www.jsr.org/hs/index.php/path/article/view/2428">https://www.jsr.org/hs/index.php/path/article/view/2428</a></li>
</ul>
<hr />
<p>Artikel ini merupakan bagian dari tugas individu di mata kuliah Manajemen Pemasaran.</p>
<p><strong>Nama:</strong> Misbakhul Mustofin<br /><strong>NIM:</strong> 24071000038<br /><strong>Kelas:</strong> B</p>
]]></content:encoded></item></channel></rss>