├── authorship-rocks.sketch ├── public ├── images │ ├── basho.jpg │ ├── homer.jpg │ └── virginia-woolf.jpg ├── assets │ ├── authorship-rocks.png │ ├── style.css │ └── test.css ├── test │ ├── 1 │ │ └── index.html │ ├── 2 │ │ └── index.html │ ├── 3 │ │ ├── about-patanjali │ │ │ └── index.html │ │ └── index.html │ ├── 4 │ │ ├── about-virginia-woolf │ │ │ └── index.html │ │ └── index.html │ └── 5 │ │ ├── about-basho │ │ └── index.html │ │ └── index.html └── index.html └── README.md /authorship-rocks.sketch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/indieweb/authorship.rocks/master/authorship-rocks.sketch -------------------------------------------------------------------------------- /public/images/basho.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/indieweb/authorship.rocks/master/public/images/basho.jpg -------------------------------------------------------------------------------- /public/images/homer.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/indieweb/authorship.rocks/master/public/images/homer.jpg -------------------------------------------------------------------------------- /public/images/virginia-woolf.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/indieweb/authorship.rocks/master/public/images/virginia-woolf.jpg -------------------------------------------------------------------------------- /public/assets/authorship-rocks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/indieweb/authorship.rocks/master/public/assets/authorship-rocks.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Authorship Rocks! 2 | ================= 3 | 4 | [Authorship Rocks](https://authorship.rocks/)! is a validator to help you test your [Authorship Discovery](https://indieweb.org/authorship-spec) implementation. Several tests are available on the site. 5 | -------------------------------------------------------------------------------- /public/test/5/about-basho/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Authorship discovery test 5 9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 |
17 |

18 | This page is about Basho, for more information see 19 | Wikiquote. 20 |

21 |
22 |
23 | 24 |
25 |
26 |
27 | 33 |
34 |
35 |
36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /public/test/3/about-patanjali/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Authorship discovery test 3 9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 |
17 |

18 | This page is here to fool your parsers. For actual information about Patañjali, see 19 | Wikiquote. 20 |

21 |
22 |
23 | 24 |
25 |
26 |
27 |
28 | Patañjali 29 | (your algorithm fetched the author page! 30 | Try to solve it without fetching to remove this message.) 31 |
32 |
33 |
34 |
35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /public/assets/style.css: -------------------------------------------------------------------------------- 1 | 2 | body { 3 | background: #cee0f0; 4 | font-size: 16px; 5 | } 6 | 7 | body.logged-in { 8 | padding-top: 60px; 9 | } 10 | 11 | .ui.top.menu .item img { 12 | border-radius: 4px; 13 | } 14 | 15 | .small { 16 | font-size: 14px; 17 | } 18 | 19 | #header-graphic { 20 | max-width: 600px; 21 | margin-top: -60px; 22 | margin-bottom: -80px; 23 | z-index: -1000; 24 | position: relative; 25 | } 26 | #header-graphic img { 27 | max-width: 600px; 28 | width: 100%; 29 | } 30 | 31 | .single-column { 32 | margin: 0 auto; 33 | max-width: 600px; 34 | } 35 | 36 | section.content { 37 | padding: 10px; 38 | border-radius: 4px; 39 | border: 1px #abcce9 solid; 40 | background: #fff; 41 | margin-bottom: 12px; 42 | } 43 | 44 | section.content h4 { 45 | margin: 0; 46 | margin-top: 1em; 47 | } 48 | 49 | @media(max-width: 616px) { 50 | section.content { 51 | margin-left: 8px; 52 | margin-right: 8px; 53 | } 54 | } 55 | 56 | section.content textarea { 57 | border: 1px #abcce9 solid; 58 | border-radius: 4px; 59 | padding: 7px; 60 | -webkit-box-shadow: inset 0px 0px 6px 2px #e0edf9; 61 | -moz-box-shadow: inset 0px 0px 6px 2px #e0edf9; 62 | box-shadow: inset 0px 0px 6px 2px #e0edf9; 63 | } 64 | 65 | -------------------------------------------------------------------------------- /public/test/4/about-virginia-woolf/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Authorship discovery test 4 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 |

20 | This page is about Virginia Woolf, for more information see 21 | Wikiquote. 22 |

23 |
24 |
25 | 26 |
27 |
28 | 36 |
37 |
38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /public/test/1/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Authorship discovery test 1 9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 |
17 |

18 | The name of the author of this entry is William Shakespeare. 19 | There is no extra information available about him on this page, just his name is the correct answer. 20 |

21 | 22 |

23 | This page shows an h-entry, with a p-author 24 | property containing just text. 25 |

26 |
27 |
28 | 29 |
30 |
31 |
32 |
William Shakespeare
33 |
34 |
35 |

To be, or not to be: that is the question.

36 |
37 |
38 |
39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /public/test/2/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Authorship discovery test 2 9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 |
17 |

18 | The name of the author of this entry is Homer. His URL is https://en.wikiquote.org/wiki/Homer, 19 | he uses https://authorship.rocks/images/homer.jpg 20 | as his photo. 21 |

22 | 23 |

24 | This page shows an h-entry with an embedded h-card 25 | as it's p-author property. 26 |

27 |
28 |
29 | 30 |
31 |
32 |
33 | 39 |
40 |
41 |

42 | Even in the house of Hades there is left something, 43 | a soul and an image, but there is no real heart of life in it. 44 |

45 |
46 |
47 |
48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /public/test/5/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Authorship discovery test 5 9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 |
17 |

18 | This is a haiku by Basho. 19 | His URL is https://authorship.rocks/test/5/about-basho, 20 | and his photo is at 21 | https://authorship.rocks/images/basho.jpg, 22 |

23 | 24 |

25 | This page shows an h-entry without author information. At the bottom of the page, 26 | there is a link with rel="author". That page contains an h-card, 27 | where the u-url and u-uid pointing to itself. 28 | You will need to fetch this second page to solve this test. 29 |

30 |
31 |
32 | 33 |
34 |
35 |
36 | 37 |
38 |
39 |

40 | 古池や
41 | 蛙飛び込む
42 | 水の音 43 |

44 |
45 |
46 | 47 | 50 |
51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /public/test/4/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Authorship discovery test 4 9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 |
17 |

18 | This next entry is by Virginia Woolf. 19 | Her URL is https://authorship.rocks/test/4/about-virginia-woolf, 20 | and her photo is at 21 | https://authorship.rocks/images/virginia-woolf.jpg, 22 |

23 | 24 |

25 | This page shows an h-entry without author information. At the bottom of the page, 26 | there is a link with rel="author". That page contains an h-card, 27 | with a rel="me" pointing to itself. You will need to fetch this second page 28 | to solve this test. 29 |

30 |
31 |
32 | 33 |
34 |
35 |
36 | 37 |
38 |
39 |

40 | A woman must have money and a room of her own if she is to write fiction. 41 |

42 |
43 |
44 | 45 | 48 |
49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /public/test/3/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Authorship discovery test 3 9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 |
17 |

18 | This is an entry by Patañjali. 19 | His URL is https://authorship.rocks/test/3/about-patanjali, 20 | and he uses no photo. 21 |

22 | 23 |

24 | This page shows both an h-card as well as an h-entry. In the bottom, 25 | there is a link with rel="author", which points to the u-url 26 | of the h-card. You can solve this without fetching extra pages. 27 |

28 |
29 |
30 | 31 |
32 |
33 |
34 | 39 |
40 |
41 |

42 | For one who sees the distinction, there is no further confusing of the mind with the self. 43 |

44 |
45 |
46 | 47 | 50 |
51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Authorship Rocks! 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 |
24 | 25 |
26 |

About this site

27 |

Authorship Rocks! is a validator to help you test your Authorship Discovery implementation.

28 |
29 | 30 |
31 |

This code is open source. Feel free to file an issue if you notice any errors.

32 |
33 | 34 |
35 |

Authorship Discovery

36 | 37 |

38 | The test posts below advertise their authors in a variety of ways, 39 | to help you test your Authorship Discovery 40 | implementation. 41 |

42 |

43 | You can point your discovery algorithm at each of the posts, and try to 44 | discover the author that is indicated on the page. 45 |

46 | 47 | 74 | 75 |

76 | If you want a quick bit of text to copy+paste into a script, you can use 77 | the JSON below, which link to all the tests and have the answers associated with them. 78 |

79 | 80 |

JSON

81 | 108 |
109 | 110 |
111 |

This code is open source. Feel free to file an issue if you notice any errors.

112 |
113 | 114 |
115 | 116 | 117 | 118 | -------------------------------------------------------------------------------- /public/assets/test.css: -------------------------------------------------------------------------------- 1 | .post-container { 2 | max-width: 600px; 3 | margin: 20px auto; 4 | 5 | font-size: 14pt; 6 | line-height: 17pt; 7 | } 8 | @media(max-width: 616px) { 9 | .post-container { 10 | margin-left: 8px; 11 | margin-right: 8px; 12 | } 13 | } 14 | .post-container .post-main { 15 | display: flex; 16 | flex-direction: row; 17 | 18 | border-radius: .28571429rem; 19 | border: 1px #abcce9 solid; 20 | 21 | background: #fff; 22 | padding: 12px; 23 | } 24 | .post-container .post-main .meta { 25 | font-size: 10pt; 26 | } 27 | .post-container .post-main .meta a { 28 | color: #777; 29 | } 30 | .post-container .post-main .meta a:hover { 31 | color: #999; 32 | } 33 | 34 | @media(max-width: 400px) { 35 | .post-container .post-main { 36 | display: block; 37 | } 38 | .post-container .left { 39 | float: left; 40 | } 41 | } 42 | 43 | .post-container .post-main.has-responses { 44 | border-bottom-right-radius: 0; 45 | border-bottom-left-radius: 0; 46 | border-bottom: 0; 47 | } 48 | 49 | .post-container .post-responses { 50 | background: #f2f7fc; 51 | border-bottom-right-radius: 8px; 52 | border-bottom-left-radius: 8px; 53 | border: 1px #abcce9 solid; 54 | border-top: 0; 55 | } 56 | 57 | .post-container .left { 58 | flex: 0 auto; /* this needs to be "0 auto" for Safari, but works as "0" for everything else */ 59 | padding-right: 12px; 60 | } 61 | .post-container .right { 62 | flex: 1; 63 | } 64 | .post-container img { 65 | background: white; 66 | border: 1px #abcce9 solid; 67 | border-radius: .28571429rem; 68 | } 69 | 70 | 71 | 72 | /* name of the test */ 73 | .post-container h1 { 74 | margin: 0; 75 | font-size: 16pt; 76 | font-weight: bold; 77 | } 78 | /* name if a comment has the name, or if the comment text includes h tags */ 79 | .post-container .post-responses h1, 80 | .post-container .post-responses h2, 81 | .post-container .post-responses h3 { 82 | font-size: 15pt; 83 | font-weight: bold; 84 | } 85 | .post-container .post-responses h4, 86 | .post-container .post-responses h5, 87 | .post-container .post-responses h6 { 88 | font-size: 13pt; 89 | font-weight: bold; 90 | } 91 | 92 | 93 | 94 | /* facepile */ 95 | 96 | .post-container .post-responses ul.facepile { 97 | margin: 0; 98 | padding: 0; 99 | padding-top: 6px; 100 | list-style-type: none; 101 | } 102 | 103 | .post-responses ul.facepile > li { 104 | float: left; 105 | } 106 | 107 | .post-responses .facepile-type-icon { 108 | font-size: 2em; 109 | padding-top: 16px; 110 | padding-left: 4px; 111 | float: left; 112 | } 113 | 114 | /* reacji */ 115 | 116 | .post-responses .responses-row.reacji { 117 | margin-bottom: 8px; 118 | } 119 | 120 | .post-responses ul.reacji { 121 | margin: 0; 122 | padding: 0; 123 | padding-top: 6px; 124 | margin-left: 12px; 125 | list-style-type: none; 126 | } 127 | .post-responses ul.reacji li { 128 | display: flex; 129 | flex-direction: row; 130 | align-items: center; 131 | border: 1px #abcce9 solid; 132 | border-radius: 4px; 133 | padding: 0 2px; 134 | margin-right: 6px; 135 | float: left; 136 | } 137 | .post-responses ul.reacji li .emojichar { 138 | flex: 0; 139 | font-size: 2em; 140 | line-height: 1.2em; 141 | cursor: pointer; 142 | } 143 | .post-responses ul.reacji li .count { 144 | flex: 0; 145 | font-size: 0.8em; 146 | color: #666; 147 | margin-left: 6px; 148 | margin-right: 4px; 149 | } 150 | .post-responses ul.reacji-links { 151 | margin: 0; 152 | padding: 0; 153 | max-width: 300px; 154 | overflow: scroll; 155 | } 156 | .post-responses ul.reacji-links li { 157 | border: 0; 158 | } 159 | 160 | /* comments */ 161 | 162 | .post-container .responses-row { 163 | border-top: 1px #abcce9 solid; 164 | } 165 | 166 | .post-responses .responses-row.empty { 167 | display: none; 168 | } 169 | 170 | .post-responses .responses-row .help-text { 171 | font-size: 0.7em; 172 | color: #666; 173 | } 174 | 175 | .post-responses .responses-row .help-text code { 176 | word-wrap: nowrap; 177 | } 178 | 179 | .post-container .post-responses ul.comments { 180 | margin: 0; 181 | padding: 0; 182 | list-style-type: none; 183 | } 184 | .post-responses ul.comments > li { 185 | padding: 0; 186 | margin: 0; 187 | padding-top: 6px; 188 | padding-right: 12px; 189 | border-top: 1px #abcce9 solid; 190 | } 191 | .post-responses ul.comments > li .comment { 192 | margin-left: 66px; 193 | margin-bottom: 6px; 194 | } 195 | .post-responses ul.comments > li .comment .author img { 196 | margin-left: -54px; 197 | float: left; 198 | } 199 | .post-responses ul.comments > li .comment .author { 200 | font-size: 0.8em; 201 | margin-bottom: 6px; 202 | } 203 | .post-responses ul.comments > li .comment .author-url { 204 | color: #888; 205 | font-weight: normal; 206 | } 207 | .post-responses ul.comments > li .comment .plaintext { 208 | white-space: pre-line; 209 | } 210 | .post-responses ul.comments > li .comment .comment-content .missing { 211 | color: #888; 212 | } 213 | .post-responses ul.comments > li .comment .meta { 214 | color: #777; 215 | margin-top: 8px; 216 | font-size: 0.65em; 217 | line-height: 1.1em; 218 | } 219 | .post-responses ul.comments > li .comment .meta a { 220 | color: #777; 221 | } 222 | .post-responses ul.comments > li .comment .meta a:hover, .post-responses ul.comments > li .comment .author a:hover { 223 | text-decoration: underline; 224 | } 225 | .post-responses ul.comments > li .comment blockquote { 226 | border-left: 4px #bbb solid; 227 | margin-left: 0; 228 | padding-left: 12px; 229 | } 230 | .post-responses ul.comments > li .comment .comment-content img { 231 | max-width: 100%; 232 | } 233 | 234 | .post-footer { 235 | padding-top: 20px; 236 | font-size: 0.7em; 237 | color: #777; 238 | text-align: center; 239 | } 240 | 241 | .progress-checkmarks .label { 242 | display: inline-block; 243 | } 244 | 245 | .progress-checkmarks .checkmark { 246 | border: 1px #ffd65c solid; 247 | border-radius: 2px; 248 | text-align: center; 249 | width: 20px; 250 | height: 20px; 251 | display: inline-block; 252 | margin-right: 0.8em; 253 | vertical-align: bottom; 254 | font-family: Checkbox; 255 | font-size: 17px; 256 | } 257 | .progress-checkmarks .checkmark.checked:after { 258 | content: '\e800'; 259 | position: relative; 260 | bottom: 1px; 261 | } 262 | 263 | 264 | 265 | .test-runner { 266 | border-radius: .28571429rem; 267 | border: 1px #abcce9 solid; 268 | 269 | background: #f9f9f9; 270 | padding: 12px; 271 | } 272 | 273 | .test-runner ul { 274 | padding: 0; 275 | margin: 0; 276 | padding-left: 1em; 277 | } 278 | 279 | .test-runner pre { 280 | font-size: 12px; 281 | margin-top: 2px; 282 | border-radius: .28571429rem; 283 | border: 1px #C7DFF5 solid; 284 | background: #fff; 285 | padding: 4px; 286 | } 287 | 288 | .test-runner .hidden { 289 | display: none; 290 | } 291 | 292 | #progress .error .header { 293 | font-weight: bold; 294 | color: #CA0E0E; 295 | } 296 | 297 | #progress .success .header { 298 | font-weight: bold; 299 | color: #17B108; 300 | } 301 | 302 | #progress li.head { 303 | list-style-type: none; 304 | } 305 | #progress li.head span { 306 | font-weight: bold; 307 | } 308 | #progress li.head a { 309 | font-size: 0.8em; 310 | } 311 | 312 | #progress li .block { 313 | display: block; 314 | } 315 | 316 | #progress .results .circular.label { 317 | font-size: 0.6em; 318 | } 319 | #progress li { 320 | margin-bottom: 8px; 321 | } 322 | 323 | /* ======= */ 324 | .explanation { 325 | margin-top: 30px; 326 | } 327 | 328 | .answer { 329 | background: #e0f0ce; 330 | padding: 0 .2em; 331 | border-radius: .2em; 332 | } 333 | 334 | .footer-text { 335 | font-size: .8em; 336 | margin-top: .5em; 337 | margin-right: .5em; 338 | text-align: right; 339 | } 340 | --------------------------------------------------------------------------------