code: func (mod *HTMLExtractBee) Action(action bees.Action) []bees.Placeholder {
  	outs := []bees.Placeholder{}
  
  	switch action.Name {
  	case "extract":
  		var url string
  		action.Options.Bind("url", &url)
  		if start := strings.Index(url, "http"); start >= 0 {
  			url = url[start:]
  			if end := strings.Index(url, " "); end >= 0 {
  				url = url[:end]
  			}
  		}
  
  		g := goose.New()
  		article, _ := g.ExtractFromURL(url)
  		article.Title = strings.TrimSpace(strings.Replace(article.TitleUnmodified, "\n", " ", -1))
  		if strings.HasPrefix(article.TopImage, "http://data:image") {
  			article.TopImage = ""
  		}
  		if len(article.Title) > 0 {
  			ev := bees.Event{
  				Bee:  mod.Name(),
  				Name: "info_extracted",
  				Options: []bees.Placeholder{
  					{
  						Name:  "title",
  						Type:  "string",
  						Value: article.Title,
  					},
  					{
  						Name:  "domain",
  						Type:  "string",
  						Value: article.Domain,
  					},
  					{
  						Name:  "top_image",
  						Type:  "url",
  						Value: article.TopImage,
  					},
  					{
  						Name:  "final_url",
  						Type:  "url",
  						Value: article.FinalURL,
  					},
  					{
  						Name:  "meta_description",
  						Type:  "string",
  						Value: article.MetaDescription,
  					},
  					{
  						Name:  "meta_keywords",
  						Type:  "string",
  						Value: article.MetaKeywords,
  					},
  				},
  			}
  			mod.evchan <- ev
  		}
  
  	default:
  		panic("Unknown action triggered in " + mod.Name() + ": " + action.Name)
  	}
  
  	return outs
  }
docs: // Action triggers the action passed to it.