FastBots: Bygg et tilpasset WordPress XML-nettstedskart for å trene AI-boten din
Martech Zone har tusenvis av artikler, med mange av dem utdaterte. Jeg har jobbet på siden i flere år for å fjerne eller oppdatere hundrevis av artikler, men jeg har fortsatt mange flere. Samtidig vil jeg gjerne trene en bot med naturlig språk med innholdet mitt, men det siste jeg vil gjøre er å trene den på utdaterte artikler.
FastBots er en ChatGPT-drevet botbygger som du i utgangspunktet kan trene ved å bruke nettstedskartet ditt (eller andre alternativer). Jeg trengte et filtrert nettstedskart som inkluderte alle artikler som er endret siden en bestemt dato. I tillegg ønsket jeg å inkludere sidene mine og akronymer (en tilpasset posttype). Jeg ønsket ikke å inkludere arkivsider for kategorier og koder eller ha min hjemmeside siden det også er et arkiv.
Ved å bruke koden jeg oppgir på slutten av denne artikkelen; Jeg bygde en tilpasset WordPress-plugin som lager en tilpasset XML nettstedskart som oppdateres dynamisk hver gang jeg publiserer et innlegg. FastBots har ikke en automatisert omskoleringsmetode når jeg publiserer hver artikkel, men dette er et flott utgangspunkt for å bruke plattformen.
Nettkartet importerer alle lenkene for å trene AI Bot på:
Alle sidene er nå importert, og du kan trene boten din på de aktuelle dataene. Du har også mulighet til å fjerne bestemte sider. FastBots tillot meg også å tilpasse AI-botens merkevarebygging og til og med inkludere en lenke til en relevant artikkel i svaret mitt. Det er også en leadforespørsel innebygd i plattformen.
Plattformen fungerte feilfritt ... du kan gi boten min en prøvetur her:
Start Martech Zonesin Bot, Marty Bygg FastBots AI Bot
Egendefinert XML-nettkart
I stedet for å legge til denne funksjonaliteten til temaet mitt, bygde jeg en egendefinert WordPress plugin for å bygge ut et områdekart. Bare legg til en katalog i plugins-mappen din, og deretter en PHP fil med følgende kode:
<?php
/*
Plugin Name: Bot Sitemap
Description: Dynamically generates an XML sitemap including posts modified since a specific date and updates it when a new article is added.
Version: 1.0
Author: Your Name
*/
// Define the date since when to include modified posts (format: Y-m-d)
$mtz_modified_since_date = '2020-01-01';
// Register the function to update the sitemap when a post is published
add_action('publish_post', 'mtz_update_sitemap_on_publish');
// Function to update the sitemap
function mtz_update_sitemap_on_publish($post_id) {
// Check if the post is not an auto-draft
if (get_post_status($post_id) != 'auto-draft') {
mtz_build_dynamic_sitemap();
}
}
// Main function to build the sitemap
function build_bot_sitemap() {
global $mtz_modified_since_date;
$args = array(
'post_type' => 'post',
'date_query' => array(
'column' => 'post_modified',
'after' => $mtz_modified_since_date
),
'posts_per_page' => -1 // Retrieve all matching posts
);
$postsForSitemap = get_posts($args);
// Fetch all 'acronym' custom post type posts
$acronymPosts = get_posts(array(
'post_type' => 'acronym',
'posts_per_page' => -1,
));
// Fetch all pages except the home page
$pagesForSitemap = get_pages();
$home_page_id = get_option('page_on_front');
$sitemap = '<?xml version="1.0" encoding="UTF-8"?>';
$sitemap .= '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
foreach($postsForSitemap as $post) {
setup_postdata($post);
if ($post->ID != $home_page_id) {
$sitemap .= '<url>'.
'<loc>'. get_permalink($post) .'</loc>'.
'<lastmod>'. get_the_modified_date('c', $post) .'</lastmod>'.
'<changefreq>weekly</changefreq>'.
'</url>';
}
}
foreach($acronymPosts as $post) {
setup_postdata($post);
if ($post->ID != $home_page_id) {
$sitemap .= '<url>'.
'<loc>'. get_permalink($post) .'</loc>'.
'<lastmod>'. get_the_modified_date('c', $post) .'</lastmod>'.
'<changefreq>weekly</changefreq>'.
'</url>';
}
}
foreach($pagesForSitemap as $page) {
setup_postdata($page);
if ($page->ID != $home_page_id) {
$sitemap .= '<url>'.
'<loc>'. get_permalink($page) .'</loc>'.
'<lastmod>'. get_the_modified_date('c', $page) .'</lastmod>'.
'<changefreq>monthly</changefreq>'.
'</url>';
}
}
wp_reset_postdata();
$sitemap .= '</urlset>';
file_put_contents(get_home_path().'bot-sitemap.xml', $sitemap);
}
// Activate the initial sitemap build on plugin activation
register_activation_hook(__FILE__, 'build_bot_sitemap');