[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)