Crossposting to Mastodon and Bluesky failing

I’ve not changed anything in my posting behavior or on my blog, but crossposting has been failing for the last day. I’ve rebuilt a few times. There are errors for Mastodon getting mentions in the logs as well as this (partial):

Feed: Cross-posting exception: 60552764, /home/manton/.rvm/rubies/ruby-3.2.3/lib/ruby/3.2.0/json/common.rb:216:in parse’, unexpected token at 'Just a moment…<meta name=“viewport”…`

I’ve also refreshed the feeds to no avail. @manton Might you take a look at it when you can?

1 Like

That looks like you have a post that has within it the content of a <head> block with that illegal meta tag. Have you tried customizing your feed or adding an external source that may have a feed with invalid HTML in the content of a post?

1 Like

Nope. Haven’t made any changes recently, and it was working just fine until a bit ago. I’ve tried to copy/paste the entire error, but it refreshes the page too quickly to do so. And I’ve only been getting the following error since I refreshed the feed in Sources. The parse error stopped showing up around 2PM PST.

Okay. I finally managed to catch the error, I believe in complete.

Feed: Cross-posting exception: 60552764, /home/manton/.rvm/rubies/ruby-3.2.3/lib/ruby/3.2.0/json/common.rb:216:in `parse', unexpected token at '<!DOCTYPE html><html lang="en-US"><head><title>Just a moment...</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=Edge"><meta name="robots" content="noindex,nofollow"><meta name="viewport" content="width=device-width,initial-scale=1"><style>*{box-sizing:border-box;margin:0;padding:0}html{line-height:1.15;-webkit-text-size-adjust:100%;color:#313131;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}body{display:flex;flex-direction:column;height:100vh;min-height:100vh}.main-content{margin:8rem auto;max-width:60rem;padding-left:1.5rem}@media (width <= 720px){.main-content{margin-top:4rem}}.h2{font-size:1.5rem;font-weight:500;line-height:2.25rem}@media (width <= 720px){.h2{font-size:1.25rem;line-height:1.5rem}}#challenge-error-text{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI0IyMEYwMyIgZD0iTTE2IDNhMTMgMTMgMCAxIDAgMTMgMTNBMTMuMDE1IDEzLjAxNSAwIDAgMCAxNiAzbTAgMjRhMTEgMTEgMCAxIDEgMTEtMTEgMTEuMDEgMTEuMDEgMCAwIDEtMTEgMTEiLz48cGF0aCBmaWxsPSIjQjIwRjAzIiBkPSJNMTcuMDM4IDE4LjYxNUgxNC44N0wxNC41NjMgOS41aDIuNzgzem0tMS4wODQgMS40MjdxLjY2IDAgMS4wNTcuMzg4LjQwNy4zODkuNDA3Ljk5NCAwIC41OTYtLjQwNy45ODQtLjM5Ny4zOS0xLjA1Ny4zODktLjY1IDAtMS4wNTYtLjM4OS0uMzk4LS4zODktLjM5OC0uOTg0IDAtLjU5Ny4zOTgtLjk4NS40MDYtLjM5NyAxLjA1Ni0uMzk3Ii8+PC9zdmc+);background-repeat:no-repeat;background-size:contain;padding-left:34px}@media (prefers-color-scheme:dark){body{background-color:#222;color:#d9d9d9}}</style><meta http-equiv="refresh" content="390"></head><body class="no-js"><div class="main-wrapper" role="main"><div class="main-content"><noscript><div class="h2"><span id="challenge-error-text">Enable JavaScript and cookies to continue</span></div></noscript></div></div><script>(function(){window._cf_chl_opt={cvId: '3',cZone: "hear-me.social",cType: 'managed',cRay: '9251016bc85b699a',cH: '8srLq4.dxnciA.pbrvXn9vAhRd0rlpoecvIJlDUGr88-1742765170-1.2.1.1-a5XjDuVqJw_CQgbqObNBlQgY5RAfuqRCner.l27J8bueXyxOHdJj0AVSTJymRQtS',cUPMDTk: "\/api\/v1\/statuses?__cf_chl_tk=_PBs3gDarCExfAd.iWVDK1lM0onjyDC.gzYXEVBQJWs-1742765170-1.0.1.1-w5r8xfWX8hx2YzN5URPCVq3ng1pHCcPAs6uzrStZ3Fk",cFPWv: 'b',cITimeS: '1742765170',cTTimeMs: '1000',cMTimeMs: '390000',cTplC: 0,cTplV: 5,cTplB: 'cf',cK: "",fa: "\/api\/v1\/statuses?__cf_chl_f_tk=_PBs3gDarCExfAd.iWVDK1lM0onjyDC.gzYXEVBQJWs-1742765170-1.0.1.1-w5r8xfWX8hx2YzN5URPCVq3ng1pHCcPAs6uzrStZ3Fk",md: "CotuhC4JB_cFfRhvPRpg00lbkVPN_87YdEqHRrAa7XM-1742765170-1.2.1.1-dQKm37E6QIn8zttwNp5lvADgWYVEfwWEYAgna_MQ45_lhcqv9YqLjo6_T499qHTKQMiQpAvItCnTi4RxOrhHw1Ksd4MSN_GOzeMJ1WrNhq_FzOTU1.acs370CLIeeVdjUTSycdLsWSKh.uozCnbPw4kJFi37MpcpWV7KFXnR0_gCBGUryJ.rTi8NRZXbjtkXnAKpufWnTqusT.7PJE_sqJ7xtysYQahqzuDDL.5yHXjrlHgxT1cJOt0VG8y2Ut6Zp7HjLuort61uad4OdVKa_HasfqYbxcHmKcOjqInZA8IYG46qcgW3DRt0tdLCQJOV9tgUlYNpGDJgyOsdn02mG8yvWv2L2Ed.i2IhzIQYzA_r_PQsycB.knUPgeNmoHuZiyRjAlnWEMINJOAj8MHNP6RKJ71r51Zly.ZsgsSyv78V12T26XMjeIQF16ILgjA.xXgLLkyREnTXcn_iG9pw7b8_tSI4IA586WazT97aFHh.TnRkhwgzoxG6nVlNU5pplZ9UsbIZazhhI7spla3hyxroCrFtUWSt0Ga1X_mRiUDovYYKOFl4ZXSg7gtQGNcC05ihhy_ct_1G6IuRKi_DLZhLb9am55yRv8Tg32ronLbGYpbzTBUtghHS9Q2hlCpiEF7DrGasgLJxmjVVl3lJAJ.UFGDWDeQNIxoJGxxTCChqPRslj21_iLd5e7pHqkJSdvJFv5Qvc3xsIB2Um6OWD3.i6uljecp50WaGnFg_Wzd6wu6scp2vbPnVt7MMi8JaKia2mj.bt4aSLxipp60U2Nx5EEf08uizBaYA6EAD.ejQBtd7n0db1PJGWjYq0nFjWS9IufedCYY_1UKYdtY8m9QmUjaYhfqrA.Lh_ouIEveAQiDn97kChyNmIz.vxDEJxF4kNIMpfAWvdpOCKJmM62EKQMc3xpiEbl..RzVOs5YENpM9ypyCbTXEtDXAghfMrvpu6u1BJhoRsfaMzXjwkKD2MsE5x3W0jAqp9DYZRHk8N_Woo9QTbogZ_s30sOAj3JvBaSthKMFev1SOT8GfQjyCUHZrjzYxylfVSIFuWV4",mdrd: "QST8xD0JNJ_iJZSe9xvwdFZ8lQpyiJYTp5A8gPHNRAk-1742765170-1.2.1.1-flNKI_TQslpjtj31mWqiHIlzdOee36s69gIHn7fNWMWLtY3RjDZx6TCyJybqqBGGLwuE7zMyYpWKCVXDzyz7tNIlzkqiBUKvDWP11M6twt0u9gsSRg8LuIbVLV46Hh3n5VXCVW3lCc5NSU9B2vm245RjxfJlrzGc6hnwwBXxtliX1bslM1ZgGov6pXAyLUKKe6KiOreuaQFpoOp0ALh9IUVs3mvwK.YXBn06u1C7WhroOiHbRGhCqGpRYfUKdCcZLzLjDdIgevtmEw9.rhe_F7ijTu6fsZxOJSeGNbH9rrvLGLdM_betUQJ1TgUIQ1zNMqTNwBliftQC5h9w1ZcSIMYy6cHLVUfqapjXb539lYDfM_YvsViSB3_cBmnPcpPItmLF3jKEj5WeUJk0NqU2V6Tf4l.Fnx33wvnpDqo1kTJcMl.YRpfBjbafTFJbiI475UMYzM3YGvKy.XL0UtcMOP_EhDi93QMtsE_7Cp0U4dDVIRJTuocjJGfNBZWgBUQ9pWohVNjy8RdPKI0xMVAFtaqJjEjdVoBVmjPgQWMKSM5tp3kI.Zip7r8x8aqvhYxlv5OTjVf0Fo.7.QuSPMdxkSKm9Inw1pyPU3Atq..Okc3cKShPs1RGGzUwaSaUrE8Jz914cnoPIEVAu3Ridjq0UNQL_uoa9cRR5hSgcGy3b2kHtmfz1ZXTZUFTr0zYfgfN.jjkUca7rJtF1ud_EOP0eYqabqgsnlAts0Syvc8aAlr.l9L.A2GysEpZuzDxbracTX8HmxonWCAp2D2j1dXxz2wEzJMngJ_RhuiA1qr57R3s_.zoyBKl2yuFINc3kRa5HbIW9MpQDeLIqv5OtXMr8wBJEJ4mBvT6n1zoZ35dUTC83SW4ZMXIEc5VabY9CAA83yjIIwMJouwnamsU1Z0JXDJ4a3ofcCwbdel.bHNYpk5dYF6FRNHoEnh2T3MjL3s2uA_UW0IqgCugIg6Raih2rVAxaMCJmsu0B8h6y_SB1W80xLGBgnp5csR_QCpFSN978paZ8kFCXBrKB3EkvWvlJH82hMl0tcnIXXmiN.cwHYqQViNhZsEbiS_ERCNUCK6uErqxOdNOyJQ5nN7MDw4fualWaFnQ6e_gcNpeYRsOuwm503eXdGyNkkk6YpnZaRnUBNZE83TugAmtfELqOgvQiFlqDvF0jzk63C0F7lmhnb44Ey6tOMJDrNPLbhX.bL0m05r9GF7vOkdFKhe1FwATxiGZu8La0sI4iOFWy5GppoWRy8btTvy.YiyKFUH1_WhHMbIz3x52732rdquzOWZHZLEqqPttBQl7YbQm8k0bdy1B0U_wEdCOJz_S62O56LcPIhppc56UpUC2rGAKKFguCFZANZAVdcp0ouLvLFHHS_JAbrKDjrNTq30eepeS36ltQSV1mAzh2gB1QXiePQAdg7v6qD0XUrvtAtF3nu7y3IjhQ0aovAYQgoEMedvJiBTtG9_crZPGlIixSloR3_WKnMrFUYNnYFDi_d8PFisxZHT5rvJf2OpXncVUO4EXjZgax9quK0xOQlx39cXU6rB3hBx0IUVL7rn4zuC1GZS7jPljxB5zKFtuy.EFg.PcCPhHAfjOOojD3BQxvYG8aQNcT4xlp0NDYnorSVkYyI.1MXykxG.HK0vmcjXldyy7GYijxEQl5tY2A1iTZzgEO.pRz.Www9GkSJVyCIDrUW.FZSkODftmTksCKaD7UsE5h5Uez0Fgju1EfeAN9JN4DJ1U_ly3osaPrBLTtx1xrx1zPCrs6H6R11G9E.BgVRedjqQ.FzOZH96WhThuj75IBiFq9k9jW.HJ8MQMJNXb.lwWRsjv74wWWklQoRSt_ON.TefhfIHvDWwDe8fIDVMw_V4WZ31MzoqmAqKTwASxxsSposc6s6knlCz3HJKY9UuUkfrfEp66c5_mehlqqMF6OSJIOyKcrd8cHJkzdy_Xi5wve_gTDip6jv9f3WOOqhk_GFqtXOVz0YHd4j2nrAElsDNiajBvxVNt9Ss8aAQhwrLWiwo_YMe09ZpPPU1qoMdsQbf36WO1H7bbcqOsyRNYbmBLhFghdEstNdc5VtHcRgUrFm4zkIiTzztNlVg3qMWKu0vY_gVpxl5hac6VqB0yI_qSVQAilLPMCHeG0DuXQ.gQYTI2IAhYne7HYPkvcyBILA5ptAEIYr4_auua7sQUyMJbSJlEcbSu48NTBU_9uw_lkzUs7TVZl_enIsK4OxcWOeJnV5JMY.TQowtKtwyf9q2ufLhpTgWpno2g5ieu7pLrr7_AiQuNfcfoBeyiX.GuGQANMrs.88c.390sai1HNydL_aPcDcQsKqNDxASNzbP.EqjzENGgapgcFM46kqE_Wj6WxBzkXEe4MzL6Zv5TVRKtXbvtT6YZfBmJDa9Qz1V2Zudrw98bL3sMJDnSTTOQp9Sjclil6gtafGk7IX51JMorgfnlX.eeRdo3ysywVhnvWRl.ERClFTouJx1VSPQuNTjNuZxSUHTYIbbUqqXcNt3IXW5cclfktJrIE1qLksMB38SojDCLiKUHwdyVlG4BQeQNhYI3T7rAo8HY15iNuSfvmhrpLOe0D1.s3BiGzw7nTGO_zO7FfB.c3VZDVRXe6oVNFuqEv.leNNUjLrVT3hOPxA"};var cpo = document.createElement('script');cpo.src = '/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9251016bc85b699a';window._cf_chl_opt.cOgUHash = location.hash === '' && location.href.indexOf('#') !== -1 ? '#' : location.hash;window._cf_chl_opt.cOgUQuery = location.search === '' && location.href.slice(0, location.href.length - window._cf_chl_opt.cOgUHash.length).indexOf('?') !== -1 ? '?' : location.search;if (window.history && window.history.replaceState) {var ogU = location.pathname + window._cf_chl_opt.cOgUQuery + window._cf_chl_opt.cOgUHash;history.replaceState(null, null, "\/api\/v1\/statuses?__cf_chl_rt_tk=_PBs3gDarCExfAd.iWVDK1lM0onjyDC.gzYXEVBQJWs-1742765170-1.0.1.1-w5r8xfWX8hx2YzN5URPCVq3ng1pHCcPAs6uzrStZ3Fk" + window._cf_chl_opt.cOgUHash);cpo.onload = function() {history.replaceState(null, null, ogU);}}document.getElementsByTagName('head')[0].appendChild(cpo);}());</script></body></html>', JSON::ParserError

I’m not sure how to make it wrap, if that’s even possible.

It does look like Micro.blog is getting an HTML page when downloading your feed instead of the JSON Feed. We’ve seen this happen when a domain name is using something that has an extra security check, for example, but that is usually for external feeds hosted somewhere else.

The “Just a moment…” in the response does point to that too.

Are you using Cloudflare or something else that is proxying the request to your domain name?

1 Like

Nope. Just a straight pointer from name.com, ever since I attached my custom domain to it, and that was some time ago. Last year.

I think I’ve figured it out. Last year when you were using a different domain name, we had to hardcode the IP address on our servers to work around some issue that I’ve forgotten about now. It looks like that was still interfering and routing the requests to the wrong server all of a sudden, maybe when the old domain expired.

Let us know if the problem doesn’t go away now.

1 Like

Will do. I was just about to post, and I’ll check to see if the old x-posts go through.

It’s still throwing the error getting mentions fault. I just realized that even though I’ve noted it is not crossposting to Bluesky as well, there are no errors indicating that in the logs.

I don’t know if this was smart or not, but I disabled my Mastodon source in order to reauthorize it. It failed. I then removed the existing auth, and it looked like it was going to work, then it failed. I’m not going to touch Bluesky for now.

I checked notifications from my Mastodon instance admin, and found this:

“On this Mastodon server, your IP address is not captured. Since this server is behind Cloudflare protection and the firewall only accepts traffic from Cloudflare proxy servers, the only IP address recorded is the IP address of the Cloudflare proxy server you connected through, which might be the closest to your location, or not.”

Not sure if that might be a contributing factor.

Good troubleshooting! Yes, the error is happening because your Mastodon instance is behind a Cloudflare reverse proxy. Here are some possible solutions:

  • The Mastodon instance admin could configure Cloudflare to allow Micro.blog’s servers to access the Mastodon API.
  • Or they could stop using Cloudflare.
  • You could move to another Mastodon instance.
1 Like

That’s very likely and I can ask the admin to add micro.blog to the whitelist. The only issue with that is that my Bluesky crossposts have also not been working over the same time frame.

I think, though I’m not certain, that crossposting may be tried sequentially so failing on the first one it tries to do may stop it from proceeding to attempt other crossposting.

Depending on how @manton has implemented the cross-posting, that might make sense. If cross-posting happens sequentially, a failure with Mastodon might prevent the Bluesky cross-posting code from executing.

My theory is that if you temporarily disable cross-posting to Mastodon, cross-posting to Bluesky will start working again.

Edit: yeah, what @jsonbecker said. :blush:

@sod Could also be, but since I’ve removed Mastodon in order to re-authenticate it, it’s no longer in the chain and subsequent posts have not been crossposted to Bluesky. Definitely high quality elimination process, though :grinning: which I appreciate. This might suggest that there is both a crossposting issue and that I only happened across the Cloudflare proxy issue because I detached Mastodon whilst troubleshooting. Of course, as a writer, it’s all well beyond my pay-grade :rofl:

Confirming that cross-posting happens sequentially, so if anything blows up, unfortunately it halts processing the other services. I’m sorry about this limitation and can work on making it less fragile.

Well, that settled that! I guess I had made my last post before I removed Mastodon crossposting. I just posted a test message, and it’s gone to Bluesky and Tumblr as expected. I’ve sent a note to my instance admin asking to add Micro.blog to the Cloudflare whitelist, and he’s also very responsive. His name is Jerry. AdminJerry.

Reminds me of that Primus song. Jerry was a masto admin… :rofl:

1 Like

Just to follow up, Jerry got back to me and sent me a screenshot of his logs. There doesn’t appear to be any blocking going on. So, below are a screenshot of the salient portion of his logs and the two shots I took to show him my process.



Thanks for the screenshots! I have another theory if why this was happening and I just rolled out a fix for it. Can you try signing in one more time?

1 Like

Tried again after a shift-reload and still the same error. Also tried with fresh logins on Mb and hear-me on my iPhone Safari and same result.