-
Notifications
You must be signed in to change notification settings - Fork 52
/
about.html
1033 lines (938 loc) · 46.9 KB
/
about.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
{% extends "base.html" %}
{% block title %}About - Bridgy{% endblock %}
{% block body_class %} about {% endblock %}
{% block content %}
<li id="what" class="question">What is this?</li>
<li class="answer">
<p>Bridgy pulls comments, likes, and reshares on social networks back to your
web site. You can also use it to post to social networks - or comment, like,
reshare, or even RSVP - from your own web site.
</p>
<p>A picture is worth a thousand words, so here's a screenshot of comments,
likes, etc. that Bridgy sent to a
<a href="https://snarfed.org/2014-01-15_a-new-kingdom#comments"
target="_blank">post on my own site</a>:
</p>
<br />
<p>
<a href="https://snarfed.org/2014-01-15_a-new-kingdom#comments" target="_blank">
<img id="screenshot" src="/static/example_post_screenshot.png"
style="border: 1px solid lightgray; max-width: 100%" />
</a></p>
<br />
<p>Here's a screencast of Bridgy sending an Instagram comment and like to my web
site:</p>
<p style="text-align: center">
<iframe src="//www.youtube.com/embed/eGMNItivBdY"
width="420" height="315" class="shadow" frameborder="0" allowfullscreen>
</iframe>
</p>
<p>Bridgy is part of the
<a href="http://indiewebcamp.com/">IndieWeb</a> ecosystem. In IndieWeb lingo,
Bridgy offers
<a href="http://indiewebcamp.com/backfeed">backfeed</a>,
<a href="http://indiewebcamp.com/POSSE">POSSE</a>, and
<a href="http://indiewebify.me/#send-webmentions">webmention</a> support as a
service.</a>
</p>
<p>Read on for more details, or
<a href="/">head to the front page</a> to sign up and get started!</p>
</li>
<br />
<ul class="about">
<p><em>General</em></p>
<li><a href="#how">How does it work?</a></li>
<li><a href="#cost">How much does it cost?</a></li>
<li><a href="#privacy">What do you do with my data?</a></li>
<li><a href="#who">Who are you? Why did you make this?</a></li>
<li><a href="#history">How long has this been around?</a></li>
<li><a href="#stats">How big is this?</a></li>
<li><a href="#profile-link">Why does my web site URL need to be in my social
network profile?</a></li>
<li><a href="#disconnected">Bridgy stopped working for me!</a></li>
<li><a href="#facebook-expired">Bridgy used to work with my Facebook account,
but now it doesn't!</a></li>
<li><a href="#facebook-pages">Does it support Facebook pages?</a></li>
<li><a href="#security">It looks like anyone can poll or disable my
account or publish as me. Isn't that a security hole?</a></li>
<li><a href="#registration-api">Can users sign up for Bridgy
without leaving my site or application?</a></li>
<li><a href="#bug">I found a bug! I have a feature request!</a></li>
<li><a href="#cute">Brid.gy? Really?</a></li>
<br />
<p><em>Pulling back responses</em></p>
<li><a href="#which">Which things does it send, specifically?</a></li>
<li><a href="#accept">How can I get my web site to accept
webmentions?</a></li>
<li><a href="#realtime">Bridgy isn't seeing one of my comments or
likes or reshares!</a></li>
<li><a href="#missing">...but it's been a while, and Bridgy
still hasn't seen it!</a></li>
<li><a href="#domain">Bridgy can't find my original posts! It just
says <em>No webmention targets found</em>.</a></li>
<li><a href="#link">Do my posts really need to link my web site?</a></li>
<li><a href="#appspot">What are all these brid-gy.appspot.com links
in the comments that Bridgy sends to my site?</a></li>
<li><a href="#ssl">OK, fine. But why brid-gy.appspot.com instead of
brid.gy?</a></li>
<li><a href="#source-urls">What's the format for Bridgy's webmention
source URLs?</a></li>
<br />
<p><em>Publishing</em></p>
<li><a href="#publishing">What do you mean, <em>publishing</em>?</a></li>
<li><a href="#microformats">How does it decide which parts of my web
page to include?</a></li>
<li><a href="#publish-types">What can I publish, exactly?</a></li>
<li><a href="#webmentions">Can I do this automatically, whenever
I post something new on my web site?</a></li>
<li><a href="#reply">How do I reply to a tweet from my web site?</a></li>
<li><a href="#like">How do I like, retweet, or RSVP from my web site?</a></li>
<li><a href="#picture">How do I post a picture?</a></li>
<li><a href="#facebook-publish">What happened to publishing Facebook
comments and likes?</li>
<li><a href="#omit-link">Can I disable the link back to my post?</a></li>
<li><a href="#ignore-formatting">Can I disable the plain text whitespace and
formatting?</a></li>
<li><a href="#silo-content">I want more control over the text that gets posted.</li>
<li><a href="#short-link">Can I include a short link instead of the full link?</a></li>
<li><a href="#response">How does Bridgy respond to webmentions?</a></li>
<li><a href="#error-response">How about error responses?</a></li>
<li><a href="#silos">Why only Facebook and Twitter? Why not Google+ or
Instagram?</a></li>
<li><a href="#401">I'm getting a <em>401: Unauthorized</em> error when I try
to publish to Twitter.</a></li>
<br />
<p><em>Webmentions for blogs</em></p>
<li><a href="#blogs">What is this?</a></li>
<li><a href="#outgoing">What outgoing webmentions does it send from my
blog?</a></li>
<li><a href="#incoming">What does it do with incoming webmentions send to my
blog?</a></li>
<li><a href="#endpoint">Why do I have to add that line of HTML to
my blog?</a></li>
<li><a href="#disqus">I'm on Tumblr. Why do I have to install Disqus?</a></li>
<li><a href="#moderation">I received a webmention, but it's not
showing up on my blog.</a></li>
<li><a href="#user">All the comments for incoming webmentions come from me.
That's ugly.</a></li>
</ul>
<br />
<div>
<ul class="about">
<!-- General -->
<li id="how" class="question">How does it work?</li>
<li class="answer">
<p>
Bridgy periodically checks social networks for responses to your posts and
<a href="http://indiewebcamp.com/original-post-discovery">links to your web
site</a> and sends them back to your site
as <a href="http://indiewebify.me/#send-webmentions">webmentions</a>. Bridgy
also translates the responses
to <a href="http://microformats.org/">microformats</a> so that your web site can
fetch and parse them.
</p>
<p>
Bridgy can also publish posts, comments, likes, and RSVPs from your web
site <em>to</em> social networks. When you ask Bridgy to publish a post, it
analyzes its microformats data and publishes it using the social network APIs.
</p>
<p>Bridgy is <a href="https://github.com/snarfed/bridgy">open source</a>. It's
written in Python and runs on
<a href="http://appengine.google.com/">Google App Engine</a>. It uses
<a href="https://github.com/snarfed/oauth-dropins">oauth-dropins</a> to let
users connect to the silos,
<a href="https://github.com/snarfed/granary">granary</a>
to fetch data from the silos and convert it to a standard format, and
<a href="https://github.com/vrypan/webmention-tools">webmention-tools</a> to
send webmentions.
</p>
</li>
<li id="cost" class="question">How much does it cost?</li>
<li class="answer">
<p>Nothing! We have <a href="https://getcolor.com/">great day jobs</a>, and
Bridgy is small, so thanks to <a href="http://appengine.google.com/">App
Engine</a>, it doesn't cost much to run. We don't need donations, promise.
</p>
<p>If you <em>really</em> want to
contribute, <a href="https://github.com/snarfed/bridgy/issues">file an issue</a>
or <a href="https://github.com/snarfed/bridgy">send a pull request</a>, or
feel free to donate to the
<a href="http://www.aspca.org/">ASPCA</a> or the
<a href="https://www.eff.org/">EFF</a> in our name.
</p></li>
<li id="privacy" class="question">What do you do with my data?</li>
<li class="answer">
<p>Nothing! Bridgy isn't a business, and never will be, so we don't have the same
motivations to abuse your data that other services might. More concretely, we
won't ever send you email, we store as little of your
<a href="http://en.wikipedia.org/wiki/Personally_identifiable_information">PII</a>
(personally identifiable information) as possible, and we <em>never</em> have
access to any of your passwords.
</p>
</li>
<li id="who" class="question">Who are you? Why did you make this?</li>
<li class="answer">
<p>
We're <a class="h-card" href="https://snarfed.org/">Ryan Barrett</a>,
<a class="h-card" href="https://kylewm.com/">Kyle Mahan</a>, and
<a href="https://github.com/snarfed/bridgy/graphs/contributors">many other
contributors</a>. We're just normal people who
<a href="https://snarfed.org/2012-07-25_why_i_have_my_own_web_site">like the
web</a> and like <a href="http://indiewebcamp.com/why">owning our data</a>.
</p>
</li>
<li id="history" class="question">How long has this been around?</li>
<li class="answer">
<p>Ryan started working on Bridgy in the summer of 2011
and <a href="https://snarfed.org/2012-01-08_bridgy_launched">launched the first
version</a> on Jan. 8 2012. It only
supported <a href="http://wordpress.org/">WordPress</a>, and wasn't very
polished, so it never got much adoption.
</p>
<p>He launched the current version on Dec. 9, 2013. It's been more successful,
thanks in large part to
<a href="http://indiewebify.me/#send-webmentions">webmentions</a> and the
inspiration of the
<a href="http://indiewebcamp.com/why">IndieWeb community</a>.
</p>
</li>
<li id="stats" class="question">How big is this?</li>
<li class="answer">
<p>Check out the <a href="/#stats">stats on the front page</a>!</p>
</li>
<li id="profile-link" class="question">Why does my web site URL need to be in my
social network profile?</li>
<li class="answer">
<p>First, if you want to <a href="#publish">publish</a>, Bridgy uses this link
to connect your web site to your social network account. Second, if you want to
get responses without linking your posts to your web site, Bridgy uses this link
to <a href="#link">fetch syndication URLs</a> from your site so it can map back
from your posts.</p>
</li>
<li id="disconnected" class="question">Bridgy stopped working for me!</li>
<li class="answer">
<p>Does your Bridgy user page have a
<span class="glyphicon glyphicon-pause"></span> icon on it? If so, Bridgy has
lost access to your account. This can happen when you change your password, when
Bridgy's access expires or is revoked, or for other reasons.</p>
<p>To fix this, just click on the
<span class="glyphicon glyphicon-pause"></span> icon on your user page.
</p></li>
<li id="facebook-expired" class="question">Bridgy used to work with my Facebook
account, but now it doesn't!</li>
<li class="answer">
<p>Facebook <a href="https://developers.facebook.com/docs/roadmap/completed-changes/offline-access-removal/">only
lets apps access your account for two months at a time</a>. That time period
automatically extends when you interact with an app yourself, but Bridgy works
in the background, without user interaction. So, you'll need to come back every
two months and log into Facebook again to renew its access to your account.</p>
<p>Don't worry! You don't need to remember to do this yourself. Bridgy will send
you a notification on Facebook when you need to renew. Just click on the
notification, and you'll be set for another two months.
</p></li>
<li id="facebook-pages" class="question">Does it support Facebook pages?</li>
<li class="answer">
<p>Yes! If you log in as a Facebook user who's an admin of a page, you can
choose that page during signup.</p>
</li>
<li id="security" class="question">It looks like anyone can poll or disable my
account or publish as me. Isn't that a security hole?</li>
<li class="answer">
<p>Looks can be deceiving. Polling is harmless - Bridgy does it automatically
anyway - and when you publish a post or try to disable an account, we check that
you own it first. If you <a href="#webmentions">publish via webmention</a>, we
<a href="https://brid.gy/about#webmentions">require a Bridgy Publish backlink</a>
in your post.
</p>
</li>
<li id="registration-api" class="question">Can users sign up for Bridgy
without leaving my site or application?</li>
<p>Not exactly, but you can get close. Direct your users to
<code>POST</code> to a Bridgy registration URL of the
form <code>https://brid.gy/SITE/start</code> (where SITE is
<code>facebook</code>, <code>twitter</code>, <code>googleplus</code>,
<code>instagram</code>, or <code>flickr</code>)with the parameters:</p>
<ul>
<li><code>feature</code>, a comma-separated list of features,
usually <code>listen</code>, <code>publish</code>,
or <code>listen,publish</code></li>
<li><code>callback</code> a URL pointing back to your site</li>
<li> <code>user_url</code> (optional), the user's URL. Allows callers to set
this value without requiring it to be present in the user's silo profile</li>
</ul>
<p>They will be ushered through the registration process and sent back to
your site when it finishes.</p>
<p>For example:</p>
<pre>
POST <a href="https://brid.gy/facebook/start">https://brid.gy/facebook/start</a>
<span class="keyword">feature=</span><span class="value">listen</span>&<span class="keyword">callback=</span><span class="value">http%3A%2F%2Fexample.com%2Fbridgy-callback</span>
POST <a href="https://brid.gy/twitter/start">https://brid.gy/twitter/start</a>
<span class="keyword">feature=</span><span class="value">listen,publish</span>&<span class="keyword">callback=</span><span class="value">http%3A%2F%2Fexample.com%2Fbridgy-callback</span>
</pre>
<p>The callback will be passed back query parameters:</p>
<ul>
<li><code>result</code> equal to <code>success</code>, <code>failure</code>, or <code>declined</code></li>
<li><code>user</code> (if successful) equal to their Bridgy user page URL</li>
</ul>
<li id="bug" class="question">I found a bug! I have a feature request!</li>
<li class="answer">
<p>Great! Please <a href="https://github.com/snarfed/bridgy/issues">file it in
GitHub</a>. Thank you!
</p>
</li>
<li id="cute" class="question">Brid.gy? Really?</li>
<li class="answer">
<p>Yeah, we know. We're not proud of the cutesy domain name either. Just go with it.
</p>
</li>
<!-- Listen -->
<br />
<h3 id="listen">Pulling back responses</h3>
<li id="which" class="question">Which things does it send, specifically?</li>
<li class="answer">
<p>Bridgy detects and sends webmentions for:</p>
<ul>
<li>Twitter
<a href="https://support.twitter.com/articles/14023-what-are-replies-and-mentions">@-replies</a>,
retweets, quote tweets, and favorites of your tweets.</li>
<li>Tweets from other people that
<a href="https://support.twitter.com/articles/14023-what-are-replies-and-mentions">@-mention</a>
you or contain links to your site.</li>
<li>Facebook comments on and likes of your posts.</li>
<li>Facebook shares of your posts
<a href="https://github.com/snarfed/bridgy/issues/510">from other Bridgy
users</a>.</li>
<li>Facebook event RSVPs. <a href="http://indiewebcamp.com/rsvp">Details.</a></li>
<li>Google+ comments, +1s, and reshares of your posts.</li>
<li>Google+ posts from other people that contain links to your site.</li>
<li>Instagram comments and likes on your pictures.</li>
<li>Flickr comments and favorites on your photos.</li>
</ul>
</li>
</p></li>
<li id="accept" class="question">How can I get my web site to accept
webmentions?</li>
<li class="answer">
<p>Webmentions are pretty new, but many web servers already support them. If
you're on Blogger, Tumblr, or WordPress.com, <a href="/">you can sign your blog
up with Bridgy</a> to accept webmentions. If you're on self-hosted WordPress,
<a href="http://wordpress.org/plugins/indieweb/">install the Indieweb
plugin</a>. Otherwise,
<a href="http://indiewebcamp.com/webmention#Publishing_Software">check out the
Indiewebcamp wiki</a> for a list of options.
</p></li>
<li id="realtime" class="question">Bridgy isn't seeing one of my comments or
likes or reshares!</li>
<li class="answer">
<p>Bridgy doesn't work immediately. It checks your accounts for new activity
periodically, every 5 to 30 minutes or so depending on the site. This drops down
to once a day if you've been signed up for over a week and we haven't
successfully sent you a webmention yet, or the last one we sent was over a month
ago.
</p>
<p>(Twitter favorites and retweets used to be an
exception, since Bridgy used
<a href="https://dev.twitter.com/docs/streaming-apis">Twitter's Streaming
API</a> for a while, but
<a href="https://github.com/snarfed/bridgy/issues/57">not any more</a>.)
</p></li>
<li id="missing" class="question">...but it's been a while, and Bridgy
still hasn't seen it!</li>
<li class="answer">
<p>This can happen for a number of different reasons.</p>
<ul>
<li>Does the social network post have a link to your web site's post? If not,
does your web site's post have a
<a href="#link">rel-syndication link</a> to the social network post?
Bridgy needs at least one or the other so it can connect the two posts.
</li>
<li>Did you write the original post yourself? Bridgy doesn't crawl other people's
posts, even if they have links to your web site. It only sends back responses
to <em>your</em> posts.
</li>
<li>Is the post fully public? And the response too? Bridgy only shows and sends
webmentions for fully public posts and responses. If your default Facebook
audience is "friends" or "friends of friends," or your Twitter account
is <a href="https://dev.twitter.com/docs/platform-objects/users#protected">protected</a>,
or your Google+ post wasn't sent to "public," Bridgy won't see it.
<p>Instagram is the one exception. The Instagram API
<a href="https://groups.google.com/forum/m/#!topic/instagram-api-developers/DAO7OriVFsw">doesn't
expose</a> whether an account
is <a href="http://help.instagram.com/448523408565555">private</a>, so Bridgy
handles all Instagram photos and comments. If your Instagram account is private,
don't sign it up for Bridgy!
</li>
<li>Facebook's API isn't great about this either.
<a href="https://github.com/snarfed/bridgy/issues/611">Sometimes it doesn't give
us enough information to tell whether a post is public or private.</a> When that
happens, we have to default to assuming it's not public, which means we
occasionally miss posts (usually photos) that look public inside Facebook.
</li>
<li>Is it on an older post? Bridgy only looks at your 50 most recent posts. It
doesn't go back arbitrarily far because that doesn't scale. You can get around
this for an individual response by
<a href="http://indiewebcamp.com/webmention#How_to_Test_Webmentions">sending a
webmention manually</a>. <a href="#source-urls">Here's how to
construct the source URL.</a>
</li>
<li>Is it a Twitter @-reply? Does it
<a href="https://support.twitter.com/articles/14023-what-are-replies-and-mentions">@-mention</a>
you? Twitter's API
<a href="https://dev.twitter.com/discussions/10056">doesn't have a way to get a
tweet's replies</a>, so Bridgy searches for @-mentions of the tweet's author to
find its replies. That means it can't always find replies that omit the
@-mention.
<p>Also, Twitter's search API is sadly
<a href="https://dev.twitter.com/docs/faq#8650">best effort only</a>, ie it
doesn't guarantee that it returns all matching tweets for a search. Every now
and then it may not be able to find one of your replies, which means Bridgy will
miss it. Sadface.
</li>
<li>Are you using a <a href="#link">syndication link</a>? If so, Bridgy may have
fetched your post before you added the link. When that happens, Bridgy waits up
to two hours before it refetches your post and reloads syndication links. Try
clicking the <em>Crawl now</em> button on your user page.
</li>
</ul>
</li>
<li id="link" class="question">Do my posts really need to link my web site?</li>
<li class="answer">
<p>Nope! You can
use <a href="http://indiewebcamp.com/rel-syndication">rel-syndication</a> lookup
instead. It fetches the web site field in your social network profile and
follows each
<a href="http://microformats.org/wiki/h-entry">h-entry</a> to its post permalink
page and look there for rel-syndication or u-syndication links. If you publish
an unfiltered <a href="http://microformats.org/wiki/h-feed">h-feed</a> somewhere
other than your homepage, you can point Bridgy to it by including <code><link
rel="feed"></code> on the homepage. See the
<a href="http://indiewebcamp.com/original-post-discovery">original post
discovery</a> and <a href="http://indiewebcamp.com/posse-post-discovery">posse
post discovery</a> algorithms for all the gory details.
</p></li>
<li id="domain" class="question">Bridgy can't find my original posts! It just
says <em>No webmention targets found</em>.</li>
<li class="answer">
<p>Does your Bridgy user page have a link to your web site? Specifically, the
exact domain where your original posts are? If not, add that URL to your social
network profile, then log into Bridgy with that social network again. Bridgy
needs this to find your original posts <a href="#link">if you don't link to
them</a>, and it also uses it to
<a href="https://github.com/snarfed/bridgy/issues/51">distinguish between you
officially syndicating your posts and other people just mentioning them</a>.
</p>
<p>
Google+ and Facebook let you add multiple web site links to your profile. (You
can do it on Facebook by separating links with spaces or newlines.) Twitter,
Instagram, and Flickr only allow one, so Bridgy
<a href="https://github.com/snarfed/bridgy/issues/483">also looks for links
in your profile's description field</a>.
</p></li>
<li id="appspot" class="question">What are all these brid-gy.appspot.com links
in the responses that Bridgy sends to my site?</li>
<li class="answer">
<p>Short answer: your
server's <a href="http://www.webmention.org/">webmention</a> code is probably
rendering the webmention source URL. It should instead use the source
page's <a href="http://microformats.org/wiki/h-entry#Properties">microformats2
u-url property</a>. This is a common oversight, since they're usually the same,
but Bridgy is a special snowflake. :P You might want to file a bug against your
server, or even fix it
yourself. <a href="https://github.com/idno/idno/issues/160">Here's an example
discussion.</a>
</p>
Longer answer: Webmentions</a> don't include the actual content of the response,
just a link to it. The recipient fetches that link and extracts the content and
other data using
<a href="http://microformats.org/wiki/microformats2">microformats2</a>. The
social networks don't (yet) support microformats2, so Bridgy translates their
data to microformats2 HTML and serves those translations as webmention targets
so that recipients can fetch and parse them.
<p>
</p></li>
<li id="ssl" class="question">OK, fine. But why brid-gy.appspot.com instead of
brid.gy?</li>
<li class="answer">
<p>It's an SSL thing. The <a href="https://brid.gy">brid.gy</a> domain fully
supports and uses SSL, but it uses
<a href="http://en.wikipedia.org/wiki/Server_Name_Indication">SNI</a>, a newer
SSL feature that some older clients and libraries have trouble with. Modern
browsers are generally fine, but when Bridgy sends a webmention, the
server that receives it also needs to understand SNI,
<a href="https://github.com/snarfed/bridgy/issues/20">and some</a>
<a href="https://github.com/aaronpk/webmention.io/issues/14">still don't</a>.
<a href="https://appspot.com/">appspot.com</a>'s SSL doesn't use SNI, so we use
it for webmention sources in order to be as compatible as possible.
</p></li>
<li id="source-urls" class="question">What's the format for Bridgy's webmention
source URLs?</li>
<li class="answer">
<p>If you're missing a response (<a href="#missing">it can happen</a>), you can
fill it in by
<a href="http://indiewebcamp.com/webmention#How_to_Test_Webmentions">sending a
webmention manually</a>. Here's how to construct Bridgy's source URLs:
</p>
<pre>/post/<span class='keyword'>SITE</span>/<span class='keyword'>USER_ID</span>/<span class='value'>POST_ID</span>
/comment/<span class='keyword'>SITE</span>/<span class='keyword'>USER_ID</span>/<span class='value'>POST_ID</span>/<span class='value'>COMMENT_ID</span>
/like/<span class='keyword'>SITE</span>/<span class='keyword'>USER_ID</span>/<span class='value'>POST_ID</span>/<span class='value'>LIKED_BY_USER_ID</span>
/repost/<span class='keyword'>SITE</span>/<span class='keyword'>USER_ID</span>/<span class='value'>POST_ID</span>/<span class='value'>SHARE_POST_ID</span>
/rsvp/facebook/<span class='keyword'>USER_ID</span>/<span class='value'>EVENT_ID</span>/<span class='value'>RSVP_USER_ID</span>
</pre>
<p>Examples:</p>
<ul>
<li><a href="https://brid.gy/post/twitter/schnarfed/476408043819659264">
/post/twitter/schnarfed/476408043819659264
</a></li>
<li><a href="https://brid.gy/comment/instagram/caseorganic/745317887583248368_5792358/745746409237831003">
/comment/instagram/caseorganic/745317887583248368_5792358/745746409237831003
</a></li>
<li><a href="https://brid.gy/like/googleplus/103651231634018158746/z12ctz3xpyjlilkc422wif14hsagevxyj04/109885715467340555570">
/like/googleplus/103651231634018158746/z12ctz3xpyjlilkc422wif14hsagevxyj04/109885715467340555570
</a></li>
<li><a href="https://brid.gy/repost/twitter/schnarfed/478564735265157120/478788580504899584">
/repost/twitter/schnarfed/478564735265157120/478788580504899584
</a></li>
<li><a href="https://brid.gy/rsvp/facebook/212038/675481332531191/724885424">
/rsvp/facebook/212038/675481332531191/724885424
</a></li>
</ul>
<br />
<p>Details:</p>
<ul>
<li><code class='keyword'>SITE</code> is either <code>facebook</code>,
<code>flickr</code>,<code>googleplus</code>, <code>instagram</code>,
or <code>twitter</code>.
</li>
<li><code>/post/...</code> URLs aren't currently used by Bridgy itself, but
they're fun to play with if you want to convert silo posts to
microformats2.
</li>
<li>You can add <code>?format=json</code> to the end of any URL to get the
JSON-formatted version.
</li>
<li>For Twitter and Instagram, <code class='keyword'>USER_ID</code> is your
username, but for Facebook, Flickr, and Google+, it's your numeric user id.
<code class='value'>LIKED_BY_USER_ID</code> and
<code class='value'>RSVP_USER_ID</code> are always numeric. You
can get numeric user ids from the API consoles
(<a href="https://developers.facebook.com/tools/explorer">Facebook</a>,
<a href="https://developers.google.com/+/api/latest/people/get#try-it">Google+</a>,
<a href="https://apigee.com/embed/console/twitter">Twitter</a>) or
from <a href="https://granary-demo.appspot.com/">granary</a>.
</li>
<li>For Instagram, <code class='value'>POST_ID</code> is a numeric id,
<em>not</em> the alphanumeric id in the photo's web URL. You can get a numeric
id from <a href="https://granary-demo.appspot.com/">granary</a>.
</li>
<li>If your webmention target complains about <code>brid.gy</code>'s SSL, try
<code>brid-gy.appspot.com</code> instead. <a href="#ssl">More details.</a>
</li>
</ul>
</li>
<!-- Publish -->
<br />
<h3 id="publish">Publishing</h3>
<li id="publishing" class="question">What do you mean, <em>publishing</em>?</li>
<li class="answer">
<p>People often post something on their web site, then post a link to it on
Facebook or Twitter so that other people will see it. The
<a href="http://indiewebcamp.com/">IndieWeb</a> community calls this
<a href="http://indiewebcamp.com/POSSE">POSSE</a>. There are
<a href="http://indiewebcamp.com/why">lots of different reasons</a> to do this,
but one of the biggest is <em>owning your data</em>. Bridgy lets you do this
faster, more effectively, and even automatically!</p>
<p>You can try it right now. Once you're signed up to publish, plug the URL for
one of your posts into the text box on your Bridgy user page, then hit
the <em>Preview</em> button. You'll see a preview of what your post would look
like as a Facebook post or Twitter tweet. If you like it, click <em>Send</em>
and Bridgy will post it for you.</p>
<p>It's not just for posts or tweets, either! You can use Bridgy to publish
<a href="#reply">replies</a>,
<a href="#repost">retweets</a>,
<a href="#like">likes</a>,
<a href="#like">RSVPs</a>, and even tag people in
photos! <a href="#publish-types">Here's the full list.</a>
</li>
<li id="microformats" class="question">How does it decide which parts of my web
page to include?</li>
<li class="answer">
<p>Magic! Most major blog engines and CMSes are supported out of the box, no
setup necessary. Bridgy looks for
<a href="http://microformats.org/">microformats</a> in your HTML, first
the
<a href="http://microformats.org/wiki/microformats2">microformats2</a>
<code>e-content</code> class and then the legacy <code>entry-content</code>
class. It also understands more advanced microformats2 classes like
<a href="http://microformats.org/wiki/rel-in-reply-to"><code>in-reply-to</code></a>,
<a href="http://indiewebcamp.com/like"><code>u-like-of</code></a>,
<a href="http://indiewebcamp.com/like"><code>u-repost-of</code></a>,
<a href="http://indiewebcamp.com/rsvp"><code>p-rsvp</code></a>, and
<a href="http://indiewebcamp.com/photo"><code>u-photo</code></a>, and
<a href="http://indiewebcamp.com/tag"><code>u-category</code></a> (for
<a href="http://indiewebcamp.com/person-tag">tagging</a>). Here's an example:
<pre><div class="<span class='keyword'>h-entry</span>"><p class="<span class='keyword'>e-content</span>">
<span class='value'>Two naked tags walk into a bar. The bartender exclaims, "Hey, you can't come in here without microformats, this is a classy joint!"</span>
</p></div>
</pre>
</p>
<p>In general, Bridgy prefers to use <code>p-summary</code> if available, then
the full <code>e-content</code>, and finally <code>p-name</code>, in that order.
The one exception is original tweets (not <a href="#reply">@-replies</a>) on
Twitter: for those, it prefers <code>p-name</code> before <code>e-content</code>.
<a href="https://github.com/snarfed/bridgy/issues/228">Background</a>
<a href="https://github.com/snarfed/bridgy/issues/219">discussion</a>.
</p>
<p>Bridgy also tries to preserve some formatting and whitespace, notably
newlines and lists, when converting your post's HTML to plain text. Try
previewing a post to see how it will look!
</p>
</li>
<li id="publish-types" class="question">What can I publish, exactly?</li>
<li class="answer">
<p>Bridgy can publish:</p>
<ul>
<li>Twitter tweets, @-replies, retweets, and favorites. Tweets and @-replies
may include
<a href="https://dev.twitter.com/rest/reference/post/statuses/update#api-param-media_ids">up to four photos</a> or one video.</li>
<li>Facebook posts and RSVPs, <a href="#facebook-publish">but not comments or
likes</a>. Posts may include a photo, video, and/or
<a href="http://indiewebcamp.com/person-tag">people tags</a>.</li>
<li>Instagram likes, but
<a href="http://instagram.com/developer/endpoints/media/#get_media_popular">not
photos or videos</a>
<a href="http://instagram.com/developer/endpoints/comments/#post_media_comments">or
comments</a>.</li>
<li>Flickr photos, videos, comments, and favorites. Photos may include
<a href="https://indiewebcamp.com/tags">tags</a> and/or
<a href="https://indiewebcamp.com/person-tag">people tags</a>.</li>
<li>Nothing on Google+, sorry.
<a href="https://developers.google.com/+/api/latest/">Their API is
read only.</a></li>
</ul>
</li>
</p></li>
<li id="webmentions" class="question">Can I do this automatically, whenever
I post something new on my web site?</li>
<li class="answer">
<p>Definitely! Just send
a <a href="http://indiewebify.me/#send-webmentions">webmention</a>. Your server
may be sending them already! Webmentions are pretty new,
but <a href="http://indiewebcamp.com/webmention#Publishing_Software">more and
more web servers</a> are adding support for them. If you're not sure whether
your server can send them, feel free
to <a href="http://indiewebcamp.com/IRC">ask on #indiewebcamp</a>, or you can
even write a script to
<a href="http://indiewebcamp.com/webmention#How_to_Test_Webmentions">send them
yourself</a>. It's just a single HTTP request!
</p>
<p>Bridgy's webmention endpoint
is <code>https://brid.gy/publish/webmention</code>, and the target URL
should be <code>brid.gy/publish/facebook</code>,
<code>brid.gy/publish/instagram</code>,
<code>brid.gy/publish/twitter</code>, or
<code>brid.gy/publish/flickr</code>. Your post HTML must also include that same
target URL to verify your intent to publish. If your server sends webmentions,
just include any of these invisible links in your post to publish automatically!
<pre><a href="<a href='https://brid.gy/publish/facebook'>https://brid.gy/publish/facebook</a>"></a>
<a href="<a href='https://brid.gy/publish/instagram'>https://brid.gy/publish/instagram</a>"></a>
<a href="<a href='https://brid.gy/publish/twitter'>https://brid.gy/publish/twitter</a>"></a>
<a href="<a href='https://brid.gy/publish/flickr'>https://brid.gy/publish/flickr</a>"></a>
</pre>
</p>
</li>
<li id="reply" class="question">How do I reply to a tweet from my web site?</li>
<li class="answer">
<p>
Easy! Put the reply in a new post on your web site, and include a link to the
tweet you're replying to with class
<code><a href="http://microformats.org/wiki/rel-in-reply-to">
u-in-reply-to</a></code>, as if you were publishing a normal
<a href="http://indiewebcamp.com/comment">IndieWeb reply</a>. For example:
<pre><div class="<span class='keyword'>h-entry</span>">
<p class="<span class='keyword'>e-content</span>"><span class='value'>@schnarfed Highly entertaining. Please subscribe me to your newsletter.</span></p>
<a class="<span class='keyword'>u-in-reply-to</span>" href="<a href='https://twitter.com/schnarfed/status/448205453911015425'>https://twitter.com/schnarfed/status/448205453911015425</a>"></a>
<a href="<a href='https://brid.gy/publish/twitter'>https://brid.gy/publish/twitter</a>"></a>
</div>
</pre>
The <code>u-in-reply-to</code> and <code>brid.gy/publish/twitter</code> links
don't need any visible text unless you want them to. Then publish your post via
the Bridgy UI or a webmention like normal!
</p>
<p>
On the other hand, if your post is in reply to another IndieWeb post
that is <em>also</em> syndicated, Bridgy will
use <a href="http://indiewebcamp.com/rel-syndication">rel-syndication</a>
links in the other post to find the appropriate silo copy to reply to.
</p>
</li>
<li id="like" class="question">How do I like, retweet, or RSVP from my web
site?</li>
<li class="answer">
<p>
Liking, retweeting, and RSVPing are almost exactly the
<a href="#reply">same as replying</a>. The only difference is that you use
<code><a href="http://indiewebcamp.com/like">u-like-of</a></code>
for a like (or favorite),
<code><a href="http://indiewebcamp.com/repost">u-repost-of</a></code> for a
retweet,
or <code><a href="http://indiewebcamp.com/rsvp">p-rsvp</a></code> for an
RSVP.
<pre>
<a class="<span class='keyword'>u-like-of</span>" href="<a href='http://instagram.com/p/yoMSzRsqDZ/'>http://instagram.com/p/yoMSzRsqDZ/</a>"></a>
</pre>
<pre>
<a class="<span class='keyword'>u-repost-of</span>" href="<a href='https://twitter.com/schnarfed/status/448205453911015425'>https://twitter.com/schnarfed/status/448205453911015425</a>"></a>
</pre>
<pre>
<data class="<span class='keyword'>p-rsvp</span>" value="<span class='keyword'>yes</span>"><span class='value'>I'm in!</span></data>
<a class="<span class='keyword'>u-in-reply-to</span>" href="<a href='https://www.facebook.com/events/1409507205977978/'>https://www.facebook.com/events/1409507205977978/</a>"></a>
</pre>
</p>
<p>Here's an example screencast of RSVPing to a Facebook event:</p>
<p style="text-align: center">
<iframe src="//www.youtube.com/embed/otq0rcidmyI"
width="420" height="315" class="shadow" frameborder="0" allowfullscreen>
</iframe>
</p>
</li>
<li id="picture" class="question">How do I post a picture?</li>
<li class="answer">
<p>
Just add the picture to your post in an <code><img class="u-photo"></code>
tag. For example:
<pre>
<img class="<span class='keyword'>u-photo</span>" src="<span class='value'>/full_glass.jpg</span>" />
I love scotch. Scotchy scotchy scotch.
</pre>
</p>
</li>
<li id="facebook-publish" class="question">What happened to publishing Facebook
comments and likes?</li>
<li class="answer">
<p>
Bridgy Publish supported Facebook likes and comments for almost a
year, <a href="https://snarfed.org/2014-03-25_bridgy-publish">from its
launch</a> on March 24
2014 <a href="https://github.com/snarfed/bridgy/commit/0e44fe28c1df5026b2b237d2c094a0a0ed9c8c00">until
February 14 2015</a>.
<a href="https://developers.facebook.com/docs/apps/changelog#v2_0_graph_api">Facebook's
v2.x API</a>
<a href="https://developers.facebook.com/docs/apps/upgrading#upgrading_v2_0_graph_api">makes
it much harder</a> to map backward from a Facebook post's URL to its API object
id, and even when you can, the API usually won't let you read the post or like
or comment on it. You need
the <a href="https://developers.facebook.com/docs/facebook-login/permissions/v2.2#reference-read_stream"><code>read_stream</code>
permission</a>, which Facebook only gives out in very rare circumstances.</p>
<p><a href="https://github.com/snarfed/bridgy/issues/350">Lots more gory details
here.</a> <a href="https://snarfed.org/2015-02-14_13259">RIP Facebook liking and
commenting</a>, we'll miss you!</p>
<li id="omit-link" class="question">Can I disable the link back to my post?</li>
<li class="answer">
<p>Sure! By default, Bridgy includes a link back to your post. If you're using
the form on your user page, you can uncheck the <em>Include link</em> checkbox
to disable this. If you're sending a webmention, you can disable it by adding
the query parameter <code>bridgy_omit_link=true</code> to your webmention HTTP
request, or by adding the <code>u-bridgy-omit-link</code> class to a link in
your post.
</li>
<li id="ignore-formatting" class="question">Can I disable the plain text
whitespace and formatting?</li>
<li class="answer">
<p>Sure! By default, Bridgy tries to preserve your post's HTML formatting and
whitespace when publishing it as plain text. You can disable this by adding the
query parameter <code>bridgy_ignore_formatting=true</code> to your webmention
HTTP request, or by adding the <code>u-bridgy-ignore-formatting</code> class to
a link in your post.
</li>
<li id="silo-content" class="question">I want more control over the text
that gets posted.</li>
<li class="answer">
<p>Sure! You can give Bridgy the exact text that you want posted with
the <code>p-bridgy-[SILO]-content</code> class in your post. This will override
your post's actual content.
</p>
<p>Here's an example of publishing custom text for both Facebook and Twitter:
</p>
<pre><div class="<span class='keyword'>h-entry</span>">
<p class="e-content">This is a going to be a very long blog post. Pull up a chair, it's going to take a while. Ready? Here we go...</p>
<p class="<span class='keyword'>p-bridgy-facebook-content</span>"><span class='value'>You won't believe this one weird old blogging trick!</span></p>
<p class="<span class='keyword'>p-bridgy-twitter-content</span>"><span class='value'>Long form is the new short form.</span></p>
</div>
</pre>
<p>You can hide these extra elements with <code>display: none</code>, or add the classes to existing elements like your title or summary, or anything else you like.</p>
</li>
<li id="short-link" class="question">Can I include a short link instead of the full link?</li>
<li class="answer">
<p>Sure! Just enter the short link in the URL text box. Or if you're
<a href="#webmentions">using a webmention</a> instead of the web form, pass the
short link as the webmention's <code>source</code> parameter.
</li>
<li id="response" class="question">How does Bridgy respond to webmentions?</li>
<li class="answer">
<p>Bridgy handles webmentions synchronously, so it knows the result when it
responds. A <code>POST</code> to
<code>https://brid.gy/publish/webmention</code> will return
<code>201 Created</code> on success with a JSON response containing at least
a <code>url</code> field that points to the silo object that it operated on. The
same URL is included in the <code>Location</code> HTTP header. For
Twitter favorites and Facebook event RSVPs, this is the tweet, post, or event.
If a new object was created, e.g. a Facebook post or Twitter tweet, @-reply, or
retweet, there will also be an <code>id</code> field with the silo id of that
object.
</p>
<p>For example, this request for an original post:
</p>
<pre>POST <span class="keyword">source</span>=<span class="link">https://example.com/posts/123</span>
&<span class="keyword">target</span>=<a href="https://brid.gy/publish/facebook">https://brid.gy/publish/facebook</a></pre>
<p>will receive this response:
</p>
<pre>HTTP/1.1 201 Created
Content-Type: application/json
Location: http://facebook.com/456_789
{
"<span class='keyword'>url</span>": "<span class='value'>http://facebook.com/456_789</span>",
"<span class='keyword'>type</span>": "<span class='value'>post</span>",
"<span class='keyword'>id</span>": "<span class='value'>456_789</span>"
}</pre>
<p>Pro tip: Twitter responses that create new tweets actually return the entire
newly
created <a href="https://dev.twitter.com/docs/platform-objects/tweets">tweet
object</a>. The more you know!
</p>
</li>
<li id="error-response" class="question">How about error responses?</li>
<li class="answer">
<p><code>400 Bad Request</code> is the most common error response. Other status
codes may be returned when a Facebook or Twitter API call error is propagated
back to you. For example, Facebook often <code>500</code>s API requests.
</p>
<p>
Like successful responses, error response bodies are JSON. All error responses
will contain an <code>error</code> field with a human-readable error message.
Most will also contain a <code>data</code> field with the
parsed <a href="http://microformats.org/wiki/microformats2">microformats2</a>
data from your original post, which is often helpful for debugging.
</p>
<p>For example, a webmention for this source markup:
</p>
<pre><a class="<span class='keyword'>h-card</span>" href="<a href='https://snarfed.org/'>https://snarfed.org/</a>">Ryan Barrett</a>
</pre>
<p>will receive <code>400 Bad Request</code> with this response:
</p>
<pre>{
"<span class='keyword'>error</span>": "<span class='value'>Twitter doesn't support type(s) h-card.</span>",
"<span class='keyword'>data</span>": {"<span class='keyword'>items</span>": [{
"<span class='keyword'>type</span>": ["<span class='keyword'>h-card</span>"],
"<span class='keyword'>properties</span>": {
"<span class='keyword'>url</span>": ["<a href='https://snarfed.org/'>https://snarfed.org/</a>"],
"<span class='keyword'>content</span>": [{"<span class='keyword'>value</span>": "<span class='value'>Ryan Barrett</span>"}],
}
}]}
}</pre>
</li>
<li id="silos" class="question">Why only Facebook and Twitter? Why not Google+ or
Instagram?</li>
<li class="answer">
<p>Sadly, <a href="https://developers.google.com/+/api/">Google+'s API</a>
doesn't support posting or commenting, and
<a href="http://instagram.com/developer/endpoints/comments/#post_media_comments">Instagram's API</a>
allows liking, but requires
<a href="https://docs.google.com/spreadsheet/viewform?formkey=dFNydmNsUUlEUGdySWFWbGpQczdmWnc6MQ">manual approval</a>
for commenting. Shameless plug: check out
<a href="http://ownyourgram.com/">#OwnYourGram</a> for an Instagram alternative!
</p>
</li>
<li id="401" class="question">I'm getting a <em>401: Unauthorized</em> error
when I try to publish to Twitter.</li>
<li class="answer">
<p>Sorry for the trouble! Here are steps to fix this:
</p>
<ol>
<li>Open your
<a target="_blank" href="https://twitter.com/settings/applications">Twitter
apps</a> page and click on the <em>Revoke access</em> button next to
Bridgy.</li>
<li>On your Bridgy user page (<a target="_blank" href="/users">find it here</a>
if you don't have it bookmarked), click on the red <em>Disable</em> button
next to <em>Ready to publish.</em> Approve the prompt.</li>
<li>Now, reload your Bridgy user page and click on the Twitter button next
to <em>Click to enable publishing</em>. Approve the prompt.</li>
</ol>
<p>You should be able to publish now. Sorry for the trouble!</p>
</li>
<!-- Blog webmentions -->
<br />
<h3 id="blogs">Webmentions for blogs</h3>
<li class="question">What is this?</li>
<li class="answer">
<p><a href="http://indiewebify.me/#send-webmentions">Webmentions</a> are a core
part of both the <a href="http://indiewebcamp.com/">IndieWeb</a> and Bridgy
itself. The <a href="http://www.webmention.org/">webmention protocol</a> is
growing fast, but it's still pretty new, so many large hosted blog providers
don't yet support it. Bridgy lets you add webmention support (incoming and
outgoing) to three of the largest providers:
<a href="https://www.blogger.com/">Blogger</a>,
<a href="http://www.tumblr.com/">Tumblr</a>, and
<a href="http://wordpress.com/">WordPress.com</a>.
Read on for more details, or
<a href="/">head to the front page to sign up!</a></p>
</li>
<li id="outgoing" class="question">What outgoing webmentions does it send from
my blog?</li>
<li class="answer">
<p>When you publish a new post on your blog, Bridgy attempts to send a
webmention to each link in your post.</p>
</li>
<li id="incoming" class="question">What does it do with incoming webmentions
that my blog receives?</li>
<li class="answer">
<p>When Bridgy receives a webmention for a post on your blog, it runs some
validation on the source page, in particular checking that it links to your blog
post. Then, Bridgy reformats the source page and posts it as a comment on your
post.</p>
</li>
<li id="endpoint" class="question">Why do I have to add that line of HTML to
my blog?</li>
<li class="answer">
<p>When other web servers want to send your blog a webmention, they use that
HTML line to determine where to send it. This is the
<a href="https://github.com/converspace/webmention/blob/master/README.md#sender-discovers-receiver-endpoint">webmention
endpoint discovery</a> process.</p>
</li>
<li id="disqus" class="question">I'm on Tumblr. Why do I have to install
<a href="http://disqus.com/">Disqus</a>?</li>
<li class="answer">
<p>Bridgy posts incoming webmentions as comments on Blogger and WordPress.com,
but Tumblr doesn't have traditional comments. You can use your own Tumblr blog
to <a href="http://www.tumblr.com/docs/en/blog_management#social">reply</a> to
or <a href="http://www.tumblr.com/tips#reblog">reblog</a> someone else's post,
but neither of those is quite right for a webmention, since the original is