[HN Gopher] Show HN: I made a tool to port tweets to Bluesky man...
___________________________________________________________________
Show HN: I made a tool to port tweets to Bluesky mantaining their
original date
Bluesky allows to backdate their posts with their API, so I made
this tool to copy your twitter (X) profile to Bluesky keeping the
backdated dates of your tweets, showing as if they were posted back
then
Author : nols05
Score : 228 points
Date : 2025-03-18 17:07 UTC (5 hours ago)
(HTM) web link (bluemigrate.com)
(TXT) w3m dump (bluemigrate.com)
| CharlesW wrote:
| As an eX-user who deleted their footprint long ago, I imagine
| some people would be interested in doing this from an archive.
| avtar wrote:
| Seems like this is already doable:
|
| https://typefully.com/blog/import-twitter-to-bluesky#:~:text...
| qoez wrote:
| Found this related to this https://jymfox.com/bleetinthepast/ Fun
| to post from 0 BC
| rsynnott wrote:
| But... there isn't a 0 BC! The Gregorian calendar goes straight
| from 1 BCE to 1 CE.
|
| (That said, most datetime libraries, in practice, tend to
| behave very weirdly if you go back a few thousand years, if
| they'll put up with it at all...)
| Am4TIfIsER0ppos wrote:
| When they were removing the Christ from dates they should
| have just made it an integer.
| jer0me wrote:
| This is very cool. These features would be useful:
| - If it isn't possible to transfer the video, I'd rather skip
| them than just posting a thumbnail - A way to mass-delete
| posts after a migration if I regret it - The option to add
| text (e.g. [Migrated from X]) to each post if it fits
|
| As far as competitors, go https://blueark.app/ seems like the
| most complete. I remember seeing another one, a desktop app, but
| I can't remember what it was called.
| Aurornis wrote:
| Interesting tool, but I'm very surprised that they allow
| backdating posts.
|
| Backdating posts opens up a world of social engineering scams.
| You can create an account that appears to have predicted a lot of
| past events, sports scores, or stock prices with timestamps prior
| to those events occurring. The scam is to create an account that
| appears to have great stock advice or sports betting predictions
| and then charge people for it.
| jer0me wrote:
| I believe this is possible because of how the AT Protocol
| works. Bluesky shows a warning[1] on these posts and displays
| both times, but sorts them by the backdated time.
|
| [1]:
| https://bsky.app/profile/bluemigrate.com/post/3lc3r4fqen62l
| dietr1ch wrote:
| It'd be cool if they also verified the dates to get rid of
| the warning of honest backdated posts.
| pimlottc wrote:
| What constitutes an honest backdated post? How would they
| be able to verify it?
| tough wrote:
| they could fetch the post reference on x.com with the
| real date, and store a zkProof of its existance, relying
| the verfiability-trust then to x not messing with them
| krainboltgreene wrote:
| You going to donate your CPU for that? Only about a
| billion or ten tweets.
| celticninja wrote:
| Open a PR
| toomuchtodo wrote:
| Or use the Wayback Machine? You can trust its captures,
| courts do. Queue archiving jobs per handle, backfill from
| the archives after the initial archiving request has
| completed.
|
| https://katharinabrunner.de/2024/02/archiving-websites-
| the-i...
|
| https://x.com/paulmcgorrery/status/1178561480385421312
| (Dyno Nobel Inc v Orica Explosives Technology Pty Ltd (no
| 2) [2019] FCA 1552)
|
| https://www.michbar.org/journal/Details/Old-websites-
| seldom-...
|
| https://www.lexisnexis.com/community/insights/legal/b/tho
| ugh...
| kurisufag wrote:
| nope. post here from 9/11 2001, no warning [0]. it's fine if
| they added a check recently to flag backdated posts, but
| there's no telling how many incorrectly-timed things went up
| before they added that ([0] is from about a year ago, fwiw).
| the whole early history of the platform is questionable, and
| it's just shoddy protocol design.
|
| [0]
| https://bsky.app/profile/lul4.bsky.social/post/3kgaesbxs7f25
|
| (if you work for bsky please don't add a flag to that, it's
| my favorite party trick)
| jer0me wrote:
| Looking at the JSON data in dev tools, it looks like there
| are separate `createdAt` and `indexedAt` fields, the latter
| of which was probably a later addition. For your--likely
| pre-migration--post, both are set to 9/11. On more recent
| posts, they're separate dates.
| extraduder_ire wrote:
| That post does indeed predate bluesky tracking index
| times, I remember seeing it before they announced that
| change. I believe it was motivated by other migration
| services becoming popular. Forward-dating was fixed even
| earlier, I think, since it might allow people to "pin"
| their posts to the top of reverse-chronological feeds.
|
| Some of my favourite backdated posts are from the years
| 1776 and 1.
| ezfe wrote:
| If you look at the imported posts, they have a badge that says
| the date they were imported and says the date on the post is
| unverified.
| evbogue wrote:
| Yes, but this badge is generated at their Appview index layer
| and not at your PDS.
| chc4 wrote:
| If you are syncing data from another PDS, there is no way
| to verify that posts have an accurate date, unless you have
| some central ledger which is antithetical to allowing self-
| hosting and being distributed.
| evbogue wrote:
| Correct. The trade-off here is on Bluesky you can delete
| or re-order your posts which you cannot do on a network
| with strict message ordering. Your PDS webmaster can also
| rewrite your messages for you if they become unhappy with
| your messaging.
| toomuchtodo wrote:
| Take snapshots with the Internet Archive and have that be
| canonical/source of truth?
| chc4 wrote:
| Your PDS webmaster has a signing key for your repo,
| because they for all intents and purposes _are_ you. That
| 's the trust structure of how PDS' are setup. If you
| don't trust someone else to modify your repo don't give
| them your private (sub)key.
|
| The fact it's a subkey means that you are also able to
| rotate the key that the PDS has access to and modify your
| repo back to pre-defaced state if need be.
| evbogue wrote:
| Exactly, this is the benefit of having a Bluesky!
|
| Imagine if Github worked this way, then I wouldn't have
| to worry about storing my ssh keys on my local machine.
| Imagine the possibilities if Github could pull my repo
| instead of me having to go through all that darned
| trouble of pushing it.
| lukev wrote:
| This isn't quite true. Your PDS can't rewrite your
| messages: all messages are signed with a key unique to
| your account.
|
| That said, the PDS is effectively also your private key
| custodian. Most people who aren't nerds are happy to let
| Bluesky PBC manage their keys. But if that's your threat
| model, you should absolutely move to a self-managed PDS.
|
| The protocol also actually allows you to manage your keys
| differently. You could in theory have a "read-only" PDS,
| and generate all your posts locally using a local key
| (conceptually much closer to a crypto wallet.)
|
| In that scenario, the validity of posts as originating
| from a known identity is extremely strong.
| evbogue wrote:
| Yes, and what if they had a tab in the Bluesky app where
| you generated a keypair, registered the pubkey at your
| PDS and then began signing messages in the app? You could
| rotate keys on demand and update the PDS every time you
| make a new one.
| lukev wrote:
| Yeah but if you lost your phone you'd be screwed.
|
| There's ways around it... the identity mechanism supports
| multiple keys so you could have a backup in escrow.
|
| But most people don't want to worry about key management
| at that level. Hell, I know exactly how everything works,
| and key management still scares me. The consequences of a
| mistake are huge.
| evbogue wrote:
| Yes, that key is screwed because it's lost, stolen, at
| the bottom of the river, etc. But this is when you
| generate a new key and store that pubkey at your PDS so
| the Appview can find and index your new posts from your
| new phone. It's the same thing that happens when I
| reinstall Debian on my Thinkpad and upload a new ed25519
| pubkey to Github so I can push again.
|
| Edit: or we could backup the key.
| evbogue wrote:
| Bluesky was developed with backdated posts as a stated goal,
| see Jay's original prototype:
| https://github.com/arcalinea/smor-serve
| jampa wrote:
| You can still do that even without changing the timestamp. Back
| in the old days of the internet, people used to get famous by
| claiming they predicted all the results of the FIFA World Cup
| by posting every possible outcome and then deleting those where
| they were wrong. Then, they would publicize their account just
| before the final match, and people would go wild.
| spullara wrote:
| before this people used to send out stock predictions by mail
| to power of 2 people with each prediction and its opposite,
| eventually you get down to a person who you have always sent
| the correct prediction.
| BiteCode_dev wrote:
| Just realized the French lottery is only 19 068 840
| combinations. You could send spam to 19 millions people, each
| with a number saying you can predict the lottery, and if they
| send you 10 000 euros in BTC, you could give them the next
| one.
| rglullis wrote:
| I am more surprised by how we got to this world where people
| think in terms of what software developers "allows" us to do,
| or not do.
| Aurornis wrote:
| > in terms of what software developers "allows" us to do, or
| not do.
|
| You can do whatever you want with the _the software_. It 's
| right here: https://github.com/bluesky-social
|
| You cannot do whatever you want on someone else's hosted
| website. They don't allow you to delete other users and edit
| other people's posts because everyone agrees that would make
| it useless.
| neilv wrote:
| Is there some authoritative source for knowing when Bluesky posts
| were made, approximately?
|
| (For example, does Bluesky themselves record the timestamp of
| when they first see a given message, and make this info
| available, either publicly or with subpoena/warrant?)
| dharmab wrote:
| I think the import date is available in the API and client,
| separate from the posted date.
| jaimehrubiks wrote:
| The protocol should show a flag that states if the date was sent
| by the client. That way you allow this feature while at the same
| time you can warn users.
| mentalgear wrote:
| Much appreciated, but wouldn't this allow anyone to "migrate"
| somebody else's tweets over to bluesky, basically impersonate
| them with 1-click ? What's missing is some sort of verification.
| amyames wrote:
| this can be done, and it's suspect when someone's done it to
| build a following and it's not clear if they own the tweets.
|
| I tail the firehose sometimes , filtering for post dates that
| don't contain 2025. Bottom line this has been happening since
| day one and backdated/imported posts were about 1/16th or so of
| the overall post volume in any random sampling I've taken. It's
| a lot.
|
| But the few I spot checked , all checked out. The people
| importing their posts were all mentioning their new bluesky on
| LinkedIn or Twitter . I haven't caught a spammer yet. It's
| something I look at when I am extremely bored.
| Karrot_Kream wrote:
| Unreliable datetimes is just part of AT and something you need
| to deal with. The moment you start ingesting the firehose
| you'll see plenty of backdated or forward dated traffic. If you
| build feeds you need to be careful when using posted timestamps
| to sort feeds because of backdating and because there's no real
| centralized way to verify your timestamps. For my feeds I just
| reject posts that are beyond a certain delta from now and sort
| my feed by ingestion time rather than post time.
|
| There's probably some sort of blockchain-based time-attestation
| like [1] that could help but this is beyond the scope of AT and
| something that probably needs a lot more thought before a
| serious proposal comes forth.
|
| [1]: https://opentimestamps.org/
| robertlagrant wrote:
| > something you need to deal with
|
| Who is the "you" here?
| ncallaway wrote:
| > The moment you start ingesting the firehose
|
| Probably someone who started ingesting the firehose
| darkwater wrote:
| Well, if the source is publicly available, anyone can copy it
| anyway. So, you need anyway to announce on the original account
| where it has been migrated to.
| nashashmi wrote:
| Can I upload my archive of tweets that I exported from Twitter
| immediately after it changed ownership and subsequently deleted
| my Twitter profile?
| tekno45 wrote:
| the worst part of bluesky is all the people asking for it to be
| twitter.
|
| That and people posting screenshots of their own tweets...
| LaPingvino wrote:
| It literally comes from the original Twitter, it's meant to be
| what X killed in Twitter.
| pessimizer wrote:
| Didn't come from Twitter, it came from Dorsey. He also said
| that it went badly astray early on, and abandoned it
| completely.
|
| https://www.piratewires.com/p/interview-with-jack-dorsey-
| mik...
| extraduder_ire wrote:
| It was initially created as a group inside of twitter. They
| spun it off into a separate company pretty early though.
| artursapek wrote:
| lol they let you spoof timestamps on this site?
| sMarsIntruder wrote:
| It seems so, and it's funny lol.
| MattSayar wrote:
| Good stuff! I didn't mind the fresh start with BlueSky but it'll
| be nice to import my last hundred posts with the free trial.
| oellegaard wrote:
| What is the appeal of Bluesky? I'm surprised to see how much
| traction it has, when Mastodon already exists and works quite
| well technically - it seems that Bluesky is simply better at
| marketing?
| adamredwoods wrote:
| Convenience factor. Bluesky is single site. Mastodon is
| multiple sites.
| unshavedyak wrote:
| I also find Bluesky's underlying tech interesting. The more i
| looked into Mastodon the less interesting it felt. I
| especially didn't like that as a small Mastodon instance i'd
| struggle to get my updates fed into the larger instances and
| struggle to get updates as quickly. Instances prioritized
| updates to/from larger instances.
|
| This was all quite early though and i'm sure i misunderstood
| things. Just answering the question as i personally perceived
| Mastodon.
|
| On the non-tech side, i find Bluesky's model for moderation
| to be really neat. I hope it continues to expand in
| features/implementations.
| curious_cat_163 wrote:
| I find the AT protocol interesting.
|
| But, now they have network effects; > 30 million users --
| that's a big market to build for.
| advisedwang wrote:
| For me, it's pure network effect. The people I want to hear
| from and be heard by are on Bluesky but not Mastodon.
| lxgr wrote:
| It's a much better protocol in practice, in my view.
|
| Mastodon is server/instance centric and permanently anchors
| your identity to a given server. On Bluesky, you can use any
| domain you control DNS for as your handle, since content
| hosting and identity management are decoupled at the protocol
| layer.
|
| On top of that, hosting is also decoupled from
| aggregation/discovery, which allows for things like global
| search that are intrinsically hard on Mastodon.
| RicoElectrico wrote:
| Mastodon is fragmented by design, federation is mostly
| theoretical even if mastodon.social displays many other
| instances' content and lets you interact with it.
|
| You can't search across instances nor can you (afaik) maintain
| identity across them.
| shawabawa3 wrote:
| Had enough of shitty self hosted mastodon servers getting
| linked, makes me wary to click any mastodon link because they
| are so likely to be dead
|
| Imo that's a complete killer to adoption. The vibe people get
| from it is that it's always down, they don't care that "oh just
| switch to another shard" that's too much effort
| imhoguy wrote:
| Yeah, it should be content addressable and replicated by
| Favourite (Like) similarly how IPFS pining works, then your
| post would die when the last hoarder forgets about it.
| yborg wrote:
| Bluesky implements algorithmic feeds so content is easier to
| find. Mastodon mostly is original Twitter model - you have to
| follow accounts yourself. It's significant friction and filters
| 90% of normal people.
| nailer wrote:
| Bluesky appeals to people that don't wish to meet or interact
| with anyone from the other side of the aisle - like a left wing
| version of Truth Social.
| sergiotapia wrote:
| it's a turbo left version of truth social. so people into that
| flock to use bluesky.
| cooper_ganglia wrote:
| Now give me the tool that lets me import my Bluesky history to X!
| ;)
| lloydjones wrote:
| I made a similar tool a while back, https://pleasenox.com - Mine
| relies on a "poster" account doing the work rather than the
| current user's account.
| weinzierl wrote:
| I imported all my Tweets into Bluesky a long time ago and all my
| Tweets kept their original date which _has_ confused people.
|
| For example:
|
| https://bsky.app/profile/abu.guru/post/3la7w6bxkip2j
| rglullis wrote:
| This is only for your own tweets? What about replies / RTs?
| sMarsIntruder wrote:
| So the plan is moving from a centralised platform to another
| centralised platform? As a loop? :)
| throwaway150 wrote:
| This is something I don't understand either. Why is everyone so
| eager to move from one centralized platform to another? Sounds
| counterproductive to me.
|
| Btw do you have any good suggestions for distributed platforms?
| Would Mastodon be considered a distributed platform?
| matijao wrote:
| https://nostr.com
| skybrian wrote:
| Maybe they don't care as much as you do about whether a
| service is decentralized?
| diggan wrote:
| > Why is everyone so eager to move from one centralized
| platform to another?
|
| Personally, I'm eager because it's not just another
| centralized platform but a _sufficiently_ distributed one.
| Most of the infrastructure you need for ATProto, you can run
| yourself today.
|
| Mastodon/ActivityPub is neat too, but personally I don't find
| it as easy to find interesting stuff there, especially if you
| try to run your own solo instance and need to make sure you
| connect to interesting parts of the ActivityPub-net.
| donohoe wrote:
| This is neat but I choose not to do this when it was clear the
| API allowed it. I was on Twitter for over 17 years and I think
| 99% of what I posted is useless and not noteworthy.
|
| I welcome the blank slate that Bluesky provides.
| davely wrote:
| I like the blank slate analogy. I'm in the same boat.
|
| I have tens of thousands of tweets (why, oh why) but personally
| have no desire to move them over. I realize that's important
| for some people. For me, it's enough to just download the
| archive and save it somewhere, in case I ever need to reference
| it again.
| kristiandupont wrote:
| Is there a way to delete all your tweets from X afterwards?
| MortyWaves wrote:
| Can you do the same for Mastodon? What about Mastodon to Bluesky?
| throwaway_2898 wrote:
| As an immigrant non-permanent visa holder I am afraid that X is
| just giving data to the government to find a reason to deport me,
| could moving to bluesky in any way help counter this?
| wffurr wrote:
| Public posts are public regardless. I don't see how your choice
| of network affects this in the slightest.
___________________________________________________________________
(page generated 2025-03-18 23:00 UTC)