{"id":22061815,"url":"https://github.com/pelican-plugins/fediverse","last_synced_at":"2025-07-20T05:33:55.452Z","repository":{"id":114074220,"uuid":"566812815","full_name":"pelican-plugins/fediverse","owner":"pelican-plugins","description":"A Pelican plugin to publish content on the Fediverse","archived":false,"fork":false,"pushed_at":"2025-07-08T17:35:16.000Z","size":126,"stargazers_count":8,"open_issues_count":3,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-08T17:44:25.172Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pelican-plugins.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-11-16T13:28:51.000Z","updated_at":"2025-07-08T17:34:18.000Z","dependencies_parsed_at":"2025-05-22T17:34:19.444Z","dependency_job_id":"c1d076b2-2872-410f-8c2b-dcafd6a960f1","html_url":"https://github.com/pelican-plugins/fediverse","commit_stats":null,"previous_names":["mpaglia0/pelican-fediverse","pelican-plugins/fediverse"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/pelican-plugins/fediverse","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pelican-plugins%2Ffediverse","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pelican-plugins%2Ffediverse/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pelican-plugins%2Ffediverse/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pelican-plugins%2Ffediverse/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pelican-plugins","download_url":"https://codeload.github.com/pelican-plugins/fediverse/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pelican-plugins%2Ffediverse/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266071519,"owners_count":23871940,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-30T18:14:58.623Z","updated_at":"2025-07-20T05:33:55.442Z","avatar_url":"https://github.com/pelican-plugins.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Fediverse\n\nA Pelican plugin to publish content on the Fediverse\n\n:warning: Under development. Presently only Mastodon is supported. DEVELOPERS NEEDED!\n\n:warning: Needs Python \u003e 3.0\n\n## How it works (Mastodon)\n\n*Fediverse* will search your contents for articles (actually ALL contents except pages) that are not in a `draft` status.\n\nOn its first run it creates a file called `posted_on_Mastodon.txt` in your Pelican root directory populated with all your article URLs.\n\nThen it tries to post all eligible articles to Mastodon and - if post routine returns no errors - writes posted article URLs in `posted_on_Mastodon.txt`.\n\nOn every further run it matches the actual articles list with the list in `posted_on_Mastodon.txt` file and posts only new articles (and writes them in `posted_on_Mastodon.txt`).\n\n*Fediverse* is at its very first stage of development, but it is already usable in product environments.\n\nThis release can publish:\n\n- Title of article\n- Body of article\n- hashtag(s) if any\n\nTitle is taken from `article.title`\n\nBody is taken from `article.summary` with standard Pelican configuartion i.e. length trimmed to 50 words and summary ends with `...` OR with parameters you set in `pelicanconf.py` (`SUMMARY_MAX_LENGTH` and `SUMMARY_END_SUFFIX`).\n\nIf the total length of the post exceeds MAX length allowed from Mastodon, then *Fediverse* will trim `article.summary` accordingly.\n\nHashtag(s) are taken - if any - from `article.tags` and concatenated separating each of them with commas.\n\nPelican can nicely handle tags with whitespaces (for example `#My nice article`) but in Mastodon they must be written without. For this reason all whitespaces from Pelican hashtags will be removed before publishing (`#Mynicearticle`).\n\n### New metadata **ftags**\nYou can use the `ftags` metadata to add specific tags to a Fediverse post without including Pelican hashtags.\n```markdown\nTitle: This is a ftags sample usage\nDate: 2025-05-23\nSlug: ftags-sample\ntags: tag_on_blog_and_fediverse, another_one\nftags: TagOnlyOnFediverse, SecondOne\n\n```\n\n## Mastodon APIs\n\nThis plugin depends on [Mastodon.py](https://github.com/halcy/Mastodon.py).\n\nIn order to publish on Mastodon you need to enter in `.env` file, on the site root directory, the following information:\n\n``` python\nMASTODON_BASE_URL=\"URL of your Mastodon instance. For example https://mastodon.social\"\nMASTODON_OAUTH_TOKEN=\"Token of your Mastodon registered App\"\n```\n\n:exclamation: Starting from Mastodon 4.4.0 posting using Username/Password has been deprecated. Now you have to use the OAuth Token method instead. Your OAuth Token is available in the admin page of your web Mastodon page.\n\nThere is no need to register an app in your Mastodon profile because *Fediverse* will do it for you!\n\nOn every run *Fediverse* looks for a file called `pelicanfediverse_clientcred.secret` and - if it is not found - it gets in touch with Mastodon, creates an app called *PelicanFediverse* and writes API keys and other necessary information in this file.\n\nIf you **cancel** this file *Fediverse* will create another app on its next run (this could be done in case of problem despite the fact Mastodon advise this is NOT a good behaviour since app should be created only once).\n\n\n## Parameters\n\nIn `pelicanconf.py` some new parameters can be defined\n\n - **MASTODON_VISIBILITY** : Set post's visiblity on mastodon. Can be 'direct', 'private', 'unlisted' or 'public'. Default value = 'direct'\n  \u003cbr\u003eMore details : https://mastodonpy.readthedocs.io/en/stable/05_statuses.html#writing\n  \n - **MASTODON_READ_MORE** : Text to add at the end of the post, before link to the pelican's article. Default value = 'Read more: '\n\n - **FEDIVERSE_TAGS** : To add same tag on all fediverse post but not on blog post. It is possible to set multiple tags with comma separator. _(ie \"MyFirstTag, AnotherOne\" generate **#MyFirstTag** and **#AnotherOne**)_\n\n``` Python\nMASTODON_VISIBILITY = 'direct'\nMASTODON_READ_MORE = 'Read more: '\nFEDIVERSE_TAGS = 'FromMyBlog'\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpelican-plugins%2Ffediverse","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpelican-plugins%2Ffediverse","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpelican-plugins%2Ffediverse/lists"}