# SEO Plugin for Pelican 🇫🇷
[![Build Status](https://img.shields.io/github/actions/workflow/status/pelican-plugins/seo/main.yml?branch=main)](https://github.com/pelican-plugins/seo/actions)
[![PyPI Version](https://img.shields.io/pypi/v/pelican-seo)](https://pypi.org/project/pelican-seo/)
[![Downloads](https://img.shields.io/pypi/dm/pelican-seo)](https://pypi.org/project/pelican-seo/)
![License](https://img.shields.io/pypi/l/pelican-seo?color=blue)
This plugin helps you improve your Pelican site SEO (Search Engine Optimization) to reach the top positions on search engines. To see what this SEO plugin can do for you, visit the [Usage](#usage) section.
| Author | GitHub |
| :-------------: | :-------------------------------: |
| Maëva Brunelles | https://github.com/MaevaBrunelles |
## Why Use This Plugin?
If:
* you are not familiar with SEO
* you want an easy way to apply SEO fundamentals
* you need help improving the SEO of your Pelican site
… then this plugin is for you!
SEO comes with two features to help you:
* [SEO Report](#seo-report) — Generates an HTML report based on article analysis, indicating what is good, what could be improved, and what is problematic. Useful if you want to improve the ranking of your articles.
* [SEO Enhancer](#seo-enhancer) — Generates robot indexing guidelines, HTML tags, structured data, and if enabled, Open Graph tags. Useful if you want to control how your site appears in search engine results and in social medias.
## Installation
This plugin can be installed via:
python -m pip install pelican-seo
As long as you have not explicitly added a `PLUGINS` setting to your Pelican settings file, then the newly-installed plugin should be automatically detected and enabled. Otherwise, you must add `seo` to your existing `PLUGINS` list. For more information, please see the [How to Use Plugins](https://docs.getpelican.com/en/latest/plugins.html#how-to-use-plugins) documentation.
## Requirements
The above installation step should automatically install Beautiful Soup 4, which the SEO plugin requires. The following command will manually install this dependency:
python -m pip install beautifulsoup4
Please keep in mind that the `SITEURL` Pelican setting must be defined in order for this plugin to function as intended.
## Usage
You can enable/disable parent features by setting them to `True` or `False` in your Pelican settings.
The **default configuration is as stated below**:
```python
# pelicanconf.py or publishconf.py
SEO_REPORT = True # SEO report is enabled by default
SEO_ENHANCER = False # SEO enhancer is disabled by default
SEO_ENHANCER_OPEN_GRAPH = False # Subfeature of SEO enhancer
SEO_ENHANCER_TWITTER_CARDS = False # Subfeature of SEO enhancer
```
Open Graph and Twitter Cards options are part of the SEO enhancer feature, and may be enabled to generate social tags.
Please note that :
* `SEO_ENHANCER` setting must be enabled in order to use this feature
* `SEO_ENHANCER_OPEN_GRAPH` setting must be enabled in order to use
`SEO_ENHANCER_TWITTER_CARDS` (see [why](#twitter-cards))
The SEO plugin runs when you [generate your site](https://docs.getpelican.com/en/stable/quickstart.html#generate-your-site). If you want to see SEO logging in your console output, add the `--verbose` option to your `pelican` invocation:
```bash
$ pelican content --verbose
-> SEO plugin initialized
-> SEO plugin - SEO Report: seo_report.html file created
-> SEO plugin - SEO Enhancement: robots.txt file created
-> Writing /output/my-first-review.html
-> SEO plugin - SEO Enhancement: Done for /output/my-first-review.html
Done: Processed 1 articles, 0 drafts, 0 pages, 0 hidden pages and 0 draft pages in 0.17 seconds.
```
### SEO Report
The SEO plugin analyzes all your articles and pages and generate an SEO HTML report in your Pelican project root: `seo-report.html`
Example:
![SEO report example](docs/seo-report-example.png)
You can set limits for article and page analysis in the plugin settings.py. By default, it's set up to 10 articles and 10 pages.
```python
SEO_ARTICLES_LIMIT = 10
SEO_PAGES_LIMIT = 10
```
The SEO analysis begins with the most recent articles/pages, according to the `date` metadata, and is focused on the following criteria:
* Page title: `<title></title>`
* Page description: `<meta name="description" content="" />`
* Heading content: `<h1></h1>`
* Internal site links: `<a href="SITEURL/..."></a>`
The above information is defined in your source content, such as the following example Markdown file:
```markdown
Title: Page Title
Description: Page Description
# Heading Content
[Internal link](https://example.com/about.html)
```
Once the SEO analysis has generated a report, optimize your articles and pages according to the report’s recommendations, and then repeat the analysis to see whether everything comes up green.
### SEO Enhancer
The SEO Enhancer module generates the following for you:
* robots file
* HTML enhancements
* structured data
* Open Graph tags (if enabled)
* Twitter Cards tags (if enabled)
#### Robots.txt File
The generated `robots.txt` file indicates to search engines which pages they should index. By default, search engine bots are allowed to crawl and index all pages.
```
User-agent: *
```
To disallow crawling and/or forbid indexing for a given article/page, add the following to your article/page metadata:
```
Disallow: True
Noindex: True
```
A `robots.txt` file will be generated at your web site root, as per the `OUTPUT_PATH` setting (Pelican’s default is `output/`).
```
# robots.txt
User-agent: *
Disallow: example.html
Noindex: other-example.html
```
#### Canonical URL Tag
The SEO Enhancer automatically adds canonical link metadata to `<head>` tags in order to avoid presenting duplicate content to search engines:
1. If you have declared the `:external_canonical:` metadata field, the SEO Enhancer will use it. It expects a URL, e.g. `https://www.example.com/external_canonical_article.html`. It can be used if you syndicate content from third parties or want to include your own posts that are already hosted elsewhere. The SEO Enhancer will prefer `:external_canonical:` over the `:save_as:` metadata field.
2. If you have declared the `:save_as:` metadata field, the SEO Enhancer will use it to construct a canonical link. However if the `:external_canonical:` is set, the `:save_as:` field will be ignored.
3. If both `:external_canonical:` or `:save_as:` metadata fields are absent, it will construct the canonical link using the output filename created.
Example:
```
# article.md
External_Canonical: https://www.example.com/external_canonical_article.html
# article.rst
:external_canonical: https://www.example.com/external_canonical_article.html
```
will result in the following addition to `<head>` tags:
```html
<link rel="canonical" href="https://www.example.com/external_canonical_article.html" />
```
In all other cases the SEO Enhancer will generate the following:
```html
<link rel="canonical" href="<SITEURL>/example.html" />
```
#### Structured Data
The SEO Enhancer automatically adds structured data in the `<head>` tag in order to improve the display of result snippets in search engines. Articles will have both article schema and breadcrumb schema, while pages will only have breadcrumb schema.
Structured data is based on [Schema.org](https://schema.org/) vocabulary, with `JSON-LD` encoding. Note that schemas generated by default are compliant with Schema.org but not (by default) Google-compliant. The latter requires additional metadata.
##### Breadcrumb Schema
Based on [BreadcrumbList schema](https://schema.org/BreadcrumbList):
```json-ld
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": :n=1:,
"name": :Sitename:,
"item": :SITEURL:
},
{
"@type": "ListItem",
"position": :n+1:,
"name": :name:,
"item": :url:
},
{
"@type": "ListItem",
"position": :n+x:,
"name": :name:,
"item": :url:
}
]
}
```
Each path element has a `ListItem`, even folders, so it’s better to create a user-friendly page for those (otherwise you’ll get your server’s default page).
##### Article schema
Based on [Article schema](https://schema.org/Article):
```json-ld
{
"@context": "https://schema.org",
"@type": "Article",
"author": {
"@type": "Person",
"name": :author:
},
"publisher": {
"@type": "Organization",
"name": :sitename:,
"logo": {
"@type": "ImageObject",
"url": :logo:
}
},
"headline": :title:,
"about": :category:,
"datePublished": :publication_date:,
"image": :image:
}
```
`:logo:` and `:image:` fields are not required by Schema.org but are by Google.
To populate the `:logo:` field, add a `LOGO` setting to your Pelican settings file containing an absolute link to your site logo image:
```
# pelicanconf.py
LOGO = "https://www.example.com/logo.jpg"
```
To populate the `:image:` field, add an image metadata field to your Markdown/reST content:
```
# article.md
Image: https://www.example.com/article-image.jpg
# article.rst
:image: https://www.example.com/article-image.jpg
```
#### Open Graph
Based on [Open Graph protocol](https://ogp.me), the SEO plugin implements required properties and some aditionnals ones:
```
<meta property="og:url" content=":fileurl:" />
```
`:fileurl:`: An absolute URL build with the `SITEURL` setting and the file URL.
```
<meta property="og:type" content=":type:" />
```
`:type:`: Either `article` or `page`.
```
<meta property="og:title" content=":title:" />
<meta property="og:description" content=":description:" />
<meta property="og:image" content=":image:" />
```
`:title:`, `:description:`, `:image:`: If you need to optimize your social links, you can write dedicated Open Graph content as described below in the file metadata:
```
og_title: Specific title for Open Graph
og_description: Specific description
og_image: https://www.example.com/og-image.jpg
```
If these metadata are not declared, `:title:`, `:description:`, `:image:` will be filled by the default `Title`, `Description` (Pelican metadata) and `Image` (plugin metadata) if they exist.
```
<meta property="og:locale" content=":language:">
```
`:language:`: The site language as defined in `LOCALE` Pelican setting. If not filled, it will try to get the default system locale.
#### Twitter Cards
The Twitter Cards feature requires Open Graph feature to be functional. To avoid the duplication of similar tags, [Twitter falls back on some Open Graph tags](https://developer.twitter.com/en/docs/twitter-for-websites/cards/guides/getting-started#opengraph) if Twitter's are not present.
Based on [Twitter guide](https://developer.twitter.com/en/docs/twitter-for-websites/cards/overview/summary), the SEO plugin implements the Summary Card:
```
<meta name="twitter:card" content="summary" />
```
```
<meta name="twitter:site" content=":tw_account:" />
```
`:tw_account:`: The Twitter @account to link to the card. You can fill in the file metadata, but it's not a required property.
The other properties required by Twitter are created thanks to Open Graph feature.
## Contributing
Contributions are welcome and much appreciated. Every little bit helps. You can contribute by improving the documentation, adding missing features, and fixing bugs. You can also help out by reviewing and commenting on [existing issues][].
To start contributing to this plugin, review the [Contributing to Pelican][] documentation, beginning with the **Contributing Code** section.
[existing issues]: https://github.com/pelican-plugins/seo/issues
[Contributing to Pelican]: https://docs.getpelican.com/en/latest/contribute.html
License
-------
This project is licensed under the AGPL-3.0 license.
Raw data
{
"_id": null,
"home_page": null,
"name": "pelican-seo",
"maintainer": null,
"docs_url": null,
"requires_python": "~=3.9",
"maintainer_email": null,
"keywords": "pelican, plugin, seo, search, optimization",
"author": null,
"author_email": "=?utf-8?q?Ma=C3=ABva_Brunelles?= <contact@tremacorp.fr>, Justin Mayer <entroP@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/8b/93/0ef113c5eedf2b8ce6e3a16b7d2f4299ce3b8e5344e4a7ac627f8cd28633/pelican_seo-1.3.0.tar.gz",
"platform": null,
"description": "# SEO Plugin for Pelican \ud83c\uddeb\ud83c\uddf7\n\n[![Build Status](https://img.shields.io/github/actions/workflow/status/pelican-plugins/seo/main.yml?branch=main)](https://github.com/pelican-plugins/seo/actions)\n[![PyPI Version](https://img.shields.io/pypi/v/pelican-seo)](https://pypi.org/project/pelican-seo/)\n[![Downloads](https://img.shields.io/pypi/dm/pelican-seo)](https://pypi.org/project/pelican-seo/)\n![License](https://img.shields.io/pypi/l/pelican-seo?color=blue)\n\nThis plugin helps you improve your Pelican site SEO (Search Engine Optimization) to reach the top positions on search engines. To see what this SEO plugin can do for you, visit the [Usage](#usage) section.\n\n| Author | GitHub |\n| :-------------: | :-------------------------------: |\n| Ma\u00ebva Brunelles | https://github.com/MaevaBrunelles |\n\n## Why Use This Plugin?\n\nIf:\n\n* you are not familiar with SEO\n* you want an easy way to apply SEO fundamentals\n* you need help improving the SEO of your Pelican site\n\n\u2026 then this plugin is for you!\n\nSEO comes with two features to help you:\n\n* [SEO Report](#seo-report) \u2014 Generates an HTML report based on article analysis, indicating what is good, what could be improved, and what is problematic. Useful if you want to improve the ranking of your articles.\n* [SEO Enhancer](#seo-enhancer) \u2014 Generates robot indexing guidelines, HTML tags, structured data, and if enabled, Open Graph tags. Useful if you want to control how your site appears in search engine results and in social medias.\n\n## Installation\n\nThis plugin can be installed via:\n\n python -m pip install pelican-seo\n\nAs long as you have not explicitly added a `PLUGINS` setting to your Pelican settings file, then the newly-installed plugin should be automatically detected and enabled. Otherwise, you must add `seo` to your existing `PLUGINS` list. For more information, please see the [How to Use Plugins](https://docs.getpelican.com/en/latest/plugins.html#how-to-use-plugins) documentation.\n\n## Requirements\n\nThe above installation step should automatically install Beautiful Soup 4, which the SEO plugin requires. The following command will manually install this dependency:\n\n python -m pip install beautifulsoup4\n\nPlease keep in mind that the `SITEURL` Pelican setting must be defined in order for this plugin to function as intended.\n\n## Usage\n\nYou can enable/disable parent features by setting them to `True` or `False` in your Pelican settings.\nThe **default configuration is as stated below**:\n\n```python\n# pelicanconf.py or publishconf.py\nSEO_REPORT = True # SEO report is enabled by default\nSEO_ENHANCER = False # SEO enhancer is disabled by default\nSEO_ENHANCER_OPEN_GRAPH = False # Subfeature of SEO enhancer\nSEO_ENHANCER_TWITTER_CARDS = False # Subfeature of SEO enhancer\n```\n\nOpen Graph and Twitter Cards options are part of the SEO enhancer feature, and may be enabled to generate social tags.\nPlease note that :\n * `SEO_ENHANCER` setting must be enabled in order to use this feature\n * `SEO_ENHANCER_OPEN_GRAPH` setting must be enabled in order to use\n `SEO_ENHANCER_TWITTER_CARDS` (see [why](#twitter-cards))\n\nThe SEO plugin runs when you [generate your site](https://docs.getpelican.com/en/stable/quickstart.html#generate-your-site). If you want to see SEO logging in your console output, add the `--verbose` option to your `pelican` invocation:\n\n```bash\n$ pelican content --verbose\n-> SEO plugin initialized\n-> SEO plugin - SEO Report: seo_report.html file created\n-> SEO plugin - SEO Enhancement: robots.txt file created\n-> Writing /output/my-first-review.html\n-> SEO plugin - SEO Enhancement: Done for /output/my-first-review.html\nDone: Processed 1 articles, 0 drafts, 0 pages, 0 hidden pages and 0 draft pages in 0.17 seconds.\n```\n\n### SEO Report\n\nThe SEO plugin analyzes all your articles and pages and generate an SEO HTML report in your Pelican project root: `seo-report.html`\n\nExample:\n\n![SEO report example](docs/seo-report-example.png)\n\nYou can set limits for article and page analysis in the plugin settings.py. By default, it's set up to 10 articles and 10 pages.\n\n```python\nSEO_ARTICLES_LIMIT = 10\nSEO_PAGES_LIMIT = 10\n```\n\nThe SEO analysis begins with the most recent articles/pages, according to the `date` metadata, and is focused on the following criteria:\n\n* Page title: `<title></title>`\n* Page description: `<meta name=\"description\" content=\"\" />`\n* Heading content: `<h1></h1>`\n* Internal site links: `<a href=\"SITEURL/...\"></a>`\n\nThe above information is defined in your source content, such as the following example Markdown file:\n\n```markdown\nTitle: Page Title\nDescription: Page Description\n\n# Heading Content\n\n[Internal link](https://example.com/about.html)\n```\n\nOnce the SEO analysis has generated a report, optimize your articles and pages according to the report\u2019s recommendations, and then repeat the analysis to see whether everything comes up green.\n\n### SEO Enhancer\n\nThe SEO Enhancer module generates the following for you:\n\n* robots file\n* HTML enhancements\n* structured data\n* Open Graph tags (if enabled)\n* Twitter Cards tags (if enabled)\n\n#### Robots.txt File\n\nThe generated `robots.txt` file indicates to search engines which pages they should index. By default, search engine bots are allowed to crawl and index all pages.\n\n```\nUser-agent: *\n```\n\nTo disallow crawling and/or forbid indexing for a given article/page, add the following to your article/page metadata:\n\n```\nDisallow: True\nNoindex: True\n```\n\nA `robots.txt` file will be generated at your web site root, as per the `OUTPUT_PATH` setting (Pelican\u2019s default is `output/`).\n\n```\n# robots.txt\nUser-agent: *\n\nDisallow: example.html\nNoindex: other-example.html\n```\n\n#### Canonical URL Tag\n\nThe SEO Enhancer automatically adds canonical link metadata to `<head>` tags in order to avoid presenting duplicate content to search engines:\n\n1. If you have declared the `:external_canonical:` metadata field, the SEO Enhancer will use it. It expects a URL, e.g. `https://www.example.com/external_canonical_article.html`. It can be used if you syndicate content from third parties or want to include your own posts that are already hosted elsewhere. The SEO Enhancer will prefer `:external_canonical:` over the `:save_as:` metadata field.\n2. If you have declared the `:save_as:` metadata field, the SEO Enhancer will use it to construct a canonical link. However if the `:external_canonical:` is set, the `:save_as:` field will be ignored.\n3. If both `:external_canonical:` or `:save_as:` metadata fields are absent, it will construct the canonical link using the output filename created.\n\nExample:\n\n```\n# article.md\nExternal_Canonical: https://www.example.com/external_canonical_article.html\n\n# article.rst\n:external_canonical: https://www.example.com/external_canonical_article.html\n```\n\nwill result in the following addition to `<head>` tags:\n\n```html\n<link rel=\"canonical\" href=\"https://www.example.com/external_canonical_article.html\" />\n```\n\nIn all other cases the SEO Enhancer will generate the following:\n\n```html\n<link rel=\"canonical\" href=\"<SITEURL>/example.html\" />\n```\n\n#### Structured Data\n\nThe SEO Enhancer automatically adds structured data in the `<head>` tag in order to improve the display of result snippets in search engines. Articles will have both article schema and breadcrumb schema, while pages will only have breadcrumb schema.\n\nStructured data is based on [Schema.org](https://schema.org/) vocabulary, with `JSON-LD` encoding. Note that schemas generated by default are compliant with Schema.org but not (by default) Google-compliant. The latter requires additional metadata.\n\n##### Breadcrumb Schema\n\nBased on [BreadcrumbList schema](https://schema.org/BreadcrumbList):\n\n```json-ld\n{\n \"@context\": \"https://schema.org\",\n \"@type\": \"BreadcrumbList\",\n \"itemListElement\": [\n {\n \"@type\": \"ListItem\",\n \"position\": :n=1:,\n \"name\": :Sitename:,\n \"item\": :SITEURL:\n },\n {\n \"@type\": \"ListItem\",\n \"position\": :n+1:,\n \"name\": :name:,\n \"item\": :url:\n },\n {\n \"@type\": \"ListItem\",\n \"position\": :n+x:,\n \"name\": :name:,\n \"item\": :url:\n }\n ]\n}\n```\n\nEach path element has a `ListItem`, even folders, so it\u2019s better to create a user-friendly page for those (otherwise you\u2019ll get your server\u2019s default page).\n\n##### Article schema\n\nBased on [Article schema](https://schema.org/Article):\n\n```json-ld\n{\n \"@context\": \"https://schema.org\",\n \"@type\": \"Article\",\n \"author\": {\n \"@type\": \"Person\",\n \"name\": :author:\n },\n \"publisher\": {\n \"@type\": \"Organization\",\n \"name\": :sitename:,\n \"logo\": {\n \"@type\": \"ImageObject\",\n \"url\": :logo:\n }\n },\n \"headline\": :title:,\n \"about\": :category:,\n \"datePublished\": :publication_date:,\n \"image\": :image:\n}\n```\n\n`:logo:` and `:image:` fields are not required by Schema.org but are by Google.\n\nTo populate the `:logo:` field, add a `LOGO` setting to your Pelican settings file containing an absolute link to your site logo image:\n\n```\n# pelicanconf.py\nLOGO = \"https://www.example.com/logo.jpg\"\n```\n\nTo populate the `:image:` field, add an image metadata field to your Markdown/reST content:\n\n```\n# article.md\nImage: https://www.example.com/article-image.jpg\n\n# article.rst\n:image: https://www.example.com/article-image.jpg\n```\n\n#### Open Graph\n\nBased on [Open Graph protocol](https://ogp.me), the SEO plugin implements required properties and some aditionnals ones:\n\n```\n<meta property=\"og:url\" content=\":fileurl:\" />\n```\n`:fileurl:`: An absolute URL build with the `SITEURL` setting and the file URL.\n\n```\n<meta property=\"og:type\" content=\":type:\" />\n```\n`:type:`: Either `article` or `page`.\n\n```\n<meta property=\"og:title\" content=\":title:\" />\n<meta property=\"og:description\" content=\":description:\" />\n<meta property=\"og:image\" content=\":image:\" />\n```\n`:title:`, `:description:`, `:image:`: If you need to optimize your social links, you can write dedicated Open Graph content as described below in the file metadata:\n\n```\nog_title: Specific title for Open Graph\nog_description: Specific description\nog_image: https://www.example.com/og-image.jpg\n```\n\nIf these metadata are not declared, `:title:`, `:description:`, `:image:` will be filled by the default `Title`, `Description` (Pelican metadata) and `Image` (plugin metadata) if they exist.\n\n```\n<meta property=\"og:locale\" content=\":language:\">\n```\n`:language:`: The site language as defined in `LOCALE` Pelican setting. If not filled, it will try to get the default system locale.\n\n#### Twitter Cards\n\nThe Twitter Cards feature requires Open Graph feature to be functional. To avoid the duplication of similar tags, [Twitter falls back on some Open Graph tags](https://developer.twitter.com/en/docs/twitter-for-websites/cards/guides/getting-started#opengraph) if Twitter's are not present.\n\nBased on [Twitter guide](https://developer.twitter.com/en/docs/twitter-for-websites/cards/overview/summary), the SEO plugin implements the Summary Card:\n\n```\n<meta name=\"twitter:card\" content=\"summary\" />\n```\n\n```\n<meta name=\"twitter:site\" content=\":tw_account:\" />\n```\n`:tw_account:`: The Twitter @account to link to the card. You can fill in the file metadata, but it's not a required property.\n\nThe other properties required by Twitter are created thanks to Open Graph feature.\n\n## Contributing\n\nContributions are welcome and much appreciated. Every little bit helps. You can contribute by improving the documentation, adding missing features, and fixing bugs. You can also help out by reviewing and commenting on [existing issues][].\n\nTo start contributing to this plugin, review the [Contributing to Pelican][] documentation, beginning with the **Contributing Code** section.\n\n[existing issues]: https://github.com/pelican-plugins/seo/issues\n[Contributing to Pelican]: https://docs.getpelican.com/en/latest/contribute.html\n\nLicense\n-------\n\nThis project is licensed under the AGPL-3.0 license.\n",
"bugtrack_url": null,
"license": "AGPL-3.0",
"summary": "Pelican plugin to improve search engine optimization (SEO)",
"version": "1.3.0",
"project_urls": {
"Changelog": "https://github.com/pelican-plugins/seo/blob/main/CHANGELOG.md",
"Funding": "https://donate.getpelican.com/",
"Homepage": "https://github.com/pelican-plugins/seo",
"Issue Tracker": "https://github.com/pelican-plugins/seo/issues"
},
"split_keywords": [
"pelican",
" plugin",
" seo",
" search",
" optimization"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "75155d23bf793253a0b611c435757cb9c7445dd42c7b17cac0feb9d1899e97aa",
"md5": "b9799b30c0fa1a2d128b1ae5d69a81dc",
"sha256": "c3a9fed871033669ec3bd5aaf8ca015874cc2a0d348390c6b7723164e7ddea98"
},
"downloads": -1,
"filename": "pelican_seo-1.3.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "b9799b30c0fa1a2d128b1ae5d69a81dc",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "~=3.9",
"size": 35287,
"upload_time": "2025-01-15T17:33:04",
"upload_time_iso_8601": "2025-01-15T17:33:04.630172Z",
"url": "https://files.pythonhosted.org/packages/75/15/5d23bf793253a0b611c435757cb9c7445dd42c7b17cac0feb9d1899e97aa/pelican_seo-1.3.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "8b930ef113c5eedf2b8ce6e3a16b7d2f4299ce3b8e5344e4a7ac627f8cd28633",
"md5": "d06625939b286d70d204f4b0c87e3946",
"sha256": "7543cc71f1c8265a13a055388e337962a6940f7db34adf621fd2e09d18db6c4f"
},
"downloads": -1,
"filename": "pelican_seo-1.3.0.tar.gz",
"has_sig": false,
"md5_digest": "d06625939b286d70d204f4b0c87e3946",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "~=3.9",
"size": 26783,
"upload_time": "2025-01-15T17:33:06",
"upload_time_iso_8601": "2025-01-15T17:33:06.211899Z",
"url": "https://files.pythonhosted.org/packages/8b/93/0ef113c5eedf2b8ce6e3a16b7d2f4299ce3b8e5344e4a7ac627f8cd28633/pelican_seo-1.3.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-01-15 17:33:06",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "pelican-plugins",
"github_project": "seo",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "pelican-seo"
}