Hey Product Hunt 👋
I built tweet.md because I kept running into the same annoying problem: X posts are often useful context for AI tools, but copying them usually gives you messy text, embeds, screenshots, or browser clutter.
tweet.md turns X posts and threads into clean, attribution-preserving Markdown.
The workflow is as simple as rewriting the URL to tweet.md:
x.com/ProductHunt/status/2057518338419634198
→ tweet.md/ProductHunt/status/2057518338419634198
There’s also an AI agent skill, so agents can use tweet.md directly in their workflows.
It supports:
* single X posts
* threads
* quoted posts
* articles
* Obsidian-friendly Markdown
The goal is simple: make public X content easier to use with ChatGPT, Claude, Cursor, Codex, Obsidian, and other Markdown/LLM workflows — without scraping HTML or pasting messy copied content.
Would love your feedback, especially from people using X content in research, AI workflows, or note-taking.
@csaba_kissi@iamanantgupta well, it doesn't use AI itself but one use case is definitely using it inside AI that's right :)
Report
@builditn0w This is actually very practical problem. I often copy useful X threads into AI tools or notes but the context gets mess soo quickly. The URL rewrite flow is a nice touch because it does not add another complicated step. Does tweet.md also keep the original post structure clearly when a thread has quotes, links or media inside it?
@busra_seker1 exactly! HTML is super messy and when you let your agent just browse the page there might be a login wall or complettly blocked - those are the main reasons I built this :)
Yes tweet.md does keep the original post structure clearly. - Threads are showed as Post 1/2, 2/2 - Qutes are showed inline in a post - images and medias are shown as Markdown media links so an AI agent has all context needed to see the post/thread/quote as it really is!
@builditn0w Love how simple this is. How does the skill file work? Are you hosting it anywhere? Would love for Claude to be able to find + use this by itself
Will publish it now to skill.sh :D anywhere else that would make sense in your opinion?
Report
@builditn0w The URL-swap workflow (x.com → tweet.md) is the kind of frictionless that actually gets used, no auth dance, no scraper to maintain. The attribution-preserving part is the underrated bit: when you feed X content into an LLM, losing the author/timestamp is exactly how you get confident hallucinated quotes. One question on the agent skill: does the Markdown output stay stable for the same post over time, or can it drift if the embed/quote structure changes? For research and citation workflows, reproducible output matters as much as clean output. Upvoted.
the content can change when the post changes. if this would not be the case it could break the easy url swap to tweet.md feature. But let me know in DM's if such a "snapshot" feature would be useful for you and how you would use it! Happy to chat about it :)
this is one of those tools that solves a problem you didn't realise you had until you see it. I copy tweets into docs all the time and the formatting is always a mess. the agent skill is a nice touch too
@tina_chhabra and it's not only formatting, sometimes you even lose context when copying the html!
thanks for the support Tina :)
Report
This is exactly the kind of tiny utility that becomes more valuable because agents can use it reliably.
One thing I’d want in the Markdown output is a small provenance block: original URL, canonical URL, author handle, fetched-at time, and whether the post/thread was complete at fetch time. For research and AI workflows, that helps distinguish “this is what the post said when I captured it” from “this is the live state of X right now.”
If you ever add LinkedIn or other sources, that same receipt would matter even more because public posts move, disappear, or get reformatted in ways that can quietly change downstream summaries.
Replies
tweet.md
@builditn0w It's an amazing idea, Lars!
Finally, something different. Everything is flooded with AI stuff.
tweet.md
@csaba_kissi thank you Csaba! Means a lot coming from you :)
GrowMeOrganic
@csaba_kissi This is amazing for sure, but isn't this AI too?
tweet.md
@csaba_kissi @iamanantgupta well, it doesn't use AI itself but one use case is definitely using it inside AI that's right :)
@builditn0w This is actually very practical problem. I often copy useful X threads into AI tools or notes but the context gets mess soo quickly. The URL rewrite flow is a nice touch because it does not add another complicated step. Does tweet.md also keep the original post structure clearly when a thread has quotes, links or media inside it?
tweet.md
@busra_seker1 exactly! HTML is super messy and when you let your agent just browse the page there might be a login wall or complettly blocked - those are the main reasons I built this :)
Yes tweet.md does keep the original post structure clearly.
- Threads are showed as Post 1/2, 2/2
- Qutes are showed inline in a post
- images and medias are shown as Markdown media links
so an AI agent has all context needed to see the post/thread/quote as it really is!
zero.xyz
@builditn0w Love how simple this is. How does the skill file work? Are you hosting it anywhere? Would love for Claude to be able to find + use this by itself
tweet.md
@daniel_baum Thank you Daniel!
The skill is currently only available here: https://tweet.md/i/skill.md
It triggers whenever an X post must be read.
Will publish it now to skill.sh :D anywhere else that would make sense in your opinion?
@builditn0w The URL-swap workflow (x.com → tweet.md) is the kind of frictionless that actually gets used, no auth dance, no scraper to maintain. The attribution-preserving part is the underrated bit: when you feed X content into an LLM, losing the author/timestamp is exactly how you get confident hallucinated quotes. One question on the agent skill: does the Markdown output stay stable for the same post over time, or can it drift if the embed/quote structure changes? For research and citation workflows, reproducible output matters as much as clean output. Upvoted.
tweet.md
@artem_fedorovich thank you!
the content can change when the post changes. if this would not be the case it could break the easy url swap to tweet.md feature. But let me know in DM's if such a "snapshot" feature would be useful for you and how you would use it! Happy to chat about it :)
minimalist phone: reduce your screentime
Also, any ambition to do this for LinkedIn? I am there recently and it is also a big market to cover :)
tweet.md
@busmark_w_nika definitely worth checking! but need to make sure they have APIs I can use properly. Will come back to you when I do! :)
minimalist phone: reduce your screentime
@builditn0w Thank you that you think about it too :)
Concrats Lars! Not sure how often I need it but I can imagine it can be super helpful. Also I like the domain!
tweet.md
@vuhrmeister thank you Valentin!
even if you never need it I am happy for your support :)
@builditn0w of course, you can count on me!
tweet.md
@vuhrmeister 🙌🙌
Looks impressive! I can't say that I'm using Twitter a lot, but that's definitely a nice thing
tweet.md
@sk_uxpin thank you! maybe it changes now you can use markdown, lol :D
@builditn0w hahah, well, that's fair point :D
Finally a simple way to turn good X threads into something actually reusable ❤️
tweet.md
@rdrudra99 thank you! happy you like it :)
Long threads with images sometimes break copy-paste. Does tweet.md keep image URLs in the Markdown or text-only?
tweet.md
@novamaker01 images get rendered in markdown syntax with public image url like this thread:
ConfettiTherapy.com
congrats on the launch mate!! :)
tweet.md
@thepetermick Thank you Peter 🥳
this is one of those tools that solves a problem you didn't realise you had until you see it. I copy tweets into docs all the time and the formatting is always a mess. the agent skill is a nice touch too
tweet.md
@tina_chhabra and it's not only formatting, sometimes you even lose context when copying the html!
thanks for the support Tina :)
This is exactly the kind of tiny utility that becomes more valuable because agents can use it reliably.
One thing I’d want in the Markdown output is a small provenance block: original URL, canonical URL, author handle, fetched-at time, and whether the post/thread was complete at fetch time. For research and AI workflows, that helps distinguish “this is what the post said when I captured it” from “this is the live state of X right now.”
If you ever add LinkedIn or other sources, that same receipt would matter even more because public posts move, disappear, or get reformatted in ways that can quietly change downstream summaries.
tweet.md
@jim_jeffers you do actually get all of those information with paid credits :)
just not sure what you mean by "post/thread was complete at fetch time"?
you are not the first one requesting Linkedin! Will definitely check it. Thanks for your support!
Tabstack by Mozilla
tweet.md
@fmerian thank you! 🙌