{"id":14036899,"url":"https://github.com/max-arnold/markdown-tweetable","last_synced_at":"2026-01-26T21:16:35.723Z","repository":{"id":17598637,"uuid":"20402349","full_name":"max-arnold/markdown-tweetable","owner":"max-arnold","description":"Python-Markdown extension to embed tweetable quotes into your blog posts","archived":false,"fork":false,"pushed_at":"2019-03-25T05:45:20.000Z","size":93,"stargazers_count":16,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-01-14T23:54:45.300Z","etag":null,"topics":["extension","python-markdown","social-buttons","tweetable-quotes"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/max-arnold.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-06-02T11:57:04.000Z","updated_at":"2025-04-05T02:49:12.000Z","dependencies_parsed_at":"2022-08-07T08:16:06.490Z","dependency_job_id":null,"html_url":"https://github.com/max-arnold/markdown-tweetable","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/max-arnold/markdown-tweetable","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/max-arnold%2Fmarkdown-tweetable","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/max-arnold%2Fmarkdown-tweetable/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/max-arnold%2Fmarkdown-tweetable/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/max-arnold%2Fmarkdown-tweetable/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/max-arnold","download_url":"https://codeload.github.com/max-arnold/markdown-tweetable/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/max-arnold%2Fmarkdown-tweetable/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28788366,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-26T21:13:08.818Z","status":"ssl_error","status_checked_at":"2026-01-26T21:13:08.448Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["extension","python-markdown","social-buttons","tweetable-quotes"],"created_at":"2024-08-12T03:02:18.353Z","updated_at":"2026-01-26T21:16:35.697Z","avatar_url":"https://github.com/max-arnold.png","language":"Python","readme":"# Tweetable quotes for Python-Markdown\n\nWhy this extension? A lot of blog posts have social sharing buttons at the top or bottom of a page. But there is a recent trend to embed shareable quotes right into the post body, which noticeably increases content sharing. Some sites even allow you to select any part of text and share it (see [medium.com](https://medium.com/life-learning/7-reasons-why-you-will-never-do-anything-amazing-with-your-life-2a1841f1335d) for example). The basic idea is that people prefer to quote a story rather than its headline. And you can have multiple shareable quotes in a single story!\n\nWith this extension you will be able to turn the text below:\n\n    [tweetable url=\"http://www.brainyquote.com/quotes/authors/v/vladimir_lenin.html\"]\n    When there is state there can be no freedom,\n    but when there is freedom there will be no state.\n    -- Vladimir Lenin\n    [/tweetable]\n\ninto the following nice styled quote:\n\n![Screenshot of the quote](/screenshot.png)\n\n## Installation\n\n    pip install markdown-tweetable\n\nor:\n\n    pip install git+git://github.com/max-arnold/markdown-tweetable.git\n\n\n## Usage\n\nFull syntax:\n\n    [tweetable alt=\"When there is state there can be no freedom,\n                    but when there is freedom there will be no state\"\n               url=\"http://en.wikipedia.org/wiki/Vladimir_Lenin\"\n               hashtags=\"#lenin\"]\n    When there is state there can be no freedom, but when there is freedom there will be no state.\n    -- Vladimir Lenin\n    [/tweetable]\n\nAnd you definitely want to add some style. Below is an example:\n\n    blockquote.tweetable {\n        border-top: 1px solid #CCC;\n        border-bottom: 1px solid #CCC;\n        border-left: none;\n        border-right: none;\n        position: relative;\n    }\n\n    blockquote.tweetable::before {\n        content: '“';\n        position: absolute;\n        top: 0;\n        left: 0;\n        font-size: 4em;\n        font-family: \"inherit\";\n        font-weight: bold;\n        color: #888;\n    }\n\n    blockquote.tweetable p {\n        margin: 0 0 0.5em 1.5em;\n        font-style: italic;\n    }\n\n    .tweetable-svg-icon {\n        /* fill: #db3535; */\n        width: 1em;\n    }\n\n## List of configuration parameters\n\n### Social buttons\n\nList of social networks for sharing. By default contains all supported networks:\n\n    networks=('twitter', 'facebook', 'linkedin', 'vkontakte',)\n\nYou can also specify it as a string (useful if you configured this markdown extension using module path with parameters):\n\n    networks='twitter;facebook;linkedin;vkontakte'\n\n### HTML snippet\n\nBy default it looks like this:\n\n    snippet='''\u003cblockquote class=\"tweetable\"\u003e\n        \u003cp\u003e{quote}\u003c/p\u003e\n        \u003cp class=\"tweetable-buttons\"\u003e{buttons}\u003c/p\u003e\n    \u003c/blockquote\u003e'''\n\n### Social button snippets\n\n    snippet_facebook='''\u003ca class=\"tweetable-button\"\n        title=\"Copy the text, then click to share on Facebook\"\n        href=\"https://www.facebook.com/sharer/sharer.php?u={urlq}\"\n        target=\"_blank\"\u003e\n        {icon_facebook}\u003c/a\u003e'''\n\n    snippet_linkedin='''\u003ca class=\"tweetable-button\"\n        title=\"Click to share on LinkedIn\"\n        href=\"http://www.linkedin.com/shareArticle?mini=true\u0026url={urlq}\u0026title={quote}\"\n        target=\"_blank\"\u003e\n        {icon_linkedin}\u003c/a\u003e'''\n\n    snippet_twitter='''\u003ca class=\"tweetable-button\"\n        title=\"Click to share on Twitter\"\n        href=\"https://twitter.com/intent/tweet?text={quote}\u0026url={urlq}\u0026hashtags={hashtags}\"\n        target=\"_blank\"\u003e\n        {icon_twitter}\u003c/a\u003e'''\n\n    snippet_vkontakte='''\u003ca class=\"tweetable-button\"\n        title=\"Click to share on VKontakte\"\n        href=\"https://vk.com/share.php?url={urlq}\u0026title={quote}\"\n        target=\"_blank\"\u003e\n        {icon_vkontakte}\u003c/a\u003e'''\n\n### Social icons\n\n    icon_facebook='''\n        \u003csvg role=\"img\" class=\"tweetable-svg-icon\" viewBox=\"0 0 512 512\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n        \u003crect fill=\"#3b5998\" height=\"512\" rx=\"15%\" width=\"512\"/\u003e\n        \u003cpath d=\"m287 456v-299c0-21 6-35 35-35h38v-63c-7-1-29-3-55-3-54 0-91 33-91 94v306m143-254h-205v72h196\" fill=\"#fff\"/\u003e\n        \u003c/svg\u003e'''\n\n    icon_linkedin='''\n        ...\n    '''\n\n    icon_twitter='''\n        ...\n    '''\n\n    icon_vkontakte='''\n        ...\n    '''\n\n\nGiven all these configuration options, the resulting HTML markup would look like this:\n\n    \u003cblockquote class=\"tweetable\"\u003e\n      \u003cp\u003eWhen there is state there can be no freedom,\n         but when there is freedom there will be no state.\n         -- Vladimir Lenin\n      \u003c/p\u003e\n\n      \u003cp class=\"tweetable-buttons\"\u003e\n        \u003ca class=\"tweetable-button\"\n           title=\"Click to share on Twitter\"\n           href=\"https://twitter.com/intent/tweet?text=When+there+is+state+there+can+be+no+freedom%2C%0Abut+when+there+is+freedom+there+will+be+no+state.%0A--+Vladimir+Lenin\u0026amp;url=http%3A%2F%2Fwww.brainyquote.com%2Fquotes%2Fauthors%2Fv%2Fvladimir_lenin.html\u0026amp;hashtags=\"\n           target=\"_blank\"\u003e\n          \u003csvg\u003eTwitter icon here...\u003c/svg\u003e\n        \u003c/a\u003e\n\n        \u003ca class=\"tweetable-button\"\n            title=\"Copy the text, then click to share on Facebook\"\n            href=\"https://www.facebook.com/sharer/sharer.php?u=http%3A%2F%2Fwww.brainyquote.com%2Fquotes%2Fauthors%2Fv%2Fvladimir_lenin.html\"\n            target=\"_blank\"\u003e\n          \u003csvg\u003eFacebook icon here...\u003c/svg\u003e\n        \u003c/a\u003e\n\n        \u003ca class=\"tweetable-button\"\n            title=\"Click to share on LinkedIn\"\n            href=\"href=\"http://www.linkedin.com/shareArticle?mini=true\u0026url={http%3A%2F%2Fwww.brainyquote.com%2Fquotes%2Fauthors%2Fv%2Fvladimir_lenin.html}\u0026title={When+there+is+state+there+can+be+no+freedom%2C%0Abut+when+there+is+freedom+there+will+be+no+state.%0A--+Vladimir+Lenin}\"\n            target=\"_blank\"\u003e\n          \u003csvg\u003eLinkedIn icon here...\u003c/svg\u003e\n        \u003c/a\u003e\n\n        \u003ca class=\"tweetable-button\"\n           title=\"Click to share on VKontakte\"\n           href=\"https://vk.com/share.php?url=http%3A%2F%2Fwww.brainyquote.com%2Fquotes%2Fauthors%2Fv%2Fvladimir_lenin.html\u0026amp;title=When+there+is+state+there+can+be+no+freedom%2C%0Abut+when+there+is+freedom+there+will+be+no+state.%0A--+Vladimir+Lenin\"\n           target=\"_blank\"\u003e\n          \u003csvg\u003eVKontakte icon here...\u003c/svg\u003e\n        \u003c/a\u003e\n      \u003c/p\u003e\n    \u003c/blockquote\u003e\n\n\n### Button docs:\n\n* https://developers.facebook.com/docs/plugins/share-button/\n* http://developer.linkedin.com/documents/share-linkedin\n* https://dev.twitter.com/docs/tweet-button\n* http://vk.com/dev/share_details\n\nNOTES:\n\n* Facebook button sucks, because it [does not support](http://stackoverflow.com/questions/20956229/has-facebook-sharer-php-changed-to-no-longer-accept-detailed-parameters) prefilled text.\n* LinkedIn [does not support](http://help.linkedin.com/app/answers/detail/a_id/5028/~/linkedin-signal---no-longer-supported) hashtags.\n\n### SVG Icons\n\nDefault share buttons are rendered using [Super Tiny Icons](https://github.com/edent/SuperTinyIcons).\n\n## Dependencies\n\n* [Markdown 2.6+](http://pythonhosted.org/Markdown/)\n\n## Copyright\n\nCopyright 2014-2017 [Max Arnold](http://ar0.me/blog/en/), all rights reserved.\n\nThis software is released under the MIT License.\n","funding_links":[],"categories":["Python"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmax-arnold%2Fmarkdown-tweetable","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmax-arnold%2Fmarkdown-tweetable","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmax-arnold%2Fmarkdown-tweetable/lists"}