<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
      <title>Marketing Lessons &amp; Experiences on Talotics: Digital Online Tactics </title>
      <generator uri="https://gohugo.io">Hugo POSTS</generator>
    <link>https://talotics.com/</link>
    <language>en-us</language>
    
    
    <updated>Sun, 12 Apr 2026 14:55:38 BST</updated>
    
    <item>
      <title>New Site Release Checklist and Steps</title>
      <link>https://talotics.com/post/hosting/initial-checklist/</link>
      <pubDate>Sun, 15 Mar 2026 09:00:36 UTC</pubDate>
      
      <guid>https://talotics.com/post/hosting/initial-checklist/</guid>
      <description>&lt;p&gt;I released a new web site - here is the checklist that I followed.&lt;/p&gt;
&lt;h2 id=&#34;new-sites&#34;&gt;New Sites&lt;/h2&gt;
&lt;p&gt;You&amp;rsquo;re all excited. You have a new idea. You&amp;rsquo;ve built the web site. What now?&lt;/p&gt;
&lt;p&gt;Well, you&amp;rsquo;ve probably gone too far already.&lt;/p&gt;
&lt;p&gt;Ideally you&amp;rsquo;d complete some of this checklist before you build the web site.&lt;/p&gt;
&lt;h2 id=&#34;pre-build&#34;&gt;Pre-Build&lt;/h2&gt;
&lt;p&gt;Before even building the website you would ideally:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;grab the domain name you want&lt;/li&gt;
&lt;li&gt;grab the social handles you want&lt;/li&gt;
&lt;li&gt;create a simple landing page with a single page that describes the site to be&lt;/li&gt;
&lt;li&gt;add a newsletter signup with a privacy page to gather interest&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I&amp;rsquo;m guilty. I didn&amp;rsquo;t do it in this order.&lt;/p&gt;
&lt;p&gt;I built a prototype application first, then checked if it worked, then performed the above steps.&lt;/p&gt;
&lt;p&gt;In the age of AI I&amp;rsquo;ll probably be tempted to skip this initial set of steps next time I build something as well. Because it only takes a week to build a full app. Why spend time with the above first.&lt;/p&gt;
&lt;p&gt;If you are building something you are convinced is going to work then do the above first.&lt;/p&gt;
&lt;p&gt;It focuses your attention on the value proposition and initial branding and that can help with the build anyway.&lt;/p&gt;
&lt;h3 id=&#34;grab-the-domain-name&#34;&gt;Grab the domain name&lt;/h3&gt;
&lt;p&gt;I found the Hostinger.com domain name generator quite useful:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.hostinger.com/uk/domain-name-results&#34;&gt;hostinger.com/uk/domain-name-results&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is a page where you can type a simple prompt, then the form calls some AI LLM and returns with domain name ideas.&lt;/p&gt;
&lt;p&gt;But&amp;hellip; not just any ideas.&lt;/p&gt;
&lt;p&gt;Only domain names that are available.&lt;/p&gt;
&lt;p&gt;Then you want to buy the domain name.&lt;/p&gt;
&lt;p&gt;Obviously you can use your favourite provider for this.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve started using the hosting site as the place I buy the domain, this way hooking up the DNS is easy because it is done by default.&lt;/p&gt;
&lt;p&gt;I hosted my new front end app on Vercel, using the free plans and a &lt;code&gt;.com&lt;/code&gt; domain name was only $7.99&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Remember: you can easily move domain names later. My aim at this point is to get started as quickly and as easily as possible.&lt;/p&gt;&lt;/blockquote&gt;
&lt;h3 id=&#34;grab-the-social-handles&#34;&gt;Grab the social handles&lt;/h3&gt;
&lt;p&gt;Chances are, the social handles you want, have already gone.&lt;/p&gt;
&lt;p&gt;So what do you do?&lt;/p&gt;
&lt;p&gt;Pick a suffix. If your site is &amp;lsquo;mysupernewsite.com&amp;rsquo;&lt;/p&gt;
&lt;p&gt;You might want to consider handles like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;mysupernewsitecom&lt;/li&gt;
&lt;li&gt;mysupernewsitesocial&lt;/li&gt;
&lt;li&gt;mysupernewsiteofficial&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Most people will follow your social profiles by clicking links on your pages, it&amp;rsquo;s more important to be consistent than it is &amp;rsquo;exactly owning&amp;rsquo; your domain.&lt;/p&gt;
&lt;h3 id=&#34;landing-page&#34;&gt;Landing Page&lt;/h3&gt;
&lt;p&gt;If you create a landing page and get it out there. Then if focuses your mind on the value proposition.&lt;/p&gt;
&lt;p&gt;It helps you define the &amp;lsquo;attitude&amp;rsquo; behind your brand and your copy, and this can feed into the build as well.&lt;/p&gt;
&lt;p&gt;But&amp;hellip; it also means you can start submitting the site to the search indexes and incrementally build what is coming.&lt;/p&gt;
&lt;h3 id=&#34;newsletter-sign-up&#34;&gt;Newsletter Sign Up&lt;/h3&gt;
&lt;p&gt;You haven&amp;rsquo;t build authentication yet. You don&amp;rsquo;t have a product.&lt;/p&gt;
&lt;p&gt;That doesn&amp;rsquo;t mean you can&amp;rsquo;t start gauging interest.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;ve written a value proposition, you can add a newsletter sign up, and if anyone signs up before you&amp;rsquo;ve even built anything then you know you have something people want.&lt;/p&gt;
&lt;p&gt;Remember to add a &amp;lsquo;privacy policy&amp;rsquo; page to the site. This makes it &amp;lsquo;official&amp;rsquo; that you are going to handle the emails in an honorable way.&lt;/p&gt;
&lt;h2 id=&#34;build&#34;&gt;Build&lt;/h2&gt;
&lt;h3 id=&#34;sitemapxml-and-search-engine-indexing&#34;&gt;Sitemap.xml and Search Engine Indexing&lt;/h3&gt;
&lt;p&gt;You&amp;rsquo;re probably building using AI now, so you&amp;rsquo;ll be building and iterating quickly. And this first thing we want to build is a &lt;code&gt;sitemap.xml&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Now we want to submit this to the search engines.&lt;/p&gt;
&lt;p&gt;Because if you&amp;rsquo;re building fast, then by the time the search engines start indexing your site, you might have started creating content.&lt;/p&gt;
&lt;p&gt;If you don&amp;rsquo;t submit for indexing early then your content might not get indexed for several days after you&amp;rsquo;ve released it. And you&amp;rsquo;re working it AI speed - two to three days to see your site indexed is going to feel like a long time.&lt;/p&gt;
&lt;h3 id=&#34;bing-and-google&#34;&gt;Bing and Google&lt;/h3&gt;
&lt;p&gt;Register your site on Bing and Google.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Use Google search console and add property&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://search.google.com/search-console&#34;&gt;https://search.google.com/search-console&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;this requires access to the DNS configuration for the domain to add a TXT or CNAME entry&lt;/li&gt;
&lt;li&gt;TXT record leave the name empty and the &amp;lsquo;value&amp;rsquo; is the information google provides you wit e.g. &lt;code&gt;google-site-verification=12345...&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Bing webmaster tools &lt;a href=&#34;https://www.bing.com/webmasters&#34;&gt;https://www.bing.com/webmasters&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;if you have added the site to Google Search Console then you can simply import from there into bing webmaster tools&lt;/li&gt;
&lt;li&gt;this is the fastest way&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Remember that &lt;code&gt;sitemap.xml&lt;/code&gt;? Now we submit it to the engines.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;submit site map to Google search console&lt;/li&gt;
&lt;li&gt;submit site map to Bing in the webmaster tools&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It takes a few days to get indexed so do this early.&lt;/p&gt;
&lt;p&gt;The benefit might seem small, but getting indexed early means you gain insight into anything wrong with your design, including SEO and GEO improvements that are identified in these tools.&lt;/p&gt;
&lt;p&gt;Since they are now scanning your sitemap, as you build and expand your site, you can see if there is any impact on the search and rankings in these tools without having built any analytics in the site.&lt;/p&gt;
&lt;h2 id=&#34;release&#34;&gt;Release&lt;/h2&gt;
&lt;p&gt;Surprise. You&amp;rsquo;ve already released.&lt;/p&gt;
&lt;p&gt;Now, as you build the site and iterate you&amp;rsquo;re changes will be picked up by the search engines.&lt;/p&gt;
&lt;p&gt;You can already inform people on the newsletter.&lt;/p&gt;
&lt;p&gt;You don&amp;rsquo;t even really need a blog at this point, just add dated content to the front page describing your progress.&lt;/p&gt;
&lt;p&gt;But now you can concentrate on developing the app, while developing an online search presence organically.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Tools for Testing UTM Links</title>
      <link>https://talotics.com/post/tooling/utm-testing-tooling/</link>
      <pubDate>Fri, 20 May 2022 08:00:36 UTC</pubDate>
      
      <guid>https://talotics.com/post/tooling/utm-testing-tooling/</guid>
      <description>&lt;p&gt;I was creating and testing some UTM links and used two main tools, one to test the link format and one to help me test the analytics.&lt;/p&gt;
&lt;p&gt;The analytics I&amp;rsquo;m interested in are Google Analytics and Plausible.io&lt;/p&gt;
&lt;h2 id=&#34;testing-the-utm-link&#34;&gt;Testing the UTM link&lt;/h2&gt;
&lt;p&gt;I found the utm-validator from Digiguru Analytics a useful first step.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.digiguru.xyz/utm-validator&#34;&gt;https://www.digiguru.xyz/utm-validator&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Paste in your UTM link and it points out the values from the utm params.&lt;/p&gt;
&lt;p&gt;It also offers some recommendations based on your URL.&lt;/p&gt;
&lt;p&gt;It has a section on general recommendations which help explain what utm parameters are in the first place and it has multiple ways to help you test the campaign:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;a link to click on which opens in a new tab and uses the UTM url you added&lt;/li&gt;
&lt;li&gt;a QR code so you can easily test it from a mobile device&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A very simple page, but very useful.&lt;/p&gt;
&lt;h2 id=&#34;testing-the-plausible-tracking&#34;&gt;Testing the Plausible Tracking&lt;/h2&gt;
&lt;p&gt;The next thing I had to do was get the URL registering in Plausible.io so I knew it was working.&lt;/p&gt;
&lt;p&gt;Plausible &lt;a href=&#34;https://plausible.io/docs/manual-link-tagging&#34;&gt;only tracks UTM parameters when the visiting user starts a new session&lt;/a&gt; on the site. So if you have already visited your site and have a session active then you won&amp;rsquo;t see the UTM links appear in your realtime stats view.&lt;/p&gt;
&lt;p&gt;I could close everything down and start again, instead I startup epic browser and use the build in VPN to connect to use the UTM url from different GEO regions.&lt;/p&gt;
&lt;p&gt;Each VPN session comes from a different IP address and triggers a new Plausible.io session.&lt;/p&gt;
&lt;p&gt;I find it useful to have Epic Browser installed specifically for the VPN extension because it allows me to do various GEO testing.&lt;/p&gt;
&lt;p&gt;PS: Sometimes if I want screenshots of GEO Testing then I draw upon the free services of:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://geotargetly.com/geo-browse&#34;&gt;https://geotargetly.com/geo-browse&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://geopeeker.com/&#34;&gt;https://geopeeker.com/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>Experiences of Online Course Hosting</title>
      <link>https://talotics.com/post/hosting/online-course-hosting/</link>
      <pubDate>Fri, 22 Apr 2022 09:00:36 UTC</pubDate>
      
      <guid>https://talotics.com/post/hosting/online-course-hosting/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve released 3 online courses commercially for myself, 3 online courses commercially for others, a free online course for another company and several free online courses for myself. Here are some lessons learned.&lt;/p&gt;
&lt;h2 id=&#34;who-to-host-with&#34;&gt;Who to host with?&lt;/h2&gt;
&lt;p&gt;When we start building our online courses one of the hardest decisions to make is where to host the course. Should you host it yourself through some wordpress plugins, or go with a hosting provider like Udemy or Teachable, or put it on a subscription service like Linkedin Learning, or write your own system?&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve done them all.&lt;/p&gt;
&lt;p&gt;They all have issues and risks, so I think &lt;strong&gt;it really depends on how hands off you want to be&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id=&#34;easiest-saas&#34;&gt;Easiest SAAS&lt;/h3&gt;
&lt;p&gt;If you want to be completely hands-off then choose Udemy. Udemy handle all payment processing, refunds, invoicing, and technical support, they also handle all VAT and recognise that they are the seller on record, the student is their customer, they provide a platform for you to release courses to. The only queries I received from people on Udemy were technical questions about my courses: &amp;ldquo;I can&amp;rsquo;t get this working&amp;rdquo;, &amp;ldquo;I don&amp;rsquo;t understand this&amp;rdquo;.&lt;/p&gt;
&lt;h3 id=&#34;subscription-services&#34;&gt;Subscription Services&lt;/h3&gt;
&lt;p&gt;The other completely hands off approach is to offer your course to a subscription based site like Linkedin Learning, Skillshare or Pluralsight. Because these are subscription sites you are not involved in payments at all, you are offered a share of the total revenue based on how many views your content receives.&lt;/p&gt;
&lt;p&gt;LinkedIn Learning will actually help you record your course. They offer an advance for course creators, then work with you to script your videos and review the content. For first time trainers they fly you over to their offices and record the course in professional booths. The content is then edited by their team and uploaded to the site. This is the most hands off option available to you. Be aware that you are giving more of your intellectual property rights to Linkedin Learning and Pluralsight. You also have to &amp;lsquo;pitch&amp;rsquo; your course to these companies as they are more selective as to what they allow on their platform.&lt;/p&gt;
&lt;h3 id=&#34;hosting-saas&#34;&gt;Hosting SAAS&lt;/h3&gt;
&lt;p&gt;Teachable is more hands on. They can handle VAT and payments, they also provide the option to setup your own stripe account or payment gateway to handle more of the work yourself. I&amp;rsquo;ve found that they have a tendency to delegate to the instructor more frequently than I&amp;rsquo;d like. The first point of contact for any support query is the instructor, and very often I have to tell the student &amp;lsquo;Teachable handle that, please email &lt;a href=&#34;mailto:support@teachable.com&#34;&gt;support@teachable.com&lt;/a&gt;&amp;rsquo;. Teachable seem to view themselves as enabling a relationship between the instructor and the student, so even though they are the seller on record they don&amp;rsquo;t seem to feel the same responsibility to the student as Udemy or the instructor does. Teachable have a Teachable Payments service where they will collect and handle all VAT on behalf of the instructor.&lt;/p&gt;
&lt;p&gt;I haven&amp;rsquo;t used Thinkific but it seems more like a hosting service, they provide a SAAS for building a course and a mechanism for you to take payments so you are the seller on record. This means lower fees and more responsbility.&lt;/p&gt;
&lt;h3 id=&#34;self-configured&#34;&gt;Self Configured&lt;/h3&gt;
&lt;p&gt;Then the next level is to avoid using a SAAS hosting service and instead set up a self hosted wordpress site with various plugins to handle courses and payments. I tried this but I found it clumsy, time consuming and&amp;hellip; I&amp;rsquo;m always nervous about self hosted wordpress solutions because you really need to keep on top of updates to avoid security issues. If you have an out of date plugin or version configuration you almost certainly will get hacked. Keep that in mind because you need to factor in the admin of monitoring and keeping your site up to date.&lt;/p&gt;
&lt;h3 id=&#34;self-built&#34;&gt;Self Built&lt;/h3&gt;
&lt;p&gt;The next level after this is to write your own course hosting system. This is an extreme option and only available to people with technical skills. I would not recommend this to most people.&lt;/p&gt;
&lt;p&gt;Perhaps you are thinking you could just hire someone to write your own custom course system. You could. But I wouldn&amp;rsquo;t. Use one of the existing solutions and focus on the teaching and adding value.&lt;/p&gt;
&lt;h2 id=&#34;how-to-decide&#34;&gt;How to decide?&lt;/h2&gt;
&lt;p&gt;Consider what factors are important to you:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How much of the percentage revenue do you want to keep?
&lt;ul&gt;
&lt;li&gt;If you want more revenue then you will be looking at doing the payments yourself, or Thinkific or Teachable.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;How much admin do you want to have to do?
&lt;ul&gt;
&lt;li&gt;If you don&amp;rsquo;t want any then the subscription sites are the best bet. If you only want to do course maintenance then Udemy. If you want more then Teachable and Thinkific. And then for ultimate responsibility you can do it yourself.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;How much ownership of the course do you want?
&lt;ul&gt;
&lt;li&gt;Pluralsite and Linkedin Learning require exclusive access and Linkedin Learning ultimately own the video course. Other platforms you own the course and can do what you want with it.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Are you going to keep the course updated often?
&lt;ul&gt;
&lt;li&gt;If so, avoid hte subscription sites and go for the other platforms that provide GUI for you to manage the content.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You&amp;rsquo;ll have to do the research to see which works for you. I advise you not to focus on the money, and instead look at how the system fits into your business and your teaching values.&lt;/p&gt;
&lt;p&gt;With all the providers you will have to do your own marketing to drive traffic, and you will be supporting the students.&lt;/p&gt;
&lt;h2 id=&#34;an-evaluation-approach&#34;&gt;An Evaluation Approach&lt;/h2&gt;
&lt;p&gt;Before choosing a provider, actually use them as a student and customer.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Find some free courses that are offered through their platform and take a course or two.&lt;/li&gt;
&lt;li&gt;If possible, purchase a course to see what the purchase process is like, make sure you are happy with the emails and receipts that are delivered.&lt;/li&gt;
&lt;li&gt;Ask for a refund and see what the refund process is like.&lt;/li&gt;
&lt;li&gt;Ask for support through the official channels.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Additionally, actually use them as an instructor.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Create a simple test course that you can upload to sites as a free course.&lt;/li&gt;
&lt;li&gt;create a free tier account.&lt;/li&gt;
&lt;li&gt;Try and upload the course and explore the options open to you.&lt;/li&gt;
&lt;li&gt;Try and join your course so you can see what notifications you receive and can see what the student management functions are like.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Honestly&amp;hellip; share of revenue is not as important as how much time will it take you to conduct your business on their system.&lt;/p&gt;
&lt;h2 id=&#34;how-i-decided&#34;&gt;How I decided?&lt;/h2&gt;
&lt;p&gt;I tried the Wordpress plugin route but it did not suit my approach or business needs so I ruled that out.&lt;/p&gt;
&lt;p&gt;If I want to build my professional brand and don&amp;rsquo;t care as much about the money then the big subscription sites like LinkedIn Learning or Pluralsite are great. You are more hands off, and you get a lot of support in the editing and course creation. This becomes less important the more experienced you become in creating courses.&lt;/p&gt;
&lt;p&gt;For all my self-managed courses, I hedged my bets. I used multiple platforms.&lt;/p&gt;
&lt;p&gt;I used Udemy and Teachable at the same time. Over the years I&amp;rsquo;ve become disgruntled equally by both platforms due to terms and condition changes and technical issues. I&amp;rsquo;ve taken all my courses off both platforms then added them back on again, and removed them again etc. The amount of issues I&amp;rsquo;ve had with each are too long to mention. The important point is that no platform will be perfect. You are boosting someone else&amp;rsquo;s business and they are more concerned with their business than they are with yours. By putting my courses on both platforms I was able to switch off sales on one platform when they had issues and push people toward the other platform, and issue free coupons on one platform to allow people to migrate.&lt;/p&gt;
&lt;p&gt;If you only put your courses on one platform then consider the risks if that platform:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;changes terms and conditions in ways you don&amp;rsquo;t like&lt;/li&gt;
&lt;li&gt;puts limits on how much you can charge&lt;/li&gt;
&lt;li&gt;stops processing tax in the way that you need&lt;/li&gt;
&lt;li&gt;has technical issues that impact your course&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I have experienced all of the above on both Udemy and Teachable. Other platforms will have similar risks.&lt;/p&gt;
&lt;h2 id=&#34;why-is-this-so-hard&#34;&gt;Why is this so hard?&lt;/h2&gt;
&lt;p&gt;Ultimately, course providing SAAS platforms are not good enough.&lt;/p&gt;
&lt;p&gt;There is a lot of manual effort involved in uploading and getting the course ready for publication.&lt;/p&gt;
&lt;p&gt;This manual effort helps &amp;lsquo;keep you&amp;rsquo; on the platform, even when there are issues, because the cost of moving is something that most people can not bear.&lt;/p&gt;
&lt;p&gt;None of the platforms offer an extensive enough API to automate the course management process.&lt;/p&gt;
&lt;p&gt;The Teachable API has capabilities to get information about the courses and students. It is possible to add users, and enroll them into courses but that is the extend of the maintenance. You can not use the API to create new lectures, upload new versions of videos, add new sections, change descriptions, delete lectures etc. All of that maintenance has to be done by hand on the platform.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://docs.teachable.com/v1.0/reference/listcourses&#34;&gt;https://docs.teachable.com/v1.0/reference/listcourses&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Udemy offers less features through its API. The official API is for managing questions and messages, not for managing the course.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.udemy.com/developers/instructor/&#34;&gt;https://www.udemy.com/developers/instructor/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Thinkific is similar to Teachable, it does not support amending course content or uploading videos.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://developers.thinkific.com/api/using-the-api/&#34;&gt;https://developers.thinkific.com/api/using-the-api/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;All of these platforms have internal APIs for uploading and amending the course details, but because these are internal they are not documented, can change without warning, and using them might be considered as reverse engineering the system and would be against the terms and conditions.&lt;/p&gt;
&lt;p&gt;Its almost as if the course providers don&amp;rsquo;t want to make APIs to manage courses available because they know it would then make it easier to move your content between providers.&lt;/p&gt;
&lt;h2 id=&#34;what-i-recommend-lessons-learned&#34;&gt;What I recommend Lessons Learned?&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Create small courses&lt;/li&gt;
&lt;li&gt;Organise your courses offline then copy and paste into the course system&lt;/li&gt;
&lt;li&gt;Add your course to multiple platforms to avoid relying exclusively on one&lt;/li&gt;
&lt;li&gt;Experiment with self-hosting, subscription services and SAAS&lt;/li&gt;
&lt;li&gt;Create evergreen courses that don&amp;rsquo;t require much maintenance&lt;/li&gt;
&lt;li&gt;If you create tech specific courses then create a new course for different versions rather than updating the same course all the time e.g. create a course for &amp;ldquo;Using tool X version 1&amp;rdquo; and a different course for &amp;ldquo;Using tool X version 2&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The ability to jump between platforms as necessary will help reduce your stress when platforms change their terms and conditions at a moment&amp;rsquo;s notice.&lt;/p&gt;
&lt;h2 id=&#34;major-lesson---organise-your-courses-offline&#34;&gt;Major Lesson - Organise your courses offline&lt;/h2&gt;
&lt;p&gt;Do not rely on the course platform as the single version of your course. Do not rely on the course hosting service &amp;lsquo;keeping your videos safe&amp;rsquo;.&lt;/p&gt;
&lt;p&gt;I keep a folder on my hard drive for each course, all videos, descriptions, meta-data are stored in the folder.&lt;/p&gt;
&lt;p&gt;This allows me to copy and paste the content into the course platforms and I always have a backup.&lt;/p&gt;
&lt;p&gt;For example, Udemy add a watermark to your videos on their platform this is notionally to prevent piracy but all it means is that when you find a pirated version of your course you can see that it came from Udemy rather than wondering which other platform they ripped it from. This also means that you can not rely on the Udemy version of the video as a backup video.&lt;/p&gt;
&lt;p&gt;I maintain a folder structure like this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- /coursename
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   - description.md
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   - metadata.txt
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   - courseimage.png
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   - /00x-sectionname
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;       - description.md
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;       - metadata.txt
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;       - /00x-lecturename
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;           - description.md
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;           - metadata.txt
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;           - 00x-lecturename.mp4
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;           - attachment1.pdf
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;           - attachment2.mp3
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;           - attachment3.zip
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The folder structure organises the course.&lt;/p&gt;
&lt;p&gt;All content is stored here, anything that would be uploaded to the platform is added to the folder structure first and then uploaded to the course system.&lt;/p&gt;
&lt;p&gt;I write all my descriptions using &lt;a href=&#34;https://daringfireball.net/projects/markdown/&#34;&gt;markdown&lt;/a&gt;, I can then convert this to HTML and copy and paste it into the editing fields for the online course systems.&lt;/p&gt;
&lt;p&gt;If I want to update my course, I update the offline version and then update the online version.&lt;/p&gt;
&lt;p&gt;I use the metadata.txt to track any additional information e.g. urls for the different course providers, last updated date etc.&lt;/p&gt;
&lt;p&gt;This seems like a lot of work, until:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the course editor crashes when you are editing your description and you have to start again&lt;/li&gt;
&lt;li&gt;you accidentally delete a course or section because the GUI is hard to use&lt;/li&gt;
&lt;li&gt;stuff gets deleted from your course&amp;hellip; and you&amp;rsquo;re sure it wasn&amp;rsquo;t you&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Also, if you are hosting your course on different sites as I recommend then this makes the process faster.&lt;/p&gt;
&lt;p&gt;It also means that you have less fear of migrating to a new platform because migration is a manual process but it just means. Uploading all the videos and copy and pasting in the HTML.&lt;/p&gt;
&lt;h2 id=&#34;what-i-do-now&#34;&gt;What I do now?&lt;/h2&gt;
&lt;p&gt;I&amp;rsquo;ve actually pretty much given up on &amp;lsquo;selling individual courses&amp;rsquo; at the moment.&lt;/p&gt;
&lt;p&gt;The market is heavily saturated and dealing with SAAS issues killed my desire to create courses.&lt;/p&gt;
&lt;p&gt;I have some courses on the subscription site LinkedIn Learning which is a low effort platform and keeps my brand out there.&lt;/p&gt;
&lt;p&gt;The only course I have on sale is now on Udemy. I took my courses off sale from Teachable this week due to technical issues and reverted to Udemy.&lt;/p&gt;
&lt;p&gt;And I&amp;rsquo;ve created my own custom LMS. I can do this because I&amp;rsquo;m technical and can code. Also, because of my offline course management it was pretty simple to automate scanning through the folder, uploading all the videos to Vimeo and then creating pages from the &lt;code&gt;description.md&lt;/code&gt;. All I had to do after that was add a login, which I did by using the Patreon OAuth API, which means all people who support me on Patreon get access to the courses and Patreon handles all payments.&lt;/p&gt;
&lt;p&gt;This option is not available to most people. And until online learning SAAS providers create APIs for the full course admin solution most people will probably have to stick to a single SAAS provider.&lt;/p&gt;
&lt;p&gt;I thoroughly recommend maintaining your course offline, so you always have a backup, and you view the SAAS system as a &amp;lsquo;version&amp;rsquo; of your course, rather than your course. Then&amp;hellip; if SAAS provider ever do create APIs, it will be easier to move, and if a SAAS provider ever does something you don&amp;rsquo;t like you can adapt faster.&lt;/p&gt;
&lt;h2 id=&#34;will-i-ever-use-a-saas-service-again&#34;&gt;Will I ever use a SAAS service again?&lt;/h2&gt;
&lt;p&gt;I might. I am constantly receiving emails from new SAAS services asking me to move my course or they will migrate my course for me.&lt;/p&gt;
&lt;p&gt;For me to consider a SAAS it needs to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;offer a fully featured API that supports all course management activities&lt;/li&gt;
&lt;li&gt;handle VAT and all taxes internally&lt;/li&gt;
&lt;li&gt;see itself as having a relationship with the students who are buying and taking courses, not just enabling instructors to sell courses&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I have this option because I am technical and can do it myself.&lt;/p&gt;
&lt;p&gt;If I didn&amp;rsquo;t, then I&amp;rsquo;d either use a subscription site like Linkedin Learning.&lt;/p&gt;
&lt;p&gt;Or I&amp;rsquo;d just pick Udemy, opt out of their constant &amp;rsquo;lowest ever sale price&amp;rsquo; sales, create small very focussed high value evergreen courses, sell them cheap, and do good marketing.&lt;/p&gt;
&lt;p&gt;Your needs and target market may be different than mine. You might find Teachable or Thinkific a suitable SAAS. Just do your due diligence during evaluation, don&amp;rsquo;t get sucked in by the &amp;lsquo;commission&amp;rsquo; and &amp;lsquo;fee&amp;rsquo; levels. Look at the teaching experience and protect yourself by maintaining your offline version of your course as the main version.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Python for Custom SEO Tooling</title>
      <link>https://talotics.com/post/tooling/python-for-adhoc-tooling/</link>
      <pubDate>Sat, 22 Jan 2022 11:00:36 UTC</pubDate>
      
      <guid>https://talotics.com/post/tooling/python-for-adhoc-tooling/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve started experimenting with Python when creating custom SEO tooling.&lt;/p&gt;
&lt;h2 id=&#34;why-python&#34;&gt;Why Python?&lt;/h2&gt;
&lt;p&gt;Despite programming since childhood, I&amp;rsquo;ve only just started learning Python.&lt;/p&gt;
&lt;p&gt;I tried to use it years ago but it was hard to install on Windows machines, there were not many libraries available to help and the IDE support was poor.&lt;/p&gt;
&lt;p&gt;That situation has changed. I primarily use Mac and Python is installed by default, it is now easy to install on Windows. The default IDE for Python &lt;a href=&#34;https://docs.python.org/3/library/idle.html&#34;&gt;IDLE&lt;/a&gt; has improved but there are now far better options available like &lt;a href=&#34;https://code.visualstudio.com/&#34;&gt;Visual Studio Code&lt;/a&gt; that make working with Python much easier.&lt;/p&gt;
&lt;p&gt;Python is currently listed on the &lt;a href=&#34;https://pypl.github.io/PYPL.html&#34;&gt;PopularitY of Programming Language&lt;/a&gt;s site as being the #1 searched for Programming Language.&lt;/p&gt;
&lt;h2 id=&#34;why-python-for-seo&#34;&gt;Why Python for SEO?&lt;/h2&gt;
&lt;p&gt;Python is often used for SEO, Data Analysis and Security Testing. Domains which are surprisingly technical, and often populated by people without a formal Software Development background but who need to create very custom and adhoc applications.&lt;/p&gt;
&lt;p&gt;This has resulted in a lot of libraries released and available for free to support these domains.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve found that almost every fundamental task I&amp;rsquo;ve wanted to do to support my SEO activities has already been written and available through a simple dependency.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://pandas.pydata.org/&#34;&gt;Pandas&lt;/a&gt; is a library for data manipulation which makes working with CSV or raw data simple.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://advertools.readthedocs.io/en/master/readme.html&#34;&gt;Advertools&lt;/a&gt; has many SEO support functions making it easy to download and parse sitemaps and crawl sites.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.crummy.com/software/BeautifulSoup/&#34;&gt;Beautiful Soup&lt;/a&gt; makes working with HTML simple.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://pypi.org/project/python-whois/&#34;&gt;WhoIs&lt;/a&gt; get the whois information for a domain.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All I then have to do is write some simple code to create the functionality I need.&lt;/p&gt;
&lt;p&gt;Further reading on Python for SEO:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.danielherediamejias.com/python-scripts-seo/&#34;&gt;Python for SEO&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.seopythonistas.com/&#34;&gt;SEO Pythonistas&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.searchenginejournal.com/python-libraries-for-seo/399283&#34;&gt;8 Python Libraries for SEO&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://practicaldatascience.co.uk/data-science/19-python-seo-projects-that-will-improve-your-site&#34;&gt;19 Python SEO projects&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://threadreaderapp.com/thread/1481602026857451520.html&#34;&gt;Python SEO Resources twitter thread&lt;/a&gt; by &lt;a href=&#34;https://threadreaderapp.com/user/GiordMarco96&#34;&gt;Marco Giordano&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;a-simple-python-example&#34;&gt;A Simple Python Example&lt;/h2&gt;
&lt;p&gt;I&amp;rsquo;m going to explain a fairly simple Python script that uses some of the above libraries to load a &lt;code&gt;sitemap.xml&lt;/code&gt; then for each URL listed, download the page and scan it for any &lt;code&gt;iframe&lt;/code&gt; elements that do not have lazy loading enabled.&lt;/p&gt;
&lt;p&gt;The script has several dependencies e.g. advertools, beautiful soup. In Python dependencies are added using a &lt;code&gt;pip&lt;/code&gt; command, I&amp;rsquo;m using Python version 3 on Mac so the command is &lt;code&gt;pip3&lt;/code&gt;.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pip3 install advertools
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The above command would install advertools for Python so I could use the library in my script.&lt;/p&gt;
&lt;p&gt;Dependencies are often listed in a file called &lt;code&gt;requirements.txt&lt;/code&gt; which is a list of the library names, this can be used to install the dependencies:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pip3 install -r requirements.txt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The &lt;code&gt;requirements.txt&lt;/code&gt; file for this script would be:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;advertools
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;beautifulsoup4
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;CacheControl
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;lockfile
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Python scripts are text files with an extension &lt;code&gt;.py&lt;/code&gt; e.g. &lt;code&gt;iframechecker.py&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;At the head of the script are all the imports to pull in the libraries, classes and functions used:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; advertools
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; requests
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; cachecontrol &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; CacheControl
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; cachecontrol.caches.file_cache &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; FileCache
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; bs4 &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; BeautifulSoup
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;First I would want to download the sitemap (change the sitemap xml variable to match the URL of the sitemap being processed):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;siteMapUrl &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://mysite.com/my-sitemap-posts-url.xml&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sitemapDataFrame &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; advertools&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;sitemap_to_df(siteMapUrl, recursive&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;True&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Advertools made it easy to download the sitemap by using hte &lt;code&gt;sitemap_to_df&lt;/code&gt; method. This creates a Panda dataframe. Panda was not listed as a dependency in my project becuase it was installed as a dependency of Advertools.&lt;/p&gt;
&lt;p&gt;I only want to download the HTML files from the sitemap once so I&amp;rsquo;m going to create a cache for the HTML Requests. To empty the cache I can delete the folder &lt;code&gt;.web_cache&lt;/code&gt; that is created.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;forever_cache &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; FileCache(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;.web_cache&amp;#39;&lt;/span&gt;, forever&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;True&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;session &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; CacheControl(requests&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;Session(), forever_cache)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I then want to loop over every Url in the sitemap and download the HTML page. I get all the &lt;code&gt;loc&lt;/code&gt; elements from the sitemap dataframe then loop over them all and use the cached request session to &lt;code&gt;get&lt;/code&gt; the url and return the HTML (&lt;code&gt;text&lt;/code&gt;) of the page.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;urls &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; sitemapDataFrame[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;loc&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;tolist()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; url &lt;span style=&#34;color:#f92672&#34;&gt;in&lt;/span&gt; urls:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    urlReport &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; []
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    print(url)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    html &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; session&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;get(url)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;text
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I then want to use Beautiful Soup to parse the HTML to make it easy to find all the &lt;code&gt;iframe&lt;/code&gt; elements.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    parsedHtml &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; BeautifulSoup(html, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;html.parser&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    iframes &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; parsedHtml&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;find_all(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;iframe&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;All the &lt;code&gt;iframe&lt;/code&gt; elements are now in the &lt;code&gt;iframes&lt;/code&gt; array.&lt;/p&gt;
&lt;p&gt;At this point it is worth mentioning that Python uses indentation to control the scope of the application, so all code indented below the &lt;code&gt;for&lt;/code&gt; line is included in the loop.&lt;/p&gt;
&lt;p&gt;The loop over all the &lt;code&gt;iframe&lt;/code&gt; elements and find those that do not have lazy loading set, this is identifiable by looking at the &lt;code&gt;loading&lt;/code&gt; attribute on the iframe element.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; iframe &lt;span style=&#34;color:#f92672&#34;&gt;in&lt;/span&gt; iframes:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        lazy &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; iframe&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;get(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;loading&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt;(lazy&lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;or&lt;/span&gt; lazy&lt;span style=&#34;color:#f92672&#34;&gt;!=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;lazy&amp;#34;&lt;/span&gt;):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            print(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            print(iframe)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            print(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;- has an iframe without lazy loading&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And that&amp;rsquo;s it.&lt;/p&gt;
&lt;p&gt;The full script would be:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; advertools
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; requests
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; cachecontrol &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; CacheControl
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; cachecontrol.caches.file_cache &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; FileCache
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; bs4 &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; BeautifulSoup
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;siteMapUrl &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://mysite.com/my-sitemap-posts-url.xml&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sitemapDataFrame &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; advertools&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;sitemap_to_df(siteMapUrl, recursive&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;True&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;forever_cache &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; FileCache(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;.web_cache&amp;#39;&lt;/span&gt;, forever&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;True&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;session &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; CacheControl(requests&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;Session(), forever_cache)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;urls &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; sitemapDataFrame[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;loc&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;tolist()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; url &lt;span style=&#34;color:#f92672&#34;&gt;in&lt;/span&gt; urls:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    urlReport &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; []
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    print(url)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    html &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; session&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;get(url)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;text
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    parsedHtml &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; BeautifulSoup(html, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;html.parser&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    iframes &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; parsedHtml&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;find_all(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;iframe&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; iframe &lt;span style=&#34;color:#f92672&#34;&gt;in&lt;/span&gt; iframes:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        lazy &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; iframe&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;get(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;loading&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt;(lazy&lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;or&lt;/span&gt; lazy&lt;span style=&#34;color:#f92672&#34;&gt;!=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;lazy&amp;#34;&lt;/span&gt;):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            print(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            print(iframe)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            print(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;- has an iframe without lazy loading&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This could easily be amended to find all the links and then process this in someway, possibly to find all the images without an alt tag&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    elements &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; parsedHtml&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;find_all(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;img&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; element &lt;span style=&#34;color:#f92672&#34;&gt;in&lt;/span&gt; elements:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        attribute &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; element&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;get(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;alt&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt;(attribute&lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;or&lt;/span&gt; attribute&lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            print(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            print(element)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            print(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;- has no alt&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This is a fairly simple example, but you can see that we can create adhoc scripts for a specific purpose with very little code by using existing libraries.&lt;/p&gt;
&lt;p&gt;Code for this example can be &lt;a href=&#34;https://github.com/eviltester/seo-tooling/tree/main/adhoc/iframes&#34;&gt;found on Github&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;conclusion&#34;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;It doesn&amp;rsquo;t take much Python to write a script that can add a lot of value.&lt;/p&gt;
&lt;p&gt;Python is frequently used in SEO and there are a lot of helper libraries available.&lt;/p&gt;
&lt;p&gt;As one of the most popular programming languages around, learning Python is a transferable skill for other roles and activities.&lt;/p&gt;
&lt;p&gt;I have some Python SEO Tooling examples in &lt;a href=&#34;https://github.com/eviltester/seo-tooling&#34;&gt;this repository on Github&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I have also released some tools written in Python, using &lt;a href=&#34;https://streamlit.io/&#34;&gt;Streamlit&lt;/a&gt; to build the GUI:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://talotics.com/apps/adhoc-web-scraper/adhoc-page-scraper/&#34;&gt;Adhoc Web Page Scraper&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://talotics.com/apps/domain-technical-audit/web-technical-audit-tool/&#34;&gt;Technical Domain Audit&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>Tweet To Image WebSites</title>
      <link>https://talotics.com/post/tooling/tweet-to-image-web-sites/</link>
      <pubDate>Sat, 13 Nov 2021 11:00:36 UTC</pubDate>
      
      <guid>https://talotics.com/post/tooling/tweet-to-image-web-sites/</guid>
      <description>&lt;p&gt;Looking for a list of websites which will convert tweets to images? Look no further, we&amp;rsquo;ve found the best free web apps for you.&lt;/p&gt;
&lt;p&gt;I could screenshot the tweets, but sometimes I want to have someone else do the work for me. There are many apps and paid services that can help convert tweets to images but the following are the best free applications we&amp;rsquo;ve found and all of them are web applications so you don&amp;rsquo;t need to download anything to your mobile phone.&lt;/p&gt;
&lt;p&gt;All of the applications can be used without a login and do not access your Twitter account or data in any way.&lt;/p&gt;
&lt;h2 id=&#34;tweet-image&#34;&gt;Tweet Image&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://tweet-image.glitch.me/&#34;&gt;Tweet Image&lt;/a&gt; is an &lt;a href=&#34;https://github.com/ozgrozer/tweet-image&#34;&gt;open source tool&lt;/a&gt; created by &lt;a href=&#34;https://twitter.com/ozgrozer&#34;&gt;Ozgur Ozer&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Simply paste in the tweet URL, configure the settings and it will generate an image to download as &lt;code&gt;png&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://talotics.com/images/tools/tweet-to-image/tweet-image-config.png&#34; alt=&#34;Tweet Image Config&#34;&gt;&lt;/p&gt;
&lt;p&gt;The light theme is a white background, the dark theme is a black background. You can configure the width of the final image, show or hide any embedded image and if it is part of thread you can show part of the thread in the image as well.&lt;/p&gt;
&lt;p&gt;You can use Tweet Image free online at &lt;a href=&#34;https://tweet-image.glitch.me/&#34;&gt;tweet-image.glitch.me&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://talotics.com/images/tools/tweet-to-image/tweet-image-output.png&#34; alt=&#34;Tweet Image Output&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;twipix&#34;&gt;TwiPix&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://twipix.co&#34;&gt;twipix.co&lt;/a&gt; created by &lt;a href=&#34;https://twitter.com/iqbal_honnur&#34;&gt;Iqbal Honnur&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;After pasting in the URL you can configure the options and click the [Generate Image] button.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://talotics.com/images/tools/tweet-to-image/twipix-image-config.png&#34; alt=&#34;Twipix Image Config&#34;&gt;&lt;/p&gt;
&lt;p&gt;You can choose a background colour for the surrounding padding, or add a background image and have granular control over the data that is added e.g. time, likes, retweets.&lt;/p&gt;
&lt;p&gt;If you want to then you can add the verified symbol to someone&amp;rsquo;s name even if they are not verified.&lt;/p&gt;
&lt;p&gt;There is a light and dark theme, and transparent themes to allow the background colour or image to fill the full image.&lt;/p&gt;
&lt;p&gt;The only niggle is that each click of Generate Image wipes out the settings so you have to paste the URL ad configure the settings each time.&lt;/p&gt;
&lt;p&gt;The generated image is a &lt;code&gt;.jpeg&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;You can use &lt;a href=&#34;https://twipix.co&#34;&gt;twipix.co&lt;/a&gt; free online.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://talotics.com/images/tools/tweet-to-image/twipix-image-output.jpeg&#34; alt=&#34;Twipix Image Output&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;twimage&#34;&gt;Twimage&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://twimage.vercel.app/&#34;&gt;Twimage&lt;/a&gt; created by &lt;a href=&#34;https://twitter.com/drkPrns&#34;&gt;Prince&lt;/a&gt; is an &lt;a href=&#34;https://github.com/drkPrince/tweet-to-image&#34;&gt;open source tool&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://talotics.com/images/tools/tweet-to-image/twimage-image-config.png&#34; alt=&#34;Twimage Image Config&#34;&gt;&lt;/p&gt;
&lt;p&gt;Paste in the URL of the tweet you want to convert, then configure the elements to show in the image: source (e.g. Twitter Web App), Time and the Metrics (likes, retweets). The background colours are gradients and the tweet background is transparent so the gradient spans the full image.&lt;/p&gt;
&lt;p&gt;The size control is relative to the image frame to make it larger or smaller within the frame, and the image sizing is the size you see on the page so you can resize the page to change the shape of the image before saving.&lt;/p&gt;
&lt;p&gt;The image can be saved as &lt;code&gt;png&lt;/code&gt;, &lt;code&gt;jpeg&lt;/code&gt; or &lt;code&gt;svg&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Sometimes the size can be a little tricky to control so I crop it after downloading.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://talotics.com/images/tools/tweet-to-image/twimage-image-output.png&#34; alt=&#34;Twimage Image Output&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;poetso&#34;&gt;Poet.so&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://poet.so&#34;&gt;Poet.so&lt;/a&gt; is fast and simple.&lt;/p&gt;
&lt;p&gt;The images vary in size based on the tweet so they are not really designed for instagram, you might have to do some editing if you want to share them on social. However, because of their sizing they are perfect for sharing on a web site.&lt;/p&gt;
&lt;p&gt;Options are primarily around backgrounds, and you can save the image as png.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://talotics.com/images/tools/tweet-to-image/poet-so-config.png&#34; alt=&#34;Poet so Config&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;tweetpik&#34;&gt;TweetPik&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://tweetpik.com/#app&#34;&gt;TweetPick&lt;/a&gt; the free plan for TweetPik will create watermarked images. But they can be sized for Instagram posts, or to fit the content.&lt;/p&gt;
&lt;p&gt;You can also configure if a verified icon is shown, the time of the post, source of the post and counts of the likes, retweets and replies.&lt;/p&gt;
&lt;p&gt;The watermark can be removed by signing up for a paid plan.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://talotics.com/images/tools/tweet-to-image/tweetpik-image-output.png&#34; alt=&#34;Tweetpik Image Output&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;easy-access&#34;&gt;Easy Access&lt;/h2&gt;
&lt;p&gt;To make these tools easier to access. We&amp;rsquo;ve added them all in the tweet actions drop down in &lt;a href=&#34;https://chatterscan.com&#34;&gt;ChatterScan.com&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;When you click the link to the tool, the url for the tweet is copied into the clipboard and the tool is opened in a new window, ready for pasting the URL and configuring the image.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://chatterscan.com&#34;&gt;&lt;img src=&#34;https://talotics.com/images/tools/tweet-to-image/chatterscan-menu.png&#34; alt=&#34;Chatterscan Menu&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;additional-tools&#34;&gt;Additional Tools&lt;/h2&gt;
&lt;p&gt;Since we created this list, a few more tools were brought to my attention:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://10015.io/tools/tweet-to-image-converter&#34;&gt;10015.io&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;This is part of a large collection of tools, but because of the number of ads on the page, the actual tweet amendment frame is a little small making it hard to use.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://tweetlet.net/&#34;&gt;tweetlet.net&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Tweetlet.net is simple and fast, making it a good alternative to try - it is very similar to the functionality of poet.so&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>Use The Adsense Search Term Report To Check Your Keyword Configuration</title>
      <link>https://talotics.com/post/ads/google-ads-search-term-report/</link>
      <pubDate>Sat, 09 Oct 2021 07:16:08 UTC</pubDate>
      
      <guid>https://talotics.com/post/ads/google-ads-search-term-report/</guid>
      <description>&lt;p&gt;One of the most important reports in Google Ads is the Search Terms report, this helps you check that your keyword configuration is setup correctly.&lt;/p&gt;
&lt;h2 id=&#34;importance-of-adsense-search-terms-report&#34;&gt;Importance of Adsense Search Terms Report&lt;/h2&gt;
&lt;p&gt;The most important reports I visit in Google Ads is the Search Terms report. I check this daily if I&amp;rsquo;ve made any changes to the keywords or ad setup:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://talotics.com/images/adsense/search-term-report.png&#34; alt=&#34;Search Term Report&#34;&gt;&lt;/p&gt;
&lt;p&gt;This is where you can see the exact search results that are matching for your ads, and the simplest way to boost your ad efficiency is to make sure that you only match terms that are relevant.&lt;/p&gt;
&lt;p&gt;This is particularly important if you are using &lt;code&gt;phrase match&lt;/code&gt;, &lt;code&gt;broad match&lt;/code&gt; or &lt;code&gt;dynamic ads&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;When I experimented with &amp;lsquo;broad match&amp;rsquo; for some keywords, I used the Search Terms Report to check that all the searches we were matching were appropriate for the brand. Most were not, for some brands and products broad matching does not work as a configuration, phrase match however worked well.&lt;/p&gt;
&lt;p&gt;I ended a &amp;lsquo;broad match&amp;rsquo; A/B test early because of the results in the Search Term Report, the ads were simply not showing up against the most appropriate search terms. The report helped me catch that within a day of reconfiguring the keywords.&lt;/p&gt;
&lt;h2 id=&#34;fixing-adsense-matching-wrong-search-terms&#34;&gt;Fixing Adsense Matching Wrong Search Terms&lt;/h2&gt;
&lt;p&gt;If you are seeing search results you don&amp;rsquo;t want then use the Negative Keywords list:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://talotics.com/images/adsense/negative-keywords.png&#34; alt=&#34;Negative Keywords&#34;&gt;&lt;/p&gt;
&lt;p&gt;Block those keywords from your ads, or amend the broad matching back to a phrase match to experiment what works best for your searches.&lt;/p&gt;
&lt;p&gt;Google Ads requires a lot of experimentation and tweaking to get the most out of it, but a quick win is to keep on top of the searches you are matching to make sure you are not hitting search results that are not relevant.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Removing NoFollow Links From Medium Blog Post</title>
      <link>https://talotics.com/post/blogging/nofollow-links-on-medium/</link>
      <pubDate>Fri, 08 Oct 2021 07:16:08 UTC</pubDate>
      
      <guid>https://talotics.com/post/blogging/nofollow-links-on-medium/</guid>
      <description>&lt;p&gt;Medium render all links as &amp;rsquo;nofollow&amp;rsquo;, so if you are using it for syndication to get page rank that might not work. If you decide to migrate medium posts then be careful about the link rel tags. This post describes some ways to remove the rel tags and why you should.&lt;/p&gt;
&lt;p&gt;I was working through some client blog posts and noticed that they had a lot of links in blog posts which were marked as &amp;rsquo;nofollow&#39;.&lt;/p&gt;
&lt;p&gt;The client is using Ghost and Ghost doesn&amp;rsquo;t seem to have a feature to create &amp;rsquo;nofollow&amp;rsquo; links.&lt;/p&gt;
&lt;p&gt;I needed to work out:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Why?&lt;/li&gt;
&lt;li&gt;How&amp;hellip;
&lt;ul&gt;
&lt;li&gt;did they do this?&lt;/li&gt;
&lt;li&gt;can I amend this?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;But first, what are NoFollow Links?&lt;/p&gt;
&lt;h2 id=&#34;what-are-nofollow-links&#34;&gt;What Are NoFollow Links?&lt;/h2&gt;
&lt;p&gt;A &amp;rsquo;nofollow&amp;rsquo; link is an anchor tag which has the &lt;code&gt;rel&lt;/code&gt; attribute value &lt;code&gt;nofollow&lt;/code&gt; e.g.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;lt;a href=&amp;#34;/&amp;#34; target=&amp;#34;_blank&amp;#34; rel=&amp;#34;nofollow&amp;#34;&amp;gt;Digital Marketing&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Google introduced the &amp;rsquo;nofollow&amp;rsquo; attribute to help site owners handle spam and comment links.&lt;/p&gt;
&lt;p&gt;The &amp;rsquo;nofollow&amp;rsquo; attribute would tell search engines that the link is not one that the site owner endorses and they shouldn&amp;rsquo;t follow it.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://developers.google.com/search/blog/2019/09/evolving-nofollow-new-ways-to-identify&#34;&gt;This blog statement from Google in 2019&lt;/a&gt; says that:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;When nofollow was introduced, Google would not count any link marked this way as a signal to use within our search algorithms&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;So orginally, links were not followed and didn&amp;rsquo;t provide any backlink benefit to the linked site.&lt;/p&gt;
&lt;p&gt;Now they are used as a &amp;lsquo;hint&amp;rsquo;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;treated as hints about which links to consider or exclude within Search. We&amp;rsquo;ll use these hints—along with other signals—as a way to better understand how to appropriately analyze and use links within our systems.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;This means that &amp;rsquo;nofollow&amp;rsquo; might add some value, but most probably won&amp;rsquo;t because they are still not used for ranking:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;We&amp;rsquo;ll generally treat them as we did with nofollow before and not consider them for ranking purposes.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Find the &lt;a href=&#34;https://developers.google.com/search/docs/advanced/guidelines/qualify-outbound-links&#34;&gt;updated guidelines from Google for rel attributes on outbound links here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Ideally we syndicate content to gain backlinks, so that our site ranks higher as a result. &amp;rsquo;nofollow&amp;rsquo; means the backlink won&amp;rsquo;t improve our page ranking.&lt;/p&gt;
&lt;p&gt;A similar tag that Google introduced is the &amp;lsquo;ugc&amp;rsquo; tag, this means &amp;lsquo;user generated content&amp;rsquo;. This seems to have a similar effect to the &amp;rsquo;nofollow&amp;rsquo;. You can find &lt;a href=&#34;https://developers.google.com/search/docs/advanced/guidelines/qualify-outbound-links&#34;&gt;Google&amp;rsquo;s documentation on rel tags here&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;how-did-they-do-this&#34;&gt;How did they do this?&lt;/h2&gt;
&lt;p&gt;It turns out that &amp;rsquo;they&amp;rsquo; didn&amp;rsquo;t do this. My client was hosting their blog on Medium, and Medium does this.&lt;/p&gt;
&lt;p&gt;All links on medium are set to &amp;rsquo;nofollow&amp;rsquo;, which basically means people are not getting any backlink authority from Medium, unless of course Google make an exception for Medium&amp;hellip; but that seems unlikely.&lt;/p&gt;
&lt;p&gt;This does mean that hosting your blog on Medium, even under a subdomain might not be adding the SEO benefits that you expect.&lt;/p&gt;
&lt;p&gt;I have syndicated content to Medium to gain backlinks back to my site, but I now view Medium as an &amp;lsquo;attention&amp;rsquo; backlink rather than an SEO backlink.&lt;/p&gt;
&lt;p&gt;By posting on Medium I&amp;rsquo;m gaining another opportunity to get someone&amp;rsquo;s attention, but I&amp;rsquo;m not getting any SEO benefit from the backlink to help me with ranking. Sometimes, that&amp;rsquo;s a good enough reason for syndicating content, we just have to be aware of the details and factor that into our syndication strategy.&lt;/p&gt;
&lt;h2 id=&#34;how-can-i-amend-this&#34;&gt;How can I amend this?&lt;/h2&gt;
&lt;p&gt;If I&amp;rsquo;m working with a page on Medium that I want to migrate to another site via a copy and paste into a rich text editor, I need to remove all the &amp;rsquo;nofollow&amp;rsquo; attributes prior to copying.&lt;/p&gt;
&lt;p&gt;I can remove all the &amp;rsquo;nofollow&amp;rsquo; and &amp;lsquo;ugc&amp;rsquo; attributes by running the following code from the JavaScript console:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;for(elem of document.getElementsByTagName(&amp;#34;a&amp;#34;))
     {elem.rel=elem.rel.replace(&amp;#34;nofollow&amp;#34;,&amp;#34;&amp;#34;).replace(&amp;#34;ugc&amp;#34;.&amp;#34;&amp;#34;)
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Then if I copy and paste the content, the rel tag will not contain &amp;rsquo;nofollow&amp;rsquo; or &amp;lsquo;ugc&amp;rsquo;&lt;/p&gt;
&lt;p&gt;Or I could remove the &amp;lsquo;rel&amp;rsquo; attribute entirely:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;for(elem of document.getElementsByTagName(&amp;#34;a&amp;#34;))
    {elem.removeAttribute(&amp;#34;rel&amp;#34;)}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This might be the simplest option.&lt;/p&gt;
&lt;p&gt;I could also do this if I find any nofollow links on my client site by looking at the public or preview page, removing the &amp;lsquo;rel&amp;rsquo; nofollow content, and then copy and pasting it back into the CMS.&lt;/p&gt;
&lt;h2 id=&#34;how-can-i-find-nofollow-links&#34;&gt;How can I find nofollow links?&lt;/h2&gt;
&lt;p&gt;The &lt;a href=&#34;https://chrome.google.com/webstore/detail/seo-minion/giihipjfimkajhlcilipnjeohabimjhi?hl=en&#34;&gt;SEO Minion&lt;/a&gt; chrome plugin does a good job of identifying the &amp;rsquo;nofollow&amp;rsquo; links on a page that you are viewing.&lt;/p&gt;
&lt;p&gt;So if you are manually auditing your site, add SEO Minion, and a checklist item to examine the &amp;rsquo;nofollow&amp;rsquo; links.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>How to use Racket Strategically</title>
      <link>https://talotics.com/post/racket/build-and-repurpose-racket-content/</link>
      <pubDate>Mon, 14 Jun 2021 08:16:08 UTC</pubDate>
      
      <guid>https://talotics.com/post/racket/build-and-repurpose-racket-content/</guid>
      <description>&lt;p&gt;Racket is a new &amp;lsquo;socal network&amp;rsquo;, it allows you to record short audio posts up to 9 minutes long without the extra work involved in setting up a podcast. The social part is listening, liking, sharing, taking part in &amp;lsquo;community&amp;rsquo; audio threads (called volleys) and messaging other users&lt;/p&gt;
&lt;p&gt;At the time of writing (June 2021) Racket is still a &amp;lsquo;beta&amp;rsquo; or &amp;lsquo;closed&amp;rsquo; application.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Register to secure your handle&lt;/li&gt;
&lt;li&gt;Get 3 followers in order to &amp;lsquo;use&amp;rsquo; racket&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The easiest way to get 3 followers is to share this on social media, or start following people in the hope they follow you back.&lt;/p&gt;
&lt;h2 id=&#34;why-join-racket&#34;&gt;Why Join Racket?&lt;/h2&gt;
&lt;p&gt;Why join any new social network?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;to secure your handle so that you have a consistent brand presence on all platforms&lt;/li&gt;
&lt;li&gt;to experiment&lt;/li&gt;
&lt;li&gt;because you don&amp;rsquo;t know how well it will do in the future&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;what-new-content-opportunities-does-racket-open-up&#34;&gt;What New Content Opportunities does Racket Open Up?&lt;/h2&gt;
&lt;p&gt;Another reason for joining is&amp;hellip; what does it allow you to do that you can&amp;rsquo;t do now?&lt;/p&gt;
&lt;p&gt;Creating audio content and releasing it live can be quite hard.&lt;/p&gt;
&lt;p&gt;If you create audio content, where do you host it?&lt;/p&gt;
&lt;p&gt;Does anyone really use audio content on Twitter, Linkedin, Instagram etc. - these are primarily visual platforms.&lt;/p&gt;
&lt;p&gt;Podcasts require hosting and are little more formal, which more expectations of a &amp;lsquo;show&amp;rsquo;.&lt;/p&gt;
&lt;p&gt;Racket allows you to record short audio broadcasts, with little preparation and host them on a site at no cost.&lt;/p&gt;
&lt;p&gt;You could:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;view it as free audio hosting.&lt;/li&gt;
&lt;li&gt;use it to send audio messages to yourself as a todo list if you wanted&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;what-technical-capabilities-does-racket-offer&#34;&gt;What Technical Capabilities Does Racket Offer?&lt;/h2&gt;
&lt;p&gt;When I&amp;rsquo;m evaluating new sites and tools I like to look at the technical capabilities, because this give me ideas about repurposing and adding the site into my existing content strategies.&lt;/p&gt;
&lt;p&gt;Racket offers the following technical features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;recording up to 9 minute audio, through a browser&lt;/li&gt;
&lt;li&gt;convering the audio to mp3 and hosting on Amazon S3&lt;/li&gt;
&lt;li&gt;auto transcriptions of the audio to text&lt;/li&gt;
&lt;li&gt;providing each audio with &amp;lsquo;page&amp;rsquo; to promote and link to&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Given those capabilities, what repurposing opportunities do we have?&lt;/p&gt;
&lt;h2 id=&#34;repurposing-opportunities-with-racket&#34;&gt;Repurposing opportunities with Racket&lt;/h2&gt;
&lt;p&gt;What can we repurpose?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The transcript&lt;/li&gt;
&lt;li&gt;The mp3&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;How can we repurpose? Copy the Transcript and&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;use it as the basis for a blog post&lt;/li&gt;
&lt;li&gt;use it as a social media post, instagram, facebook, linkedin, etc.&lt;/li&gt;
&lt;li&gt;use it as a twitter thread or tweetstorm&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What could we do with the mp3?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Download the audio and convert it into an Audiogram video for other social sites e.g using &lt;a href=&#34;https://getaudiogram.com/&#34;&gt;getaudiogram.com&lt;/a&gt;, or edit into a video using invideo, wave.video or other video creation tool&lt;/li&gt;
&lt;li&gt;Combine a bunch of the mp3s into a longer form podcast?&lt;/li&gt;
&lt;li&gt;Combine a bunhc of related mp3s into a longer youtube video?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We have opportunities to repurpose and drive more traffic to the Racket post and try to build up a following on Racket by linking the posts to the Racket post.&lt;/p&gt;
&lt;p&gt;Or we could use racket as base content which we syndicate to our other platforms to grow our blog traffic, or presence on other platforms.&lt;/p&gt;
&lt;h2 id=&#34;racket-repurposing-steps&#34;&gt;Racket Repurposing Steps&lt;/h2&gt;
&lt;p&gt;Prior to doing any repurposing for racket do the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;wait until the automated transcript has been created&lt;/li&gt;
&lt;li&gt;edit the automated transcript &amp;ldquo;Edit my Racket&amp;rdquo; then save changes&lt;/li&gt;
&lt;li&gt;Download the .mp3
&lt;ul&gt;
&lt;li&gt;view source on the racket page,&lt;/li&gt;
&lt;li&gt;search for .mp3,&lt;/li&gt;
&lt;li&gt;open the mp3 in a new window,&lt;/li&gt;
&lt;li&gt;right click and save the file&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;custom thumb?
&lt;ul&gt;
&lt;li&gt;if you added a custom thumbnail image to the racket then you can download it&lt;/li&gt;
&lt;li&gt;&amp;ldquo;Edit my Racket&amp;rdquo; right click on the thumb and download the image&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is within the terms of conditions on the racket site:&lt;/p&gt;
&lt;p&gt;&amp;ldquo;You retain your rights to all User Content you create on the service, and may download, share, post, reuse, and publish the content you create and publish on the service. We retain a license to your User Content content to be able to publish it on the service, allow others to listen to the content you publish, and enable other features to remix, reply to, and share content.&amp;rdquo;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://racket.com/c/terms&#34;&gt;https://racket.com/c/terms&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;At this point you have everything you need to repurpose&lt;/p&gt;
&lt;h2 id=&#34;examples&#34;&gt;Examples&lt;/h2&gt;
&lt;h3 id=&#34;racket-to-audiogram&#34;&gt;Racket to Audiogram&lt;/h3&gt;
&lt;p&gt;I downloaded the &lt;code&gt;.mp3&lt;/code&gt; to my computer, then uploaded it to getaudiogram, picked a segment of audio, then pasted in the text from the racket transcript to create and audiogram very quickly.&lt;/p&gt;
&lt;p&gt;I released it to Facebook, Linkedin and Instagram with links back to my racket profile.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.instagram.com/p/CP_02R2IKtW/&#34;&gt;https://www.instagram.com/p/CP_02R2IKtW/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;racket-to-patreon&#34;&gt;Racket to Patreon&lt;/h3&gt;
&lt;p&gt;I used the transcript as a basis for a very extended Patreon post on the topic.&lt;/p&gt;
&lt;p&gt;This is essentially the blogging strategy but the text was behind the Patreon paywall, rather than a blog.&lt;/p&gt;
&lt;p&gt;I didn&amp;rsquo;t mention the Racket in the Patreon post.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.patreon.com/posts/52370405&#34;&gt;https://www.patreon.com/posts/52370405&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;racket-to-blog&#34;&gt;Racket to Blog&lt;/h3&gt;
&lt;p&gt;I used the transcript as a basis for a slightly extended blog post on the topic.&lt;/p&gt;
&lt;p&gt;I copied the transcript into the blog and added some additional thoughts to round it off and make the blog post have a little more content. I linked to the Racket post to help grow the profile there, but the post could have stood on its own.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.eviltester.com/blog/eviltester/rackets/202106/qa-is-a-process/&#34;&gt;https://www.eviltester.com/blog/eviltester/rackets/202106/qa-is-a-process/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I fully expect that, at a minimum I will create a blog post from each Racket, with additional information.&lt;/p&gt;
&lt;h2 id=&#34;why-so-much-repurposing&#34;&gt;Why so much repurposing?&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Racket is still a very new site, it may not succeed.&lt;/li&gt;
&lt;li&gt;Racket does not support embedding of content.&lt;/li&gt;
&lt;li&gt;Racket is &amp;lsquo;closed&amp;rsquo;, it encourages posting links back to Racket, but racket is not SEO optimised for each post.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;why-try-racket&#34;&gt;Why try racket?&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Easier to get started with than podcasting&lt;/li&gt;
&lt;li&gt;Small number of users, easier to make a splash&lt;/li&gt;
&lt;li&gt;Easy to repurpose small audio files&lt;/li&gt;
&lt;li&gt;Free auto transcripts for repurposing and re-use&lt;/li&gt;
&lt;li&gt;Own your social handle on every platform&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Racket has gamification in the form of &amp;lsquo;scoreboards&amp;rsquo; and leaderboards, so it is easy to sucked into creating content to rise up the leaderboards. If you concentrate on using it strategically as part of your content strategy then I think it makes an interesting new addition. Particularly if you haven&amp;rsquo;t tried audio content before.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>First Be An Influencer</title>
      <link>https://talotics.com/post/influence/first-be-influential/</link>
      <pubDate>Fri, 26 Mar 2021 11:45:36 UTC</pubDate>
      
      <guid>https://talotics.com/post/influence/first-be-influential/</guid>
      <description>&lt;p&gt;The best way to engage with influencers is to first wield influence yourself.&lt;/p&gt;
&lt;h2 id=&#34;influencer-marketing&#34;&gt;Influencer Marketing&lt;/h2&gt;
&lt;p&gt;Influencer Marketing is big business:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Used by Big Business.&lt;/li&gt;
&lt;li&gt;People making money as Influencers.&lt;/li&gt;
&lt;li&gt;Buzzwords used a the big new thing.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Detailed strategies exist for influencers and engaging with influencers on every platform. These are &amp;rsquo;new&amp;rsquo; because without the platform they would not exist.&lt;/p&gt;
&lt;p&gt;Related buzzwords include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Celebrity Endorcement.&lt;/li&gt;
&lt;li&gt;Brand Ambassadors.&lt;/li&gt;
&lt;li&gt;Employee Engagement.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;One of the keys to Influencer Marketing is to be an influencer yourself.&lt;/p&gt;
&lt;p&gt;And do that first.&lt;/p&gt;
&lt;p&gt;Because influencers will see more value in partnering with other influencers.&lt;/p&gt;
&lt;h2 id=&#34;deep-pocket-influencer-marketing&#34;&gt;Deep Pocket Influencer Marketing&lt;/h2&gt;
&lt;p&gt;If you are not an influencer, and you engage in Influencer Marketing then the main thing you are going to offer an influencer is money.&lt;/p&gt;
&lt;p&gt;Without influence, Deep Pockets are required.&lt;/p&gt;
&lt;p&gt;The more influence that you can bring to the relationship initially, the less deep your pockets have to be, because you have a reciprocal promotion relationship.&lt;/p&gt;
&lt;p&gt;Your influence allows to you to promote the influencer as they use their influence to promote you.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Netlify Investigation</title>
      <link>https://talotics.com/post/hosting/netlify-test/</link>
      <pubDate>Wed, 10 Jun 2020 09:00:36 UTC</pubDate>
      
      <guid>https://talotics.com/post/hosting/netlify-test/</guid>
      <description>&lt;p&gt;Continuing experiments with static site hosting. Using Netlify&lt;/p&gt;
&lt;p&gt;I wrote about my experiments with &lt;a href=&#34;https://talotics.com/post/hosting/gitpages-initial/&#34;&gt;GitPages&lt;/a&gt;, but couldn&amp;rsquo;t use it for a site like Talotics or my other sites because it doesn&amp;rsquo;t allow commercial use.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://netlify.com&#34;&gt;Netlify&lt;/a&gt; have a generous free plan that can host up to 300 sites, with 100GB bandwidth. And the sites can be deployed automatically from Github.&lt;/p&gt;
&lt;h2 id=&#34;github&#34;&gt;Github&lt;/h2&gt;
&lt;p&gt;Since I have two repos on github&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;talotics-source, the source of this site&lt;/li&gt;
&lt;li&gt;talotics-public, the generated static html produced by running &lt;code&gt;hugo&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I was using a Github action to ftp the site to my web host.&lt;/p&gt;
&lt;p&gt;I decided to experiment with Netlify as the host.&lt;/p&gt;
&lt;p&gt;Creating a site and hooking it up to Github was fast, and was live in seconds with a &lt;code&gt;netlify.app&lt;/code&gt; domain.&lt;/p&gt;
&lt;p&gt;Netlify can also &amp;lsquo;build&amp;rsquo; the site and deploy the &amp;lsquo;static&amp;rsquo; folder, but I have already configured it with the two repo setup from GitPages which offers more long term flexibility if I choose to move host.&lt;/p&gt;
&lt;h2 id=&#34;custom-domain&#34;&gt;Custom Domain&lt;/h2&gt;
&lt;p&gt;Adding my talotics domain to netlify was fairly simple.&lt;/p&gt;
&lt;p&gt;I went through the process on Netlify, then changed the DNS entries on my main web host.&lt;/p&gt;
&lt;p&gt;This took about 10 minutes to go live.&lt;/p&gt;
&lt;p&gt;Then pressing the button to add the &amp;rsquo;lets encrypt&amp;rsquo; SSL certificate took about another 30 minutes to propagate around the world.&lt;/p&gt;
&lt;h2 id=&#34;http-and-https&#34;&gt;http and https&lt;/h2&gt;
&lt;p&gt;I didn&amp;rsquo;t have to add any extra configuration for https or amend an htaccess file to redirect. Netlify does that automatically.&lt;/p&gt;
&lt;h2 id=&#34;email&#34;&gt;email&lt;/h2&gt;
&lt;p&gt;Netlify doesn&amp;rsquo;t host email, but there are free email services available.&lt;/p&gt;
&lt;p&gt;My old web host offers email forwarding for staged domains i.e. those without hosting. So I added an MX entry for the domain in my old web host to forward the emails to my gmail account.&lt;/p&gt;
&lt;h2 id=&#34;easy&#34;&gt;Easy&lt;/h2&gt;
&lt;p&gt;This was all surprisingly easy.&lt;/p&gt;
&lt;p&gt;The pricing for additional addons would make hosting on a paid plan on netlify more expensive than my current hosting, but I don&amp;rsquo;t think I&amp;rsquo;m going to need any of the additional services.&lt;/p&gt;
&lt;p&gt;I will experiment with this for a while but it does seem like a very easy way to setup a static web site. And having the auto deploy from Github with no additional configuration is a large time saver making it even easier.&lt;/p&gt;
&lt;p&gt;And, if for some reason you didn&amp;rsquo;t want to connect it to Github, it is possible to simply drag and drop HTML files to the netlify config page and deploy that way.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Amend Providing Services on LinkedIn</title>
      <link>https://talotics.com/post/linkedin/providing-services/</link>
      <pubDate>Mon, 08 Jun 2020 16:00:36 UTC</pubDate>
      
      <guid>https://talotics.com/post/linkedin/providing-services/</guid>
      <description>&lt;p&gt;LinkedIn have added a &amp;lsquo;providing services&amp;rsquo; section on your LinkedIn Profile.&lt;/p&gt;
&lt;p&gt;Unfortunately I have never seen the link to create or amend it on my profile.&lt;/p&gt;
&lt;p&gt;But I found out how to do it via a direct link.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;https://www.linkedin.com/in/username/opportunities/service-marketplace/education&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Change username to your linkedin profile name and you should gain access to this section.&lt;/p&gt;
&lt;p&gt;Or just copy and past the following to the end of you profile URL.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/opportunities/service-marketplace/education&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The section is populated with pre-defined &amp;lsquo;services&amp;rsquo; so you may not be able to create a list that exactly matches what you do, but the more features we take advantage of on the social media sites, the more likely we are to get our message across and communicate the value we can add.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>GitPages Hugo Investigation</title>
      <link>https://talotics.com/post/hosting/gitpages-initial/</link>
      <pubDate>Mon, 08 Jun 2020 09:00:36 UTC</pubDate>
      
      <guid>https://talotics.com/post/hosting/gitpages-initial/</guid>
      <description>&lt;p&gt;As an experiment I decided to move my website and apps to github, with a view to hosting them completely on github pages.&lt;/p&gt;
&lt;p&gt;But, after getting the basic functionality working I read in the terms and conditions that GitPages should not be used to host commercial sites.&lt;/p&gt;
&lt;p&gt;So I will create an &amp;lsquo;organisation&amp;rsquo; site on GitPages that is a &amp;lsquo;summary&amp;rsquo; site describing the open source projects hosted on Github and I will use the lessons learned here to do that.&lt;/p&gt;
&lt;p&gt;And I am experimenting with automated ftp from a private repo, so I might still be able to gain value from hosting the generated content on GitHub, even if I don&amp;rsquo;t serve it from GitHub.&lt;/p&gt;
&lt;h2 id=&#34;hugo&#34;&gt;HuGo&lt;/h2&gt;
&lt;p&gt;I primarily use hugo as my website generator and the instructions for configuring Hugo with github pages are here:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://gohugo.io/hosting-and-deployment/hosting-on-github/&#34;&gt;https://gohugo.io/hosting-and-deployment/hosting-on-github/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It is very important, and I didn&amp;rsquo;t understand this at first is that we create two repositories for our main site.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;One for the code of the site&lt;/li&gt;
&lt;li&gt;One for the public html of the site&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The public html site repo is always &lt;code&gt;username.github.io&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;e.g. &lt;code&gt;talotics.github.io&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The code for the site can be anything e.g. taloticswebsite&lt;/p&gt;
&lt;h2 id=&#34;summary-of-steps&#34;&gt;Summary of Steps&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://gohugo.io/hosting-and-deployment/hosting-on-github/#step-by-step-instructions&#34;&gt;https://gohugo.io/hosting-and-deployment/hosting-on-github/#step-by-step-instructions&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;create username.github.io on github&lt;/li&gt;
&lt;li&gt;create a repo for the website hugo code and config e.g. &lt;code&gt;website&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;clone the &lt;code&gt;website&lt;/code&gt; repo&lt;/li&gt;
&lt;li&gt;create and build the hugo project&lt;/li&gt;
&lt;li&gt;delete the &lt;code&gt;public&lt;/code&gt; folder&lt;/li&gt;
&lt;li&gt;commit the hugo project repo&lt;/li&gt;
&lt;li&gt;add the &lt;code&gt;username.github.io&lt;/code&gt; repo as a submmodule&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;git submodule add -b master https://github.com/&amp;lt;USERNAME&amp;gt;/&amp;lt;USERNAME&amp;gt;.github.io.git public
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;i.e.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;git submodule add -b master https://github.com/talotics/talotics.github.io.git public
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;github-desktop&#34;&gt;GitHub Desktop&lt;/h2&gt;
&lt;p&gt;I found that I had to manually add the submodule folder as a repo in github desktop.&lt;/p&gt;
&lt;p&gt;And make sure that I ignore the &lt;code&gt;public&lt;/code&gt; folder in my main project.&lt;/p&gt;
&lt;p&gt;I primarily try to work with the desktop tool.&lt;/p&gt;
&lt;p&gt;But I managed to confuse git slightly by adding files to the public repo before fetching.&lt;/p&gt;
&lt;p&gt;But a &lt;code&gt;git rebase&lt;/code&gt; from the command line in the public folder fixed everything.&lt;/p&gt;
&lt;p&gt;The benefit is that all the content here is generated so a &lt;code&gt;git rebase&lt;/code&gt; doesn&amp;rsquo;t really matter because I can just regenerate.&lt;/p&gt;
&lt;h2 id=&#34;users&#34;&gt;Users&lt;/h2&gt;
&lt;p&gt;Since I already have a main github account.&lt;/p&gt;
&lt;p&gt;I created the Talotics user with my Talotics.com email address.&lt;/p&gt;
&lt;p&gt;Then added my normal github account as a collaborator to the talotics github projects.&lt;/p&gt;
&lt;h2 id=&#34;backup&#34;&gt;Backup&lt;/h2&gt;
&lt;p&gt;At the moment, this is a &amp;lsquo;backup site&amp;rsquo; because&amp;hellip;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;GitHub Pages is not intended for or allowed to be used as a free web hosting service to run your online business,&amp;hellip;&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://help.github.com/en/github/working-with-github-pages/about-github-pages&#34;&gt;https://help.github.com/en/github/working-with-github-pages/about-github-pages&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;pros&#34;&gt;Pros&lt;/h2&gt;
&lt;p&gt;If this works, and if it is reliable then it would potentially cut down on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;hosting costs&lt;/li&gt;
&lt;li&gt;the need to manage SSL certificates (because this would be applied from github)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;cons&#34;&gt;Cons&lt;/h2&gt;
&lt;p&gt;You need a root level site then you need to have an organisation repo e.g. &lt;code&gt;username.github.io&lt;/code&gt;  rather than a project repo, so you would need to create new organisations for every site, which is unsustainable.&lt;/p&gt;
&lt;p&gt;You lose access to the ability to use .htaccess:&lt;/p&gt;
&lt;p&gt;i.e.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;redirect from .htaccess files&lt;/li&gt;
&lt;li&gt;configure site access via .htaccess.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The major downside is that you can&amp;rsquo;t use this as an http server host for commercial organisations. And there doesn&amp;rsquo;t seem to be a pricing level that allows this.&lt;/p&gt;
&lt;h2 id=&#34;actions&#34;&gt;Actions&lt;/h2&gt;
&lt;p&gt;GitHub comes with free actions.&lt;/p&gt;
&lt;p&gt;So I will experiment with an FTP action from a private repo, to see if I can automatically push changes live to my web host when I push the generated site changes to GitHub.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;experiment&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/SamKirkland/FTP-Deploy-Action&#34;&gt;https://github.com/SamKirkland/FTP-Deploy-Action&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I created a &lt;code&gt;.github/workflows/main.yml&lt;/code&gt; file:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;on: push
name: Publish Website
jobs:
  FTP-Deploy-Action:
    name: FTP-Deploy-Action
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2.1.0
        with:
          fetch-depth: 2
      - name: FTP-Deploy-Action
        uses: SamKirkland/FTP-Deploy-Action@3.1.1
        with:
          ftp-server: ${{ secrets.FTP_SERVER }}
          ftp-username: ${{ secrets.FTP_USERNAME }}
          ftp-password: ${{ secrets.FTP_PASSWORD }}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;And setup the secrets through the Github console to see what happens.&lt;/p&gt;
&lt;h2 id=&#34;successful-experiment&#34;&gt;Successful Experiment&lt;/h2&gt;
&lt;p&gt;This worked really well.&lt;/p&gt;
&lt;p&gt;I generate the site and test it locally.&lt;/p&gt;
&lt;p&gt;Commit and push the site source.&lt;/p&gt;
&lt;p&gt;Then I can generate the live version.&lt;/p&gt;
&lt;p&gt;Commit and push that from the github explorer, and it automatically deploys via FTP to the hosting site.&lt;/p&gt;
&lt;p&gt;This seemed faster than doing it locally via FTP. And if anything does go wrong, then I can always do a patch via an FTP locally.&lt;/p&gt;
&lt;p&gt;I will certainly be investigating more Actions on Github to see what else I can automate.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Better Beacon.by Pages</title>
      <link>https://talotics.com/post/leadmagnets/leadmagnets-beacon-workarounds/</link>
      <pubDate>Wed, 06 May 2020 09:40:36 UTC</pubDate>
      
      <guid>https://talotics.com/post/leadmagnets/leadmagnets-beacon-workarounds/</guid>
      <description>&lt;p&gt;I have been experimenting with lead magnets and using Beacon.by to create them. They work really well. And I found that adding a few tweaks to my page made them even better.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://beacon.by?lmref=U4lbQA&#34;&gt;beacon.by&lt;/a&gt; is a simple to use lead magnet generator.&lt;/p&gt;
&lt;p&gt;It helps you create pdfs, which it hosts on Amazon S3, and creates the sign up and opt in forms to drive traffic to your newsletter.&lt;/p&gt;
&lt;p&gt;Here are a few tweaks I made on my pages to make the experience work better for me.&lt;/p&gt;
&lt;h2 id=&#34;redirecting-thank-you&#34;&gt;Redirecting Thank You&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://beacon.by?lmref=U4lbQA&#34;&gt;beacon.by&lt;/a&gt; allows adding a custom domain, so any links it generates look like they are on your site.&lt;/p&gt;
&lt;p&gt;For me, this is only really something I want to do for the &amp;ldquo;Thank You&amp;rdquo; pages. The default message appears on a blank page with little customisation so I redirect the Thank You to a page on my site.&lt;/p&gt;
&lt;p&gt;Rather than create a separate page for each lead magnet I re-use the sign up page.&lt;/p&gt;
&lt;p&gt;I redirect to my landing page url with &lt;code&gt;#thanks&lt;/code&gt; after it.&lt;/p&gt;
&lt;h2 id=&#34;showing-a-thank-you-message&#34;&gt;Showing a Thank You Message&lt;/h2&gt;
&lt;p&gt;In my page HTML I have a hidden thank you message.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;lt;div id=&amp;#34;thankyoumessage&amp;#34; style=&amp;#34;display:none&amp;#34;&amp;gt;
&amp;lt;h2 id=&amp;#34;thanks-for-signing-up&amp;#34;&amp;gt;Thanks for signing up&amp;lt;/h2&amp;gt;
&amp;lt;p&amp;gt;Check your emails. You will receive instructions on how to access your ebook.&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This is hidden by default. So I have a little JavaScript on the page to enable this if the &lt;code&gt;#thanks&lt;/code&gt; is on the URL.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;lt;script&amp;gt;
if(location.hash.substr(1)==&amp;#34;thanks&amp;#34;){
    document.getElementById(&amp;#34;thankyoumessage&amp;#34;).
    style.display=&amp;#34;inline&amp;#34;;
}
&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This basically means, if the url has &lt;code&gt;#thanks&lt;/code&gt; on the end then make the &lt;code&gt;div&lt;/code&gt; with id &lt;code&gt;thankyoumessage&lt;/code&gt; visible.&lt;/p&gt;
&lt;h2 id=&#34;hidden-sign-up-form&#34;&gt;Hidden Sign Up Form&lt;/h2&gt;
&lt;p&gt;On feature that comes with default from &lt;a href=&#34;https://beacon.by?lmref=U4lbQA&#34;&gt;beacon.by&lt;/a&gt; is hiding the signup form when a visitor has recently signed up to the lead magnet and mailing list.&lt;/p&gt;
&lt;p&gt;Under these circumstances I would like to show the &amp;rsquo;thank you&amp;rsquo; message again.&lt;/p&gt;
&lt;p&gt;I do this, by checking for the sign up form in the DOM, and if it is not there then show the thank you message.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;lt;script&amp;gt;
window.setTimeout(function(){
if(!document.querySelector(&amp;#34;div.BN-root&amp;#34;)){
    document.getElementById(&amp;#34;thankyoumessage&amp;#34;).style.display=&amp;#34;inline&amp;#34;;
    }
    },2000);
&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This basically says wait until 2000 milliseconds have passed, then check if we can see the form, if not, then make the thank you message visible.&lt;/p&gt;
&lt;p&gt;There is a risk that the communication between the page and Beacon takes longer than 2 seconds, in which case the message might be displayed. But I view that as fairly low risk.&lt;/p&gt;
&lt;h2 id=&#34;benefits&#34;&gt;Benefits&lt;/h2&gt;
&lt;p&gt;I found that this allows me to create a very simple landing page on my site with an embedded inline form to direct social media traffic to, for lead magnet sign ups.&lt;/p&gt;
&lt;p&gt;With minimal configuration of &lt;a href=&#34;https://beacon.by?lmref=U4lbQA&#34;&gt;beacon.by&lt;/a&gt; and without needing to configure any custom domains.&lt;/p&gt;
&lt;p&gt;As I explore more with &lt;a href=&#34;https://beacon.by?lmref=U4lbQA&#34;&gt;beacon.by&lt;/a&gt; I may well add the custom domains to make the sign up links look more white labelled, but I think people are used to downloading files from CDN type sites so this isn&amp;rsquo;t a priority for me.&lt;/p&gt;
&lt;h2 id=&#34;create-lead-magnets&#34;&gt;Create Lead Magnets&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://beacon.by?lmref=U4lbQA&#34;&gt;beacon.by&lt;/a&gt; has a free plan if you want to create lead magnets easily and collect leads.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m particularly excited by the Video LookBook template which lets you embed videos easily in the lead magnet. I think that a Video LookBook with embedded videos and worksheets should work pretty well for driving traffic.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Are there different types of marketing?</title>
      <link>https://talotics.com/post/contentmarketing/types-of-marketing/</link>
      <pubDate>Wed, 29 Apr 2020 08:00:36 UTC</pubDate>
      
      <guid>https://talotics.com/post/contentmarketing/types-of-marketing/</guid>
      <description>&lt;p&gt;How many types of Marketing are there? Are they unique? How do they interact and help?&lt;/p&gt;
&lt;h2 id=&#34;are-there-really-different-types-of-marketing&#34;&gt;Are there really different types of marketing?&lt;/h2&gt;
&lt;p&gt;I come across many different labels for marketing e.g.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Direct Marketing&lt;/li&gt;
&lt;li&gt;Database Marketing&lt;/li&gt;
&lt;li&gt;Permission Marketing&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There is a lot of overlap between these. And they can lead to each other.&lt;/p&gt;
&lt;p&gt;Direct Marketing can lead to more nuanced funnel based Permission Marketing. Combined with Database Marketing to nuance the message sent directly even further.&lt;/p&gt;
&lt;h2 id=&#34;useful-list-of-types-of-marketing&#34;&gt;Useful list of &amp;rsquo;types&amp;rsquo; of marketing&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://www.marketing-schools.org/types-of-marketing.html&#34;&gt;https://www.marketing-schools.org/types-of-marketing.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;When I look at it, I try to map certain types of marketing on to my approach to spot gaps e.g.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Catalog Marketing&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I don&amp;rsquo;t have. a catalog.&lt;/p&gt;
&lt;p&gt;I do have a web site with lists of products. Could I apply techniques from Catalog marketing to that page?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Could I actually create a Catalog as an &amp;rsquo;ebook&amp;rsquo;, pdf, or slideshare and promote that?&lt;/li&gt;
&lt;li&gt;Could I create a catalog as an animated gif or short video and post to social channels?&lt;/li&gt;
&lt;li&gt;Could I create a playlist on YouTube that contains Catalog style listings?&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;make-your-own-labels&#34;&gt;Make Your Own Labels&lt;/h2&gt;
&lt;p&gt;I find lists of &amp;rsquo;types&amp;rsquo; of marketing useful because I then have to nuance the labels that I apply to my own marketing.&lt;/p&gt;
&lt;p&gt;As an example, I was using the term &amp;lsquo;Channel Marketing&amp;rsquo; to explore the difference between marketing tactics on different Social Media Channels. Rather than always use the generic term of &amp;lsquo;Social Media Marketing&amp;rsquo;.&lt;/p&gt;
&lt;p&gt;But then I learned there is a well used concept called &amp;lsquo;Channel Marketing&amp;rsquo; which means something different. So I now think of it as &amp;lsquo;Social Channel Marketing&amp;rsquo; e.g. the different expectations users have from content on different channels.&lt;/p&gt;
&lt;p&gt;I have a concept which I call &amp;lsquo;Social Feature Marketing&amp;rsquo; which means examining the features of each social media site and building marketing approaches around those features. e.g. Twitter Storms to create a different type of content and interaction, and hashtags in replies on Instagram&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Social Media Marketing&lt;/strong&gt; - generic use of social media&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Social Channel Marketing&lt;/strong&gt; - harnessing the usage approaches of each channel of Social Media and differentiating the approach for each Social Media site&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Social Feature Marketing&lt;/strong&gt; - use of specific features on social media sites to tailor the messaging and reach&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The labels are not &amp;rsquo;types&amp;rsquo; in that you do this, or that.&lt;/p&gt;
&lt;p&gt;But they help explore and categorise nuances which can extend and improve your marketing.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Curate Informational Twitter Content Quickly</title>
      <link>https://talotics.com/post/chatterscan/curate-content-fast/</link>
      <pubDate>Sun, 29 Mar 2020 11:00:36 UTC</pubDate>
      
      <guid>https://talotics.com/post/chatterscan/curate-content-fast/</guid>
      <description>&lt;p&gt;I find the Twitter Web GUI very slow and noisy when trying to find content to curate or learn from. I use ChatterScan instead. This post I show ChatterScan vs the Twitter GUI.&lt;/p&gt;
&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://chatterscan.com&#34;&gt;Chatterscan.com&lt;/a&gt; lets you easily view tweets and reweets that have links in them. Making it fast to curate tweets that point to useful content.&lt;/p&gt;
&lt;p&gt;In this video I show Chatterscan with filters for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Showing Retweets&lt;/li&gt;
&lt;li&gt;Replies Hidden&lt;/li&gt;
&lt;li&gt;Dupes Hidden&lt;/li&gt;
&lt;li&gt;Showing Only Posts With Links&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Compared to using the normal Twitter Client to scroll through the feed and find useful Tweets in amongst the noise.&lt;/p&gt;
&lt;p&gt;Also you&amp;rsquo;ll see my use a Twitter saved search to look for content on LinkedIn.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://chatterscan.com&#34;&gt;Chatterscan.com&lt;/a&gt; is a free Twitter client, and it might help you curate content faster.&lt;/p&gt;
&lt;h2 id=&#34;video&#34;&gt;Video&lt;/h2&gt;
&lt;div class=&#34;video-container&#34;&gt;
    &lt;iframe width=&#34;560&#34; height=&#34;315&#34; src=&#34;https://www.youtube.com/embed/8DYC8_0lMWA&#34; frameborder=&#34;0&#34; allow=&#34;autoplay; encrypted-media&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;div&gt;&lt;p class=&#34;center-text&#34;&gt;&lt;a href=&#34;https://youtu.be/8DYC8_0lMWA&#34; target=&#34;_blank&#34;&gt;Watch on YouTube&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</description>
    </item>
    
  </channel>
</rss>