
Security News
The Changelog Podcast: Practical Steps to Stay Safe on npm
Learn the essential steps every developer should take to stay secure on npm and reduce exposure to supply chain attacks.
github.com/aminrashidbeigi/sitemap-generator
Advanced tools
A high-performance sitemap-generator Go module which is a comprehensive tool to create and manage sitemap_index and sitemap files in a beautiful way. :)
Please see http://www.sitemaps.org/ for description of sitemap contents.
Use go get:
go get github.com/sabloger/sitemap-generator
You can use the module in either Single-file sitemap or Multiple-files sitemaps with a sitemap_index file.
package main
import (
"fmt"
"github.com/sabloger/sitemap-generator/smg"
"log"
"time"
)
func main() {
now := time.Now().UTC()
sm := smg.NewSitemap(true) // The argument is PrettyPrint which must be set on initializing
sm.SetName("single_sitemap") // Optional
sm.SetHostname("https://www.example.com")
sm.SetOutputPath("./some/path")
sm.SetLastMod(&now)
sm.SetCompress(false) // Default is true
// Adding URL items
err := sm.Add(&smg.SitemapLoc{
Loc: "some/uri.html",
LastMod: &now,
ChangeFreq: smg.Always,
Priority: 0.4,
})
if err != nil {
log.Fatal("Unable to add SitemapLoc:", err)
}
// Save func saves the xml files and returns more than one filename in case of split large files.
filenames, err := sm.Save()
if err != nil {
log.Fatal("Unable to Save Sitemap:", err)
}
for i, filename := range filenames {
fmt.Println("file no.", i+1, filename)
}
}
single_sitemap.xml will look like:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https:/www.example.com/some/uri.html</loc>
<lastmod>2022-02-12T16:29:46.45013Z</lastmod>
<changefreq>always</changefreq>
<priority>0.4</priority>
</url>
</urlset>
package main
import (
"fmt"
"github.com/sabloger/sitemap-generator/smg"
"log"
"time"
)
func main() {
now := time.Now().UTC()
smi := smg.NewSitemapIndex(true)
smi.SetCompress(false)
smi.SetSitemapIndexName("an_optional_name_for_sitemap_index")
smi.SetHostname("https://www.example.com")
smi.SetOutputPath("./sitemap_index_example/")
smi.SetServerURI("/sitemaps/") // Optional
smBlog := smi.NewSitemap()
smBlog.SetName("blog_sitemap")
smBlog.SetLastMod(&now)
err := smBlog.Add(&smg.SitemapLoc{
Loc: "blog/post/1231",
LastMod: &now,
ChangeFreq: smg.Weekly,
Priority: 0.8,
})
if err != nil {
log.Fatal("Unable to add SitemapLoc:", err)
}
smNews := smi.NewSitemap()
smNews.SetLastMod(&now)
err = smNews.Add(&smg.SitemapLoc{
Loc: "news/2021-01-05/a-news-page",
LastMod: &now,
ChangeFreq: smg.Weekly,
Priority: 1,
})
if err != nil {
log.Fatal("Unable to add SitemapLoc:", err)
}
filename, err := smi.Save()
if err != nil {
log.Fatal("Unable to Save Sitemap:", err)
}
// Pings the Search engines. default Google and Bing, But you can add any other ping URL's
// in this format: http://www.google.com/webmasters/tools/ping?sitemap=%s
smi.PingSearchEngines()
fmt.Println("sitemap_index file:", filename)
}
the output directory will be like this:
sitemap_index_example
├── an_optional_name_for_sitemap_index.xml
├── blog_sitemap.xml
└── sitemap2.xml
an_optional_name_for_sitemap_index.xml will look like:
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap>
<loc>https:/www.example.com/sitemaps/blog_sitemap.xml</loc>
<lastmod>2022-02-12T18:38:06.671183Z</lastmod>
</sitemap>
<sitemap>
<loc>https:/www.example.com/sitemaps/sitemap2.xml</loc>
<lastmod>2022-02-12T18:38:06.671183Z</lastmod>
</sitemap>
</sitemapindex>
It is possible to write the Sitemap content into a custom output using this method:
// Finalize must be called to make the content closed.
sm.Finalize()
// Needs an io.Writer interface
buf := bytes.Buffer{}
n, err = sm.WriteTo(&buf)
GoDoc documentation: https://pkg.go.dev/github.com/sabloger/sitemap-generator
Git repository: https://github.com/sabloger/sitemap-generator
MIT
FAQs
Unknown package
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Learn the essential steps every developer should take to stay secure on npm and reduce exposure to supply chain attacks.

Security News
Experts push back on new claims about AI-driven ransomware, warning that hype and sponsored research are distorting how the threat is understood.

Security News
Ruby's creator Matz assumes control of RubyGems and Bundler repositories while former maintainers agree to step back and transfer all rights to end the dispute.